Dois contêineres LXC usando duas interfaces de rede físicas diferentes

2

Eu tenho uma máquina rodando o Ubuntu 16.04 com dois contêineres LXC em cima de ubuntu_lxc e ubuntu_lxc1 . A máquina possui duas interfaces de rede físicas. Gostaria de vincular explicitamente cada interface a cada contêiner e separar completamente o tráfego de rede entre os dois contêineres com a finalidade de executar dois serviços diferentes, cada um em um dos contêineres.

As duas interfaces físicas devem ter DHCP, PPPoE ou endereços IP estáticos que eu configurarei de acordo em / etc / network / interfaces.

Estou usando este guia link para criar os contêineres e a ponte.

Estes são detalhes de bridging (na máquina host): cat /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

### bridge name ###

auto br0
auto br1

### bridge information ###

#br0
iface br0 inet dhcp

bridge_ports enp2s0
bridge_stp off
bridge_fd 9

# br1
iface br1 inet dhcp

bridge_ports enp1s0
bridge_stp off
bridge_fd 9

# The primary network interface
auto enp2s0
iface enp2s0 inet dhcp

# second network interface
auto enp1s0
iface enp1s0 inet dhcp

Neste caso, estou usando o DHCP para ambas as interfaces.

Estas são as interfaces que tenho (na máquina host): ifconfig

br0       Link encap:Ethernet  HWaddr 00:e0:81:bb:cc:71  
          inet addr:192.168.0.102  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:81ff:febb:cc71/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1994 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:386641 (386.6 KB)  TX bytes:2004 (2.0 KB)

br1       Link encap:Ethernet  HWaddr 00:e0:81:bb:cc:70  
          inet addr:10.0.1.2  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:81ff:febb:cc70/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23506 (23.5 KB)  TX bytes:1332 (1.3 KB)

enp1s0    Link encap:Ethernet  HWaddr 00:e0:81:bb:cc:70  
          inet addr:10.0.1.2  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2092 errors:0 dropped:0 overruns:0 frame:0
          TX packets:218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:601774 (601.7 KB)  TX bytes:39572 (39.5 KB)
          Interrupt:16 Memory:fdee0000-fdf00000 

enp2s0    Link encap:Ethernet  HWaddr 00:e0:81:bb:cc:71  
          inet addr:192.168.0.102  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:164151 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:226362607 (226.3 MB)  TX bytes:1829585 (1.8 MB)
          Interrupt:17 Memory:fdfe0000-fe000000 

Observando os endereços IP atribuídos dinamicamente, suspeito que br0 tenha sido bridged com sucesso para enp2s0 e br1 para enp1s0 .

Esta é a configuração de contêineres na máquina host: cat /etc/lxc/default.conf

lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx



lxc.network.type = veth
lxc.network.link = br1
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

Eu também suspeito que essa configuração associa o primeiro container a br0 e o segundo container a br1 .

Eu posso pingar para a internet de ambos os contêineres. Mas parece que não consigo verificar se o tráfego está isolado ou não.

ifconfig de ubuntu_lxc (primeiro container):

eth0      Link encap:Ethernet  HWaddr 00:16:3e:77:2b:9c  
          inet addr:192.168.0.103  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe77:2b9c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3978 (3.9 KB)  TX bytes:1332 (1.3 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ifconfig de ubuntu_lxc1 (segundo container):

eth0      Link encap:Ethernet  HWaddr 00:16:3e:f4:b8:f9  
          inet addr:192.168.0.106  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fef4:b8f9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:69 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14203 (14.2 KB)  TX bytes:1332 (1.3 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

A pergunta é: Por que o container ubuntu_lxc1 tem um endereço IP diferente de br1 na máquina host (que deveria estar associada a este container)?

Como associo uma interface física apenas a um contêiner específico?

E como posso verificar se o tráfego está isolado?

    
por Rafik 02.02.2017 / 04:50

0 respostas