Ubuntu 18.04でRaspberry Pi 3を使用しています。私の会社には、DNSサーバーと ".local"を持ついくつかのドメインがあります。 .localはマルチキャストDNSに予約されているため、技術的にはこれが正しくなく、代わりに ".lan"である必要があります。しかし、それはそうであり、簡単に変更することはできません。そのため、Windowsマシンでは、これらのドメイン名に問題なくpingおよび参照できます。しかし、私のUbuntuではできません。
一部のドメインが同じマシン上にあり、IIS Webサーバーがどこに行くかを整理するため、IPを使用できません。
私は検索しましたが、かなり頻繁に表示されます:
ただし、/ etc/nsswitch.confを変更してもうまくいきません。私は試した
どれも機能しませんでした。変更後も再起動してみました。 /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に入れましたが、これは一時的な解決策です。
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.conf、Domains[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なしでマシンの名前のみを入力する必要があります。
受け入れられた答えは私の問題を解決しませんでした。 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の解決が機能し始めました。サービスを再起動または再起動する必要はありません。
私にとって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
うまくいったのは、/etc/resolvconf/resolv.conf.d/head
にネームサーバーとしてローカルDNSを追加することでした( here で説明)。
Resolvconfパッケージをインストールします。
Sudo apt install resolvconf
/etc/resolvconf/resolv.conf.d/head
を編集して、次を追加します。
nameserver 8.8.4.4
nameserver 8.8.8.8
Resolvconfサービスを再起動します。
Sudo service resolvconf restart
修正は永続的なものでなければなりません。
私の状況は似ていましたが、多少異なります。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.local
をmyserver
に置き換えるだけでした。