web-dev-qa-db-ja.com

Ubuntu 18.04 .localドメインDNSルックアップが機能しない

Ubuntu 18.04でRaspberry Pi 3を使用しています。私の会社には、DNSサーバーと ".local"を持ついくつかのドメインがあります。 .localはマルチキャストDNSに予約されているため、技術的にはこれが正しくなく、代わりに ".lan"である必要があります。しかし、それはそうであり、簡単に変更することはできません。そのため、Windowsマシンでは、これらのドメイン名に問題なくpingおよび参照できます。しかし、私のUbuntuではできません。

一部のドメインが同じマシン上にあり、IIS Webサーバーがどこに行くかを整理するため、IPを使用できません。

私は検索しましたが、かなり頻繁に表示されます:

ただし、/ etc/nsswitch.confを変更してもうまくいきません。私は試した

  • ホスト:ファイルmdns4_minimal [NOTFOUND = return] dns myhostname#default
  • ホスト:ファイルdns
  • ホスト:ファイルmdns4_minimal [NOTFOUND = continue] dns myhostname
  • ホスト:ファイルmdns4 [NOTFOUND = return] dns myhostname
  • ホスト:ファイルmdns4 [NOTFOUND = continue] dns myhostname
  • ホスト:ファイルdns mdsn4_minimal myhostname
  • ホスト:DNS
  • 他のいくつか

どれも機能しませんでした。変更後も再起動してみました。 /etc/avahi/avahi-daemon.confのdomain-name = alocalがサービスの再起動後に機能せず、再起動後に機能しないことをavahiに伝えようとしました。これが機能しない後、avahi-daemonサービスを完全に無効にしてみました。

Sudo systemctl disable avahi-daemon

再起動後、/ etc/nsswitch.confでいくつかの順列を再試行しましたが、効果はありませんでした。

ホスト(ファイルdns)の現在の設定で、次の応答が返されます。

Dig login.name.local # not the actual name

; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

ただし、サーバーに直接照会するようにDigに指示すると、正しい答えが得られます。

Dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; ANSWER SECTION:
login.name.local. 3600 IN    A        serverIP

;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

このバージョンのUbuntuは、ネットワークマネージャーでnetplanを使用します。正しいDNS IPがリストに間違いなくあります。 (実際にはプライマリDNSです。)また、dnsIpはserverIPと同じですが、それは問題になりません。

Pingやブラウザ経由の接続などはもちろん機能しません。 DNSクエリを使用するものはありません。

私は何をすべきか迷っています。確かに、別のドメイン名に切り替えることはできません。サーバー名を/ etc/hostsに入れましたが、これは一時的な解決策です。

11
FalcoGer

Linux Mint 19(Tara)で、非常によく似た問題(まったく同じでない場合)に直面しました。 3つの異なる情報を組み合わせることで、なんとか解決できました。それはすべてsystemd-resolvedの最近の変更に関連しているようです。

最初に、はい、あなたがしたように/ etc/nsswitch.confを設定する必要がありました。 dnsがmdnsの前に来る限り、あなたは良いはずです。私は簡単に終わりました:

hosts:          files dns myhostname

参照: https://unix.stackexchange.com/a/457172/27121

このバージョンのMintにアップグレードする前に、これが私がする必要がある唯一のことです。今、私はそれを機能させるために以下の2つの他の変更も加えました...


その後、systemd-resolvedが希望どおりに機能するように検索ドメインを構成しました。だから私はファイルを編集しました/ etc/systemd/resolved.confDomains[resolve]セクションの下の設定。私の場合、最終的には次のようになりました。

[Resolve]
#DNS=
#FallbackDNS=
Domains=trilliant.local
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

参照: https://askubuntu.com/a/1031271/872881

また、avahiの構成を別のものに変更しました(正しく覚えていれば「mdns」ですが、それは問題ではありません)。しかし、私の理解からそれは要求されるべきではありません。完全を期すために追加するだけです。


しかし、私は次のように呼ばれるまで、それのどれも機能しませんでした:

Sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

参照: https://askubuntu.com/a/938703/872881

これを呼び出した後、すべてが期待どおりに完全に機能し始めました!

したがって、/ etc/systemd/resolved.confファイルを実際に変更する必要はなかった可能性がありますが、意味があり許可されているため、この変更を保持しましたDNS解決が機能するためには、完全なFQDNなしでマシンの名前のみを入力する必要があります。

7
jeremfg

受け入れられた答えは私の問題を解決しませんでした。 avahiとは関係ありません-avahiサービスがインストールされていません。 DHCPからIPおよびDNSサーバー設定を取得するようにシステムを設定しています。ただし、dhcpが提供するDNSは、.localを使用してクエリをチェックしていませんでした

本当の問題は、Ubuntu 18.4のresolv.confが、名前解決のためにlocalhostを指すスタブファイルにsymリンクされていることです。 Localhost dnsの名前解決は、システムが.local名の提供されたDNSサーバーのチェックを拒否し、そのような名前が無効であると(誤って)信じることを意味します。これは、/ etc/resolv.confのデフォルトのセットアップです。

ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

スタブファイルの内容は次のとおりです(コメントは削除されます)。

 cat /run/systemd/resolve/stub-resolv.conf
 .. removed comments..  
nameserver 127.0.0.53
    search reddog.Microsoft.com

「実際の」解決confには「dhcpからの」「正しい」dns設定があります。

cat /run/systemd/resolve/resolv.conf

..removed comments..
nameserver 10.168.200.250 # This is my server that can resolve .local
nameserver 208.67.220.220 # these are optional, fallback dns servers
nameserver 208.67.222.222
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.8.8
search reddog.Microsoft.com

システムがlocalhostの代わりに優先DNSリゾルバーを使用するようにするには、/run/systemd/resolve/stub-resolv.confではなく/run/systemd/resolve/resolv.confを指すようにシンボリックリンクを変更します。

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

この直後、.localの解決が機能し始めました。サービスを再起動または再起動する必要はありません。

10
OzPHB

私にとってUbuntu 18.04の作業方法は次のとおりです。

Avahi confを編集します。

Sudo vim /etc/avahi/avahi-daemon.conf

.localを.alocalに変更します。

[server]
domain-name=.alocal

次に、resolved.confを開きます。

Sudo vim /etc/systemd/resolved.conf

ドメインのコメント解除と編集:

[Resolve]
...
Domains=yourdomain.local
...

そして最後にサービスを再起動します:

Sudo service systemd-resolved restart
Sudo service avahi-daemon restart
2
Anton To

うまくいったのは、/etc/resolvconf/resolv.conf.d/headにネームサーバーとしてローカルDNSを追加することでした( here で説明)。

  1. Resolvconfパッケージをインストールします。

    Sudo apt install resolvconf
    
  2. /etc/resolvconf/resolv.conf.d/headを編集して、次を追加します。

    nameserver 8.8.4.4  
    nameserver 8.8.8.8  
    
  3. Resolvconfサービスを再起動します。

    Sudo service resolvconf restart
    

修正は永続的なものでなければなりません。

0
Kevin Stevens

私の状況は似ていましたが、多少異なります。Windowsではmyserverのようなサーバー名を使用しますが、これはUbuntu 16.04では機能せず、myserver.mycompany.localを使用する必要がありました。 18.04にアップグレードした後、次の動作が発生しました。

$ ping myserver.mycompany.local
ping: myserver.mycompany.local: Name or service not known

$ ping myserver
PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
...

アプリケーションでmyserver.mycompany.localmyserverに置き換えるだけでした。

0
Melebius