resolvconf と NetworkManager によって間違ったネームサーバーが設定されている

resolvconf と NetworkManager によって間違ったネームサーバーが設定されている

私のDNSサーバーは です192.168.1.152

この DNS は DHCP によってクライアントに提供されます。LAN 上の Windows クライアントはその DNS を使用して名前を適切に解決しますが、Ubuntu VM はそうしません。

VM はブリッジ ネットワークでセットアップされており、DNS サーバーが適切に提供されていますが、ローカル ホスト名が nslookup またはブラウザーによって解決されません。

nslookup以下は私のローカル ドメインの 1 つです。

# nslookup unraid.local
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find unraid.local: SERVFAIL

DNS サーバーを使用して解決される内容は次のとおりです。

# nslookup unraid.local 192.168.1.152
Server:     192.168.1.152
Address:    192.168.1.152#53

Name:   unraid.local
Address: 192.168.1.152

/etc/resolv.confネームサーバーが間違っています:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53

そのコマンドを実行しました。DNS サーバーでは、紛らわしいことに、正しいサーバー (およびデフォルト ゲートウェイ) が指定されています。

root@ubuntu:~# systemd-resolve --status
Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (ens33)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.152
                      192.168.1.1

ネットワークを変更すると解決できなくなるため、DNS サーバーの IP を構成ファイルに「ハードコード」したくありません。

resolvconfとNetworkManagerを自動的にDHCPサーバーのIPを設定しますか/etc/resolv.conf?

答え1

知られているシステムバグ

一時的な回避策DNS IP が変更されても再設定する必要はありません。

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot

答え2

編集して/etc/systemd/resolved.conf、希望する DNS サーバーを追加してみてください。

これを変える:

[Resolve]
#DNS=

これに(ただし、必要なものを使用してください - これは例です):

[Resolve]
DNS=192.168.1.152

その後、サービスを再起動します。

service systemd-resolved restart

ステータスを確認すると、

$ systemd-resolve --status
Global
         DNS Servers: 192.168.1.152

      DNSSEC NTA: 10.in-addr.arpa
                  16.172.in-addr.arpa
                  168.192.in-addr.arpa
                  17.172.in-addr.arpa
                  18.172.in-addr.arpa
                  19.172.in-addr.arpa

答え3

Ubuntu 17.10 でこの問題の解決策がようやく見つかりました。このバージョンの Ubuntu ではデフォルトで が使用されsystemd-resolved、次のバージョンでも安定することを期待しています。

ローカルの systemd 解決キャッシュの代わりにカスタム DNS を使用するには、次の手順を実行します。

  1. 新しいネームサーバーを追加します。sudoerでファイルを編集します/etc/systemd/resolved.conf。ここではDNSエントリをコメントアウトし、DNSを配置しました。 [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. 実際のシンボリックリンクをキャンセルする/etc/resolv.conf

  3. 新しいシンボリックリンクを作成するsudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. サービスを再起動するsudo service systemd-resolved restart
  5. ネットワークマネージャを再起動するsudo systemctl restart networking

そして、add dnsによって提供された名前を調べると、レコードが解決されていることがわかります。dig nexus.default.svc.cluster.mydomain

/etc/nsswitch.conf最後のステップは、DNSをmdns4_minimalの前に配置して、解決の順序を更新することです。

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname

答え4

私のシステムでは、不正なシンボリック/etc/resolv.confリンクが見つかりました:/run/systemd/resolve/stub-resolv.conf

このファイルには 1 行のみが含まれています:

nameserver 127.0.0.53#53

その結果、ローカル ネットワークの DNS ルックアップが失われることがよくありました。

そこで、代わり/etc/reolv.conf/run/systemd/resolve/resolv.conf

そして今は正常に動作するようになりました。

関連情報