Systemd-networkd가 컨테이너에서 인터페이스를 찾을 수 없는 것 같습니다.

Systemd-networkd가 컨테이너에서 인터페이스를 찾을 수 없는 것 같습니다.

Ubuntu 20.04.3에서 nspawn-container를 설정하려고 합니다. 호스트 네트워크 구성에는 브리지 인터페이스가 포함되어 있습니다.

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet *  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 * prefixlen 64  scopeid 0x0<global>
        ether 41:8a:5b:d8:83:00  txqueuelen 1000  (Ethernet)
        RX packets 5914822  bytes 888728796 (888.7 MB)
        RX errors 0  dropped 449  overruns 0  frame 0
        TX packets 30323548  bytes 37836188291 (37.8 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

컨테이너는 다음과 같이 시작됩니다.

systemd-nspawn -UbM helloworld --network-bridge=br0

컨테이너가 시작되면 vb-helloworld인터페이스가 생성됩니다.

vb-helloworld: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::c8fc:b8ff:fed1:176  prefixlen 64  scopeid 0x20<link>
        ether ca:fc:b8:d1:01:76  txqueuelen 1000  (Ethernet)

컨테이너에는 config가 처리 host0해야 하는 인터페이스가 있습니다 .systemd-networkd/etc/systemd/network/host0.network

[Match]
Name=host0
[Network]
DHCP=false
Address=*:*:*:*::100/64
Gateway=fe80::1
DNS=2a01:4ff:*::*:1
Address=192.168.50.10/24
Gateway=192.168.50.1
DNS=192.168.50.2
ConfigureWithoutCarrier=yes
[Link]
MACAddress=f6:d9:2b:ba:7a:1d
ARP=true
RequiredForOnline=yes
[Address]
Address=*:*:*:*::100/64
Scope=global
[Route]
Gateway=fe80::1
Scope=global

컨테이너에는 다음과 같은 인터페이스가 있습니다.

host0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.214.0  netmask 255.255.0.0  broadcast 169.254.255.255
        inet6 fe80::f4d9:2bff:feba:7a1d  prefixlen 64  scopeid 0x20<link>
        ether f6:d9:2b:ba:7a:1d  txqueuelen 1000  (Ethernet)
...

불행하게도 networkd는 인터페이스를 찾지 못하는 것 같습니다 host0. 주소가 할당되지 않았습니다. ip4도 ip6도 아닙니다. Name섹션의 매개변수를 [Match]로 변경 하면 *해당 주소가 lo인터페이스에 할당됩니다.

내가 뭘 잘못했나요?

답변1

Systemd에는 이미 인터페이스와 일치하는 네트워크 구성이 제공됩니다 host0.

/usr/lib/systemd/network/80-container-host0.network

Networkd는 모든 .network 파일을 임의의 순서로 읽습니다. 첫 번째로 일치하는 파일이 승리합니다. (ASCII에서는 대략 순서가 입니다 0-9 A-Z a-z.) 사용자 정의 구성이 우선순위를 가지려면 파일 이름이 순서대로 되어 있어야 합니다.앞으로 80-container-host0, 예를 들어 50-custom-host0.

(이 디렉토리는 두 파일의 이름이 같은 경우에만 중요합니다. 이 경우 /etc에 있는 파일이 /usr/lib에 있는 같은 이름의 파일보다 우선합니다.)

관련 정보