systemd-nspawn: DHCP 検索がコンテナのブリッジを通過できません。

systemd-nspawn: DHCP 検索がコンテナのブリッジを通過できません。

私が持っているもの:

GentooホストとUbuntuコンテナ。

私が望むもの:

コンテナをネットワークとホストに接続します。

私は何をしていますか:

ホストコンピュータにブリッジを作成し、ここにネットワークカードを追加しました。 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

3つのインターフェイス(ブリッジ、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)を使用すると、混合結果を得ることができます。

関連情報