systemd-nspawn と network いろいろ
systemd-nspawn で network に接続する方法いろいろまとめ。
ホストと共有 (default)
普通に実行するとコレ。 network namespace をホストと共有する。
ホストのネットワーク設定そのまま
ゲストで
ss
とかを見るとホストのサービスが何かいるのが見える。ホストで
ss
とかを見るとゲストのサービスがそのまま見える。
veth (--network-veth
)
ホストとの間に virtual ethernet link を作成する。 network namecpase はホストと分離される (暗黙で --private-network
が有効になる) 。
ホスト側には
ve-<コンテナ名>
の device ができる。ゲスト側には
host0
の device ができる。ゲストで DHCP でアドレスが取れる (ホスト側で DHCP の port 空けとく必要があるかも。)
systemd が
--enable-libiptc
でビルドされていれば、自動で NAT rule が追加され、 ゲストが外部と通信できるようになる。
bridge (--network-bridge
)
指定された仮想 bridge に接続する。 network namecpase はホストと分離される。
ホスト側には
vb-<コンテナ名>
の device ができる。ゲスト側には
host0
の device ができる。ブリッジは事前に作成しておく必要がある。 (systemd-networkd に作成させる方法)
DHCP とか NAT とかはブリッジの設定次第。