systemd-nspawn/machinectl 및 macvlan

systemd-nspawn/machinectl 및 macvlan

macvlan 및 dhcp를 통해 네트워크에 연결하는 nspawn 컨테이너를 만들고 싶습니다. 내가 찾은 모든 문서는 매우 유익했지만 이를 설정하는 단계별 프로세스를 제공하지 않았습니다.

지금까지 내가 한 일은 systemd-container를 포함한 debootstrap을 사용하여 컨테이너(debian 기반)를 만드는 것입니다:

debootstrap --arch=armhf --include=systemd-container stretch /var/lib/machines/raspbian-09 http://archive.raspbian.org/raspbian

로컬 호스트 네트워크

달리기:

systemd-nspawn -b -M raspbian-09

또는

machinectl raspbian-09

유닛 파일 /etc/systemd/nspawn/raspbian-09.nspawn에는 다음이 포함됩니다.

[Exec]
Boot=true
PrivateUsers=no

[Network]
Private=no
VirtualEthernet=no

두 경우 모두 네트워크 연결이 양호합니다.

맥에버랜드

macvlan의 경우 다음 명령을 실행합니다.

systemd-nspawn -b -M raspbian-09 --network-macvlan=eth0

또는

machinectl raspbian-09

유닛 파일 /etc/systemd/nspawn/raspbian-09.nspawn에는 다음이 포함됩니다.

[Exec]
Boot=true
PrivateUsers=no

[Network]
MACVLAN=eth0

두 경우 모두 네트워크 연결이 작동하지 않습니다.

컨테이너 내부에서 mv-eth0 인터페이스가 생성된 것을 볼 수 있습니다.

# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 mv-eth0          ether              degraded    configuring

하지만 IPv4 주소는 없습니다:

# ip a
mv-eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever

호스트와 컨테이너에서는 어떤 다른 구성을 수행해야 합니까?

답변1

가능한 해결책 중 하나는 다음과 같습니다.

다음 작업은 모두 컨테이너에서 완료되어야 합니다.

컨테이너가 systemd-networkd를 사용하고 있는지 확인하세요. 다음 명령을 실행하여 이러한 경우인지 확인할 수 있습니다.

systemctl status systemd-networkd

서비스가 활성화되어 실행되고 있지 않은 경우 서비스를 활성화하고 시작해야 합니다.

systemctl enable systemd-networkd
systemctl start systemd-networkd

활성화 및 시작되지 않은 경우 systemd-resolved 서비스를 활성화하고 시작해야 할 수도 있습니다.

systemctl enable systemd-resolved
systemctl start systemd-resolved

macvlan 인터페이스에서 동적 ipv4 주소를 생성해야 하는 경우 /etc/systemd/network/mveth0.network다음 내용으로 네트워크 설정 파일을 생성할 수 있습니다.

[Match]
Name=mv-eth0

[Network]
DHCP=ipv4

macvlan 인터페이스에 고정 ipv4 주소를 설정해야 하는 경우. 예를 들어 게이트웨이 주소가 192.168.1.1이고 ipv4 주소를 192.168.1.14/24로 설정해야 하는 경우 네트워크 설정 파일에서 다음을 사용할 수 있습니다 /etc/systemd/network/mveth0.network.

[Match]
Name=mv-eth0

[Network]
IPForward=yes
Address=192.168.1.14/24
Gateway=192.168.1.1
# DNS= ?

파일을 생성한 후 systemd-networkd 서비스를 다시 시작해야 합니다.

systemctl restart systemd-networkd

명령을 실행하려면 sudo를 사용해야 할 수도 있습니다.

관련 정보