저는 Arch Linux 워크스테이션에서 학습 경험으로 LXC를 사용하고 있습니다. Archwiki의 LXC 페이지에 있는 가이드를 따르고 컨테이너에 고정 IP를 설정했습니다. 내 네트워크 구성은 다음과 같습니다.
/etc/netctl/lxcbridge
---------------------
Description="LXC Bridge"
Interface=br0
Connection=bridge
BindsToInterfaces=(enp1s0)
IP=static
Address=('192.168.0.20/24')
Gateway='192.168.0.1'
DNS=('192.168.0.1')
그리고 컨테이너 구성은 다음과 같습니다.
/var/lib/lxc/testcontainer/config
---------------------------------
lxc.network.type = veth
lxc.network.link = br0
lxc.network.ipv4 = 192.168.0.198/24
그러나 lxc-ls -f
이를 기반으로 추가 IP 주소를 얻습니다.
NAME STATE AUTOSTART GROUPS IPV4 IPV6
testcontainer RUNNING 0 - 192.168.0.198, 192.168.0.220 -
나는 그저 원할 뿐이야 192.168.0.198
. 왜 두 번째 항목을 할당하는지 잘 모르겠습니다.
답변1
그래서 더 많은 조사를 한 후에 왜 이런 일이 발생하는지 알아냈습니다. 기본 Ubuntu 및 Debian 템플릿을 사용하여 컨테이너를 생성하고 DHCP를 사용하여 라우터에서 IP를 요청하도록 네트워크를 설정했습니다. 따라서 처음에는 lxc.container.config를 사용하여 고정 IP를 설정한 다음 컨테이너가 시작되면 할당된 보조 IP를 라우터(또는 보유하고 있는 DHCP 서버)에 쿼리합니다.
이를 방지하는 가장 논리적인 방법은 아마도 컨테이너 내부에 고정 IP를 할당하는 것입니다. 따라서 Debian 기반 템플릿 편집에서는 다음과 같습니다 /etc/network/interfaces
.
auto etho0
iface etho0 inet static
address 192.168.0.15
netmask 255.255.255.0
gateway 192.168.0.1
그런 다음 lxc 구성에서 ipv4 행을 제거하십시오 /var/lib/lxc/testcontainer/config
.
lxc.network.type = veth
lxc.network.link = br0
또 다른 방법은 호스트가 ipv4 줄만 남겨두고 IP를 설정하도록 하고 /var/lib/lxc/testcontainer/config
인터페이스를 수동으로 설정하여 컨테이너에 인터페이스를 건드리지 말라고 명시적으로 지시하는 것입니다.
auto eth0
iface eth0 inet manual
분명히 두 번째 접근 방식은 호스트가 일시 중지된 다음 다시 시작되면 몇 가지 문제가 있습니다. 첫 번째 방법을 사용하는 것이 가장 좋습니다.