Ponte LXC com duas NICs

5

Estou configurando um servidor para hospedar vários contêineres do LXC, por enquanto apenas isolando os serviços da Web e do banco de dados. O servidor que estou usando tem dois NICs e gostaria de usar um para o tráfego de host e outro para o tráfego de contêiner (pois ambos os contêineres têm IPs roteáveis) para que eu possa rotear o tráfego por meio de duas vlans diferentes no meu switch.

Antes de mergulhar em tudo isso, estou tentando descobrir se minha maneira de pensar sobre como fazer isso está correta. A maneira que eu entendo é que eu criaria um dispositivo de ponte nas interfaces de meus hosts, digamos br0 , que inclui bridge_ports eth1 . Tanto quanto eu sei que esta ponte não deve exigir qualquer tipo de IP (mas eu não tenho certeza ...)

Nos contêineres, eu mudaria as interfaces de rede para pontes macvlan vinculadas a br0 com IPs estáticos.

Isso está remotamente certo? Eu realmente não trabalhei com o roteamento de rede de contêiner antes ... (também aqui está uma boa ilustração do que eu acho que estou fazendo)

         +----------------+                      
         |                |                      
         | managed switch |                      
         |                |                      
         +-+----------+---+                      
           |          |                          
     +-----+          +-------+                  
     |                        |                  
 +---+----+                +--+-----+            
 |        |                |        |            
 | vlan 1 |                | vlan 2 |            
 |        |                |        |            
 +--+-----+                +--+-----+            
    |                         |                  
    | eth0                    +-------------+    
    |          eth1           |             |    
    |     +-------------------+             |    
    |     |                                 |    
+---+-----++            +---------------+   |    
|          |   lxc      |               |   |    
| lxc host +------+-----+ web container +---+ br0
|          |      |     |               |   |    
+----------+      |     +---------------+   |    
                  |                         |    
                  |     +--------------+    |    
                  |     |              |    |    
                  +-----+ db container +----+    
                        |              |         
                        +--------------+         
    
por rolands 28.06.2014 / 11:29

1 resposta

1

Você pode usar uma ponte ou um macvlan, mas não precisa dos dois. Desde que você parece saber sobre macvlans, vou delinear uma abordagem macvlan.

Você só precisa criar placas de rede virtuais (VLANs) em seu contêiner da Web e vinculá-las à NIC dedicada a hospedar o tráfego de contêineres.

As placas de rede virtual são expostas da mesma forma que as NICs do contêiner e recebem DHCP ou você pode usar IPs estáticos.

Abaixo estão as principais instruções, mas etapas detalhadas e em segundo plano vêm deste artigo da Bonsai Framework .

  

Crie um macvlan permanente no host

     

Adicione à parte inferior do arquivo /etc/network/interfaces do host,

# Creates a macvlan interface called macvlan0 without an IP address  
iface mvlan0 inet manual  
   pre-up ip link add mvlan0 link eth0 address 8a:38:2a:cc:d7:aa type macvlan mode bridge  
   post-down ip link del macvlan0  
auto mvlan0  

Reinicialize seu sistema para que a alteração tenha efeito. Você notará um mvlan0 agora ao visualizar seus dispositivos de rede com ifconfig -a .

Conecte o Container a macvlan no Host, modificando o arquivo de configuração localizado em /var/lib/lxc/[container]/config .

  

As entradas para adicionar à sua nova placa de rede,

# macvlan for external IP  
lxc.network.type = macvlan   
lxc.network.macvlan.mode = bridge  
lxc.network.flags = up  
lxc.network.link = mvlan0  
lxc.network.hwaddr = 00:16:3e:8d:4f:51  
lxc.network.name = eth0  

Para o hwaddr, gere um único endereço MAC unicast administrado localmente por meio de um site gratuito como helion.org .

Por fim, ajuste o arquivo de interfaces dentro do contêiner para vincular via estática ou se preferir usar dinâmico.

No meu caso, eu ajustei meu roteador doméstico para que 192.168.0.1 a 192.168.0.20 não sejam designados dinamicamente e usem estáticos em meu LXC.

Portanto, modifico o arquivo de interfaces de contêineres da seguinte forma,

auto eth0  
iface eth0 inet static  
address 192.168.0.12  
gateway 192.168.0.1  
netmask 255.255.255.0  

auto eth1  
iface eth1 inet dhcp  

Reinicie seu contêiner de Linux.

    
por phamti 08.03.2017 / 04:38