Ponte LXC com vários endereços IP

2

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:

Host: arquivo de interfaces

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 é?

Container: arquivo de interfaces

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

LXC: configuração de rede

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!

    
por user2092982 23.02.2016 / 22:44

0 respostas