두 개의 서로 다른 물리적 네트워크 인터페이스를 사용하는 두 개의 LXC 컨테이너

두 개의 서로 다른 물리적 네트워크 인터페이스를 사용하는 두 개의 LXC 컨테이너

ubuntu_lxc두 개의 LXC 컨테이너가 있는 Ubuntu 16.04를 실행하는 컴퓨터가 있습니다 ubuntu_lxc1. 이 컴퓨터에는 두 개의 물리적 네트워크 인터페이스가 있습니다. 각 인터페이스를 각 컨테이너에 명시적으로 연결하고 두 컨테이너 간의 네트워크 트래픽을 완전히 분리하여 각각 하나의 컨테이너에서 서로 다른 두 서비스를 실행할 수 있도록 하고 싶습니다.

두 개의 물리적 인터페이스에는 DHCP, PPPoE 또는 고정 IP 주소가 있어야 하며 이에 따라 /etc/network/interfaces에서 구성하겠습니다.

나는 이 가이드를 사용하고 있다http://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/setup-linux-container-with-lxc-on-ubuntu-16-04-14-04.html 컨테이너와 브리지를 만듭니다.

다음은 (호스트의) 브릿지 세부정보입니다.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

이 예에서는 두 인터페이스 모두에 DHCP를 사용하고 있습니다.

다음은 호스트 컴퓨터에 있는 인터페이스입니다.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 

동적으로 할당된 IP 주소를 살펴보면 다음과 같은 의심이 듭니다.br0다음 위치에 성공적으로 연결되었습니다.enpu2s0그리고br1도착하다enpu1s0.

다음은 호스트 머신의 컨테이너 구성입니다.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

또한 이 구성이 첫 번째 컨테이너를br0그리고 두 번째 컨테이너br1.

두 컨테이너 모두에서 인터넷에 핑을 보낼 수 있습니다. 하지만 트래픽이 격리되었는지 확인할 수는 없는 것 같습니다.

ifconfig~에서ubuntu_lxc(첫 번째 컨테이너):

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~에서ubuntu_lxc1(두 번째 컨테이너):

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)

문제는: 왜ubuntu_lxc1컨테이너에 다른 IP 주소가 할당되었습니다.br1호스트(이 컨테이너와 연결되어야 함)에 있습니까?

물리적 인터페이스를 특정 컨테이너에만 연결하는 방법은 무엇입니까?

트래픽이 격리되었는지 확인하는 방법은 무엇입니까?

관련 정보