私の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 を使用するには、次の手順を実行します。
新しいネームサーバーを追加します。sudoerでファイルを編集します
/etc/systemd/resolved.conf
。ここではDNSエントリをコメントアウトし、DNSを配置しました。[Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4
実際のシンボリックリンクをキャンセルする
/etc/resolv.conf
- 新しいシンボリックリンクを作成する
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
- サービスを再起動する
sudo service systemd-resolved restart
- ネットワークマネージャを再起動する
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
そして今は正常に動作するようになりました。