LINUX.ORG.RU
решено ФорумAdmin

LXC. Выделение IP гостю с того же диапазона, что и IP хост-машины.

 , ,


0

3

Привет всем.

Немного изучаю LXC. Все базовое достаточно просто, но я вот не могу понять с бриджингом интерфейса.

Хост имеет айпи - 192.168.1.50 (192.168.1.50). Эту сеть обслуживает роутер с айпи 192.168.1.1. Гостю также хочу выделить айпи с этой же сети - 192.168.1.51.

Настраиваю бридж:

root@lxc-host:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.1.50
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

br0 отлично работает, все хорошо.

Указываю использовать этот бридж-интерфейс контейнеру u1:

root@lxc-host:~# cat /var/lib/lxc/u1/config
# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template:
# For additional config options, please look at lxc.container.conf(5)

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86_64

# Container specific configuration
lxc.rootfs = /var/lib/lxc/u1/rootfs
lxc.utsname = u1

# Network configuration
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:a1:c2:fe
lxc.network.ipv4 = 192.168.1.51/24

# define a gateway to have access to the internet
lxc.network.ipv4.gateway = 192.168.1.1

Конфигурация сети контейнера (хотя как я понимаю это все можно указывать только в /var/lib/lxc/u1/config):

root@lxc-host:~# cat /var/lib/lxc/u1/rootfs/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.51
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
root@lxc-host:~#

В конечном итоге в контейнер ставится верный айпи и верный роут:

root@u1:~# ip a
1: lo...
5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:a1:c2:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.51/24 brd 192.168.1.255 scope global eth0
...
root@u1:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
root@u1:~#

192.168.1.51 и 192.168.1.50 успешно пингуют друг друга, но гость так и не может попингать роутер либо какой-то другой хост в сети и соответсвенно без доступа в интернет.

Аппармор и айпитейблз стопнуты.

Или LXC не умеет назначать контейнерам такой айпи?

Этот же топик на стековерфлоу http://stackoverflow.com/questions/33597327/lxc-containers-ip-from-the-same-n...

Спасибо.

ПС. Хост и гости - Ubuntu.

ППС. Хост - это виртуалка в Virtualbox, c bridged адаптером.

★★★★★

если адрес контейнера задан в конфигурации lxc, то в самом контейнере делать уже ничего не нужно.

vel ★★★★★ ()
Ответ на: комментарий от ipeacocks

Установил все на реальное железо - все заработало.

ipeacocks ★★★★★ ()
20 октября 2017 г.

Если вы запускаете свою установку Ubuntu в качестве виртуальной машины, вам придется изменить параметр виртуального сетевого адаптера виртуальной машины, чтобы гости контейнера могли общаться в сети. В Hyper-V вам необходимо включить спуфинг MAC-адресов. В VMWare или VirtualBox вам необходимо включить режим promiscuous.

Bespal0ff ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.