각각 공개 정적 IP가있는 호스트에 여러 개의 LXC 컨테이너를 설정하려고합니다.
호스트가 최신 Ubuntu를 실행 중입니다. eth0이라는 단일 네트워크 인터페이스가 있습니다. 정적 IP는 인터넷에서 핑이 가능하며 이름은 eth0 : 210, eth0 : 211 ... 콜론 뒤의 숫자는 주소의 최하위 바이트입니다. 이 인터페이스 외에도 호스트의 퍼블릭 IP에 br0 설정이 있습니다. lo, veth2LPP9A 및 lxcbr0 인터페이스도 있습니다. lxcbr0에는 개인 IP 주소가 있습니다.
호스트 / etc / network / interfaces는 다음과 같습니다.
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
지금까지 eth0을 호스팅하기 위해 LXC 컨테이너 브리징을 포함한 다양한 온라인 소스를 사용 하여 공개 IP 를 설정하여이 설정을 도와 줄 수있었습니다.
컨테이너의 설정 파일은 다음과 같습니다.
lxc.network.type = veth
lxc.network.link = br0
문제가 발생했기 때문에이 파일에서 정적 lxc.network.ipv4 구성을 제거했습니다. 이 구성으로 lxc-ls --fancy를 실행하면 동일한 퍼블릭 IP가 두 번 출력됩니다. 또한 컨테이너 / etc / network / interfaces의 서브넷 구성을 망칠 수 있습니다.
컨테이너의 인터페이스 파일에 대해 말하자면 다음과 같습니다.
auto eth0
iface eth0 inet static
address [...]
netmask 255.255.255.255
#gateway [...]
dns-nameservers 8.8.8.8
post-up route add [...] dev eth0
post-up route add default gw [...]
post-down route del [...] dev eth0
post-down route del default gw [...]
게이트웨이를 주석 처리하고 route add 명령을이 파일에 추가해야했습니다. 그렇지 않으면 컨테이너를 부팅하는 데 몇 분이 걸립니다.
호스트의 / proc / sys / net / bridge / bridge-nf- * 파일은 모두 0으로 설정되어 있습니다. / proc / sys / net / ipv4 / ip_forward 값은 1입니다.
문제는 컨테이너의 "route -n"이 원하는 것처럼 보이지만 컨테이너에서 ping을 할 수 없다는 것입니다. 컨테이너의 IP가 무엇인지 SSHing하면 호스트에 연결됩니다.
편집 : 호스트에서 컨테이너의 정적 IP를 제거하는 것이 도움이되었지만 지금은 새로운 오류가 발생합니다. 호스트에서 컨테이너를 핑하려고하면 Redirect HostFrom, New nexthop이 발생합니다. 패킷은 게이트웨이에서 호스트로 반복적으로 전달됩니다. 호스트에서 추적 경로를 실행하면 첫 번째 중지가 게이트웨이에 있음을 나타냅니다. 그런 다음 다른 모든 경로는 * * *입니다. 컨테이너가 온라인인지 여부에 관계없이 동일한 문제가 발생합니다.