2017-02-27 17 views
0

4 개의 네트워크 카드가있는 시스템에 Ubuntu 16.04 Server가 설치되었습니다. 인터페이스 eth0eth1이 같은 스위치에 연결되어 있습니다. eth0 인터페이스는 원격 SSH 연결로 서버를 관리하기위한 것입니다. br0에 의해 연결될 eth1을 사용하고 싶습니다. LXC 컨테이너에 사용하려는이 다리. DHCP 환경에서의이 설치로 인해 문제가 발생하지 않았습니다. 문제는이 서버가 설치된 네트워크가 완전히 정적이라는 것입니다. 동일한 서브넷 마스크와 게이트웨이를 사용하여이 서버에 대한 IP 범위를 받았습니다. eth0 설정LXC를 연결하기 위해 두 번째 NIC를 구성해야합니다.

아무 문제 없었다 :

auto eth0 
iface eth0 inet static 
    address 195.x.x.2 
    network 195.x.x.0 
    netmask 255.255.255.0 
    gateway 195.x.x.1 
    broadcast 195.x.x.255 
    dns-nameservers 150.x.x.105 150.x.x.106 

문제는 두 번째 인터페이스 eth1와 함께 제공 eth0 우분투는 하나의 기본 게이트웨이가 설정 될 수 있음을 경고로이 같은 게이트웨이를 가지고 있기 때문에 (논리적 인) . 이 설정에

auto eth1 
iface eth1 net static 
    address 195.x.x.3 
    network 195.x.x.0 
    netmask 255.255.255.0 
    broadcast 195.x.x.255 

문제는 내가 외부 핑 eth0에 IP 195.x.x.2에서하지만 eth1 핑 또는 SSH를 통해 액세스 할 수 없습니다 수 있다는 것입니다 다음과 같이 그 때문에 나는 eth1 설정했다. 나는 많은 라우팅 트릭과 함께 작동하도록 만들었지 만, 많은 기사에서 이와 같이 글을 쓰는 것은 정적 브리지와 컨테이너가 있으면이 방법이 더 깊어지는 구멍이된다는 것입니다.

내 질문은 : 누구든지 내 문제에 대해 직접적인 접근법을 가지고 있습니까? eth0eth1을 사용하여 컨테이너를 고정 IP 숫자의 eth1으로 연결하려면 어떻게해야합니까?

답변

0

나는이 질문에 설명 된대로 게이트웨이 라우팅 솔루션을 계속 진행하면서 다음과 같은 방식으로 해결했습니다. 어쩌면 같은 이슈를 가진 사람들도이 접근 방식을 사용할 수 있습니다. 호스트에

: 다음 줄 /etc/iproute2/rt_tables

auto lo 
iface lo net loopback 

# The primary network interface 
auto etc0 
iface eth0 inet static 
    address 195.x.x.2 
    network 195.x.x.0 
    netmask 255.255.255.0 
    gateway 195.x.x.1 
    broadcast 195.x.x.255 
    up ip route add 195.x.x.0/24 dev eth0 src 195.x.x.2 table eth0table 
    up ip route add default via 195.x.x.1 dev eth0 table eth0table 
    up ip rule add from 195.x.x.2 table eth0table 
    up ip route add 195.x.x.0/24 dev eth0 src 195.0.0.2 
    dns-nameservers 150.x.x.105 150.x.x.106 

# The secondary network interface 
auto eth1 
iface eth1 net manual 

# LXC bridge interface 
auto br0 
iface br0 inet static 
    address 195.x.x.3 
    network 195.x.x.0 
    netmask 255.255.255.0 
    bridge_ifaces eth1 
    bridge_ports eth1 
    bridge_stp  off 
    bridge_fd  0 
    bridge_maxwait 0 
    up ip route add 195.x.x.0/24 dev br0 src 195.x.x.3 table br0table 
    up ip route add default via 195.x.x.1 dev br0 table br0table 
    up ip rule add from 195.x.x.3 table br0table 
    up ip route add 195.x.x.0/24 dev br0 src 195.0.0.3 

추가 :

sysctl -w net.ip4.conf.all.arp_filter=1 
echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/sysctl.conf 

/etc/network/interfaces 구성 :

나는 ARP 필터링을 활성화

... 
10 et0table 
20 br0table 
,691,363 컨테이너 설정 파일 ( /var/lib/lxc/[container name]/config)에서210

는 :

... 
lxc.network.type = vets 
lxc.network.link = br0 
lxc.network.flags = up 
lxc.network.hwadr = [auto create when bringing up container] 
lxc.network.ipv4 = 195.x.x.4/24 
lxc.network.ipv4.gateway = 195.x.x.1 
lxc.network.veth.pair = [readable server name] (when using ifconfig) 
lxc.start.auto = 0 (1 if you want the server to autostart) 
lxc.start.delay = 0 (fill in seconds you want the container to wait before start) 

나는 용기에 아파치를 가능하게하여 테스트 네트워크 외부에서 웹 페이지에 액세스. 그것이 내가했던 것과 똑같은 도전에 부딪히는 사람에게 도움이되기를 바랍니다.

추신 : 컨테이너의 구성 파일에서 IP를 할당하도록 선택했는지, 컨테이너 자체의 인터페이스 파일에서 IP를 사용하지 않도록 설정했는지 잊지 마십시오.

auto lo 
iface lo inet loopback 

auto eth0 
iface eth0 net manual