systemdの127.0.0.53のDNSはいくつかのルックアップを無視しています


14

127.0.0.53に愛されているsystemdのDNSは、ローカルマシンを名前で照会する場合を除いて機能しているようです。しかし、それらを照会し、ローカルDNSサーバー(ルーター)を具体的に指定すると、適切な応答が返されます。しかし、設定ファイルには、検索アドレスとしてルーターも使用していると書かれています。何かご意見は?

デルのラップトップでUbuntu 18.04を実行しています。

誤った結果:

$ nslookup web1

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find web1: SERVFAIL

また失敗する

$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found

正しい結果:

$ nslookup web1 192.168.1.1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

構成情報systemd-resolve

$ 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 3 (wlp3s0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1
          DNS Domain: wp.comcast.net

Link 2 (enp2s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

構成情報NetworkManager

$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

nslookupを取得して正しい答えを返すにはどうすればよいですか?リンク3は正しい情報であるように見え(私のWiFi接続)、ルーター上のDNSは正しい答えを返していますが、ローカルキャッシュはアドレスを検索しようとしません(またはそうです)。


:この記事をチェックアウトし、それはあなたの問題を解決するかどうかを確認askubuntu.com/questions/1034064/...

構成ファイルにdns = dnsmasqがありません。これを示すために質問を更新しています。
-schworak

どのバージョンのUbuntuを実行していますか?また、IP構成で投稿を更新できますか?

デルのラップトップでUbuntu 18.04を実行しています。
-schworak

試してみてくださいnslookup -i wlp3s0 web1
cmak.fr

回答:


9

あなたのresolv.confファイルは、間違った場所を指していませんでした- ../run/systemd/resolve/stub-resolv.conf され、それはデフォルトでのポイントになっています場所。

問題は、systemd-resolvedドットなしの名前をDNSに渡さないことです。どうやらこれは「設計どおり」に機能しているようです。「解決すると、単一ラベルのルックアップがユニキャストDNSにリークすることは決してない」と述べているこのgithubの問題を参照してください。

あなたがそのgithubの問題で推論に同意するかどうかにかかわらず、そこにある。この問題を解決する方法は。Ubuntuマシンのデフォルト設定を変更する必要さえありません。

  1. まず、LANのDNSにドメイン名が必要です。

    dnsmasqを使用している場合/etc/dnsmasq.confは、DNSサーバーに次を追加します。

    expand-hosts
    domain=your-domain # replace "your-domain" with domain of your choice
    

    ドメインを追加すると、LANホスト名を解決できるようになります。

    nslookup web1.your-domain
    
  2. 次に、LANドメインの名前がDNSサーバーと異なる場合は、DHCPサーバーにも設定されていることを確認します。DHCPサーバー(ルーター)では、この設定は単に「ドメイン名」と呼ばれます。

    その後、UbuntuボックスでDHCPリースを更新すると、次の場所に検索ディレクティブが表示され/run/systemd/resolve/stub-resolv.confます。

    nameserver 127.0.0.53
    search your-domain
    

これで、検索するweb1とに展開されweb1.your-domain、DNSを使用して解決されます。

$ nslookup web1
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   web1.your-domain
Address: 192.168.1.107

あなたが使用している場合ことに注意してくださいdig代わりにnslookupdigその使用-デフォルトでは、検索パスを使用しない+searchことを可能にするオプションを選択します。


再起動する前に、web1.mydomain.comを問題なく検索しました。しかし、もちろんweb1だけを検索しても機能しませんでした。だから私は再起動し、私の人生ではどこでComcastドメインを取得しているのかわかりませんが、web1を検索すると正しいIPで応答しますが、ドメインではなくcomcastドメインを表示します。それは解決するので、私はあまり心配していませんが、一体何ですか????
シュウォラック

@schworak奇妙な!DHCPサーバーはComcastモデムでもありますか?/etc/resolv.confまたはの出力にドメインが表示されていますnmcli -g allsystemd-resolve --statusDHCPリースの内容を見てみてください
ローレンスゴンサルベス

コムキャストモデムではありません。DDWRTを実行しているSysLinkルーターがあります。コムキャスト設定は完全に置き換えられます。comcast名は、起動時に自動生成されるresolv.confファイルに表示されます。あまり心配していませんが、奇妙です。
シュウォラック

@LaurenceGonsalves github issueリンクをありがとう。私は問題の回避策を見つけましたが、これは実際に根本的な問題を理解するのに役立ちました。
グレゴリーアレニウス

19

私に合った修正が見つかりました。

私のresolv.confファイルは間違った場所を指していました。これは、私のラップトップ(この問題に最初に気付いたマシン)およびUbuntu 18.04サーバーの新規インストールで発生したUbuntuのバグのようです。

デフォルト

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Apr 26 12:07 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

これを削除して、正しいファイルを指定しました。再起動後、これで問題が解決しました。また、ラップトップでネットワークを切り替えることもでき、DNSは正しく切り替えられました。もちろん、外部ネットワーク上でローカルマシンを解決することはできませんが、それは当然のことです。ルーターがDNSであるため、ローカルネットワークに切り替えるとすぐに、すべてのローカルマシンが正しく解決されます。

修正

$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 32 May 29 08:48 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

$ sudo reboot

その後、すべてが期待どおりに機能し、127.0.0.53はまったく使用されなくなりました。

正しい結果

$ nslookup web1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

$ nslookup google.com

Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.7.174
Name:   google.com
Address: 2607:f8b0:4004:80e::200e

を使用してこのバグを報告してくださいubuntu-bug resolvconf
チャイT.レックス

送信を開始すると、resolvconf(インストールされていない)と表示されます。resolvconfとsystemd-resolveは同じものですか?
-schworak

systemd-resolvesystemdパッケージによって提供されるため、ubuntu-bug systemd代わりに試してください。
チャイT.レックス

ありがとう!そのバグ報告機能を使用したことがありません。非常に素晴らしい。
シュウォラック

1
うわー、これはクレイジーです。ありがとうございました。このバグは修正されましたか?Docker固有のバグですか?resolv.confドッカーブリッジネットワークDNSにこのように設定されていると思いますか?
void.pointer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.