Ao tentar configurar um pequeno servidor com contêineres do LXC, encontrei um problema:
Eu quero atribuir 4 endereços IP diferentes: 1 endereço para o host e 3 endereços em uma rede diferente para os contêineres.
Configurar 4 endereços IP usando interfaces virtuais (eth0: 1, eth0: 2, etc) não é problema - mas o LXC não funciona com essas interfaces virtuais.
O endereço IP do host é 2.2.2.2 (máscara de rede 255.255.252.0). Os 3 endereços IP do contêiner são 33.33.33.33, 33.33.33.44 e 33.33.33.55. Máscara de rede para todos eles: 255.255.255.255.
Estou com dificuldades ao configurar a rede para hosts e contêineres. Outras postagens explicam configurações semelhantes, com sub-redes diferentes, mas controláveis ( ponte de contêineres LXC para hospedar redes com diferentes intervalos de IP ou sugerir o uso de interfaces virtuais ( Vários endereços IP dentro da mesma sub-rede no mesmo host ) que não podemos fazer aqui.
Esta é minha configuração:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 2.2.2.2
netmask 255.255.252.0
broadcast 2.2.2.255
gateway 2.2.2.1
bridge_ports eth0
bridge_fd 0
bridge_maxwait 0
auto br0:1
iface br0:1 inet static
address 33.33.33.33
netmask 255.255.255.255
auto br0:2
iface br0:2 inet static
address 33.33.33.44
netmask 255.255.255.255
auto br0:3
iface br0:3 inet static
address 33.33.33.55
netmask 255.255.255.255
Esta é a única maneira que conheço de vincular vários endereços IP a uma interface. A bridge precisa ouvir os endereços IP do container para recuperar os pacotes, não é?
Arquivo pequeno, já que todos os parâmetros são mantidos na configuração do LXC.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
Esta é a parte da rede do meu arquivo de configuração do LXC:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.ipv4 = 33.33.33.33/32
lxc.network.ipv4.gateway = 2.2.2.2
No entanto, a conexão simplesmente não funciona. Um endereço é atribuído ao contêiner, mas os pacotes IP enviados do contêiner não alcançam o host.
Aqui está a saída de ip
e route
:
root@container:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 2.2.2.2 0.0.0.0 UG 0 0 0 eth0
2.2.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
root@container:~# ip
1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue state UNKNOWN group
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
inet 127.0.0.1/8 scope host
valid_lft forever preferred_lft
inet6 ::1/128 scope
valid_lft forever preferred_lft
15: eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state UP
group default qlen 1000
link/ether ae:af:7c:e4:b5:4d brd ff:ff:ff:ff:ff:
inet 33.33.33.33/32 brd 255.255.255.255 scope global
valid_lft forever preferred_lft
inet6 fe80::acaf:7cff:fee4:b54d/64 scope
valid_lft forever preferred_lft forever
E os mesmos detalhes fornecidos pelo host:
root@host:~# route -n
Routing Table
Destination Router Genmask Flags Metric Ref Use Iface
2.2.2.0 0.0.0.0 255.255.252.0 U 0 0 0 br0
0.0.0.0 2.2.2.1 0.0.0.0 UG 0 0 0 br0
root@host:~# ip
1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue state UNKNOWN group
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
inet 127.0.0.1/8 scope host
valid_lft forever preferred_lft
inet6 ::1/128 scope
valid_lft forever preferred_lft
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast master br0
state UP group default qlen 1000
link/ether 2e:cf:22:12:dd:e2 brd ff:ff:ff:ff:ff:
16: veth93SMLW: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state
UP group default qlen 1000
link/ether dd:c1:1e:68:90:47 brd ff:ff:ff:ff:ff:
inet6 fe80::fcc1:1eff:fe68:9047/64 scope
valid_lft forever preferred_lft
17: br0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc noqueue state UP group
default
link/ether 4d:cf:22:12:dd:e2 brd ff:ff:ff:ff:ff:
inet 2.2.2.2/22 brd 1.1.1.255 scope global
valid_lft forever preferred_lft
inet 33.33.33.33/32 brd 2.2.2.2 scope global br0:
valid_lft forever preferred_lft
inet 33.33.33.44/32 brd 3.3.3.3 scope global br0:
valid_lft forever preferred_lft
inet 33.33.33.55/32 brd 4.4.4.4 scope global br0:
valid_lft forever preferred_lft
inet6 fe80::829:caff:fece:bbd7/64 scope
valid_lft forever preferred_lft forever
Você tem dicas de qual parte da configuração eu estraguei?
Obrigado pela sua ajuda!
Tags networking lxc bridge containers