systemd-nspawn: DHCP 검색이 컨테이너의 브리지를 통과할 수 없습니다.

systemd-nspawn: DHCP 검색이 컨테이너의 브리지를 통과할 수 없습니다.

내가 가진 것:

젠투 호스트와 우분투 컨테이너.

내가 원하는 것은:

컨테이너를 네트워크와 호스트에 연결합니다.

나는 무엇을하고 있는가:

호스트 컴퓨터에 브리지를 만들고 여기에 네트워크 카드를 추가했습니다. NIC의 IP 주소가 브릿지로 옮겨져서 인터넷을 정상적으로 사용할 수 있게 되었습니다. 그런 다음 컨테이너를 systemd-nspawn --network-bridge=my-bridge ....

내가 얻는 것:

컨테이너 측에서는 host0networkctl에 따라 구성된 인터페이스를 볼 수 있습니다.

root@scratch:~# networkctl 
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 sit0             sit                off         unmanaged 
  3 host0            ether              degraded    configuring

세 가지 인터페이스(브리지, NIC 및 vb-container)에 대해 Wireshard를 통해 트래픽을 스니핑하면 브리지 및 vb-container를 통해 DHCP DISCOVER가 표시되지만 NIC 및 ACK는 수신되지 않습니다.

내가 뭘 묻고 있는 거지?

내가 무엇을 놓치고 있나요? 내 컨테이너에 IP 주소를 할당하려면 어떻게 해야 하나요?

답변1

이미지/디렉토리가 systemd-networkd를 사용하는 경우 이는 즉시 작동합니다. 그렇지 않은 경우 네트워크 내부를 조정하거나 컨테이너에 호스트 네트워크만 제공하는 기본 구성(no -n, --network-bridge 등)을 시도해야 할 수도 있습니다. 이미지가 호스트를 덮어쓸 수 있으므로 resolv.conf 또는 DNS를 업데이트해야 할 수도 있습니다.

제 경우에는 RHEL CentOS, Fedora 등을 사용하고 있습니다. 이러한 배포판은 기본적으로 NetworkManager를 사용하므로 가장 쉬운 방법은 systemd-nspawn에 네트워크를 지정하지 않는 것입니다.

또한 네트워크 지원 대상으로 부팅해야 할 수도 있습니다. systemd-nspawn 자체는 기본 대상만 사용합니다.

systemd-nspawn -b [opts] systemd multi-user.target

이 예제는 제공된 대상을 사용하여 systemd를 실행하는 것으로 시작됩니다. Single.target 또는 기본값(graphical.target)을 사용하면 혼합된 결과를 얻을 수 있습니다.

관련 정보