DNS に問題が発生しており、問題を絞り込むために、マシンの DNS 設定を手動で構成し、DHCP 経由で返される 2 つの DNS サーバーではなく 1 つの DNS サーバーのみを指定するように求められました。これにより、サーバー管理者は、問題が 1 つの DNS サーバーでのみ発生しているのか、それとも両方の DNS サーバーで発生しているのかを確認できます。
しかし、systemd-resolved を手動で DNS 設定を受け入れるように設定することはできませんでした。
systemd-networkd
以下のことを試しましたが、 との両方を再起動した後でも、両方のサーバー間で DNS 要求がランダムに送信され続けましたsystemd-resolved
。
- のセクション
DNS=1.2.3.4
で指定する[Resolve]
/etc/systemd/resolved.conf
- (このフォルダ内の唯一のファイル)のセクション
DNS=1.2.3.4
で指定[Network]
/etc/systemd/network/eth0.conf
/etc/resolv.conf
サーバーの1つを編集してコメントアウトする
これらはいずれも何も変更せず、resolvectl
両方の DNS サーバーが使用可能としてリストされ、テストを実行したときに、指定した 1 つのサーバーのみを使用するのではなく、DNS クエリが 2 つのサーバーに分割されました。
指定した単一の DNS サーバーのみを使用し、DHCP 経由で返されたサーバーも使用しないように systemd に指示するにはどうすればよいですか?
答え1
まだ試していませんが、DHCP 応答から取得した DNS サーバーを無視するオプションがあることが分かりました。systemd.network
ファイルに、DHCP セクションがまだ存在しない場合は追加し、UseDNS
オプションを使用します。
[Network]
DNS=8.8.8.8 # Specify your DNS server manually
[DHCPv4]
UseDNS=no # Don't use DNS servers from DHCP
答え2
コメントするには十分な評判がないマルバニアスの回答。彼の回答は正しいのですが、nspawn コンテナーは80-container-host0.network
ホストのシステム デフォルトを上書きするためにファイルに名前を付ける必要があります。
からシステムd-nspawnドキュメント:
systemd-networkd.service(8) には、
/usr/lib/systemd/network/80-container-ve.network
このようにして作成されたホスト側インターフェースに一致するネットワーク ファイルがデフォルトで含まれており、このファイルには、作成された仮想リンク上で DHCP 経由で自動アドレス プロビジョニングを有効にする設定と、ホストの外部ネットワーク インターフェースへの自動 IP ルーティングが含まれています。また、このファイルには、/usr/lib/systemd/network/80-container-host0.network
このようにして作成されたコンテナー側インターフェースに一致するファイルも含まれており、DHCP 経由でクライアント側アドレス割り当てを有効にする設定が含まれています。systemd-networkd がホストとコンテナー内の両方で実行されている場合、コンテナーからホストへの自動 IP 通信が可能になり、外部ネットワークへの接続も可能になります。
/etc/systemd/network/80-container-host0.network
:
# https://www.freedesktop.org/software/systemd/man/systemd.network.html#UseDNS=
#
# Disable adding the DNS from DHCP
#
[Match]
Virtualization=container
Name=host0
[Network]
DHCP=ipv4
DNS=
[DHCPv4]
UseDNS=false
答え3
静的 IP を設定できる場合は、DNS サーバーを指定できます。ネットワーク管理者に使用できる静的 IP を尋ねて、それを試してください。任意の IP を使用しないでください。重複してしまう可能性があります。