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


17

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に入れましたが、これは一時的な解決策です。


jeremfgが提案したとおりに、resolv.confを変更して、これを数時間追いかけた後、私のために働いた。Tnx。
user3529828

回答:


13

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

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

hosts:          files dns myhostname

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

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


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

[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なしでマシン名のみを入力できるため、この変更を保持しました。


冒頭に最後の行を入れるだけでもかまいませんが、そうすることでより多くの賛成票を獲得できると思います。
HongboZhu

@HongboZhuローカルドメインを機能させるために必要な唯一の変更であるという事実を知っていたらいいと思います。リゾルバーの設定でも、mdnsよりもdnsを優先する必要があると確信しています。あなたのコメントは、中央のドメイン構成に関係していると思いますか?もしそうなら、はい、私はオプションの変更としてこれを最後に置くことができると思います。しかし、他の2つの部分は私見が必要です。
jeremfg

1
私の新しい18.04.2インストールでは、nsswitch.confでの「ホスト」の順序を変更するだけで既に機能します。
智文

16

受け入れられた答えは私の問題を解決しませんでした。avahiとは関係ありません-avahiサービスがインストールされていません。DHCPからIPおよびDNSサーバー設定を取得するようにシステムを設定しています。ただし、DNSが提供する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

システムがローカルホストの代わりに優先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の解決が機能し始めました。サービスを再起動または再起動する必要はありません。


Avahiをアンインストールしてから、手順に従いました。それは私のためにそれを作りました。ありがとうございます。(Ubuntu 18.04デスクトップを使用)。
ホセL.パティニョ

ありがとうございました。これが私にとっての答えでした。なぜ箱から出して「機能しない」のですか?
-adampski

あなたのソリューションと受け入れられた答えの違いは何ですか?両方について、答えの最初の2/3をスキップすることができます-それが同じであっても:
HongboZhu

これは、Ubuntu(および他のLinux)の以前のバージョンでの動作を再現する唯一の答えです。つまり、DNSサーバーのリストはDHCPによって提供され、アドレス解決はローカルにキャッシュされません。
スライスパン

2

私にとって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

私の場合、変更Domainsする必要があるのは/etc/systemd/resolved.conf(サービスを再起動するだけです)。
トコシュ

2
これは私のためにそれをしませんでした。まだ何もありません
-FalcoGer

Ubuntuの同じバージョン。openvpnを使用します。このソリューションは、私のチームの多くのマシンのVPNでうまく機能します。
razvanone

2

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

  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
    

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


ヘッドファイルには、ファイルを編集しないようにという警告が含まれています。これは、resolvconfによって生成されるためです。
ジョン・ミー

@JohnMee headファイルは、生成に使用されるソース/run/resolvconf/resolv.confです。ただし、このファイルも編集しません。
メレビウス

0

私の状況は似ていましたが、多少異なります:myserverWindowsのようなサーバー名を使用しますが、これは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.localで単に置き換えるmyserver必要がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.