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

考えられる解決策の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 を使用する必要があります。

関連情報