我的 DNS 服务器是192.168.1.152
。
此 DNS 由 DHCP 提供给客户端。我的 LAN 上的 Windows 客户端使用该 DNS 正确解析名称,但我的 Ubuntu VM 却不能。
VM 设置了桥接网络,并正确提供了 DNS 服务器,但我的本地主机名无法通过 nslookup 或浏览器解析。
这是nslookup
我的一个本地域名:
# 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
,我希望它在下一版本中会稳定下来。
为了使用自定义 dns 而不是本地 systemd 解析的缓存,请执行以下操作:
添加新的名称服务器。以 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
现在,如果你挖掘到你添加的 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
该文件仅包含一行:
nameserver 127.0.0.53#53
结果,本地网络的 DNS 查找经常缺失。
因此,我改为/etc/reolv.conf
指向/run/systemd/resolve/resolv.conf
现在可以正常工作。