我有几个 18.04 VM,它们都存在相同的问题:它们似乎没有使用正确的 DNS 服务器。这些机器从 DHCP 获取设置,如下所示:
$ netplan ip leases ens18
# This is private data. Do not parse.
ADDRESS=192.168.100.60
NETMASK=255.255.255.0
ROUTER=192.168.100.1
SERVER_ADDRESS=192.168.100.1
T1=3600
T2=6300
LIFETIME=7200
DNS=192.168.6.1 8.8.8.8
DOMAINNAME=my.domain
HOSTNAME=influx
CLIENTID=<redacted>
我已经将上面的数字随机化,但重点是列出的 DNS 服务器是来自 DHCP 的正确服务器。但是,如果我尝试使用 nslookup 进行名称解析,则会得到以下结果:
$ nslookup
> test.my.domain
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find test.my.domain: NXDOMAIN
但是,我可以明确地使用 DNS 服务器:
$ nslookup test.my.domain 192.168.6.1
Server: 192.168.6.1
Address: 192.168.6.1#53
Name: test.my.domain
Address: 192.168.100.150
有人能解释为什么它默认为 127.0.0.53 以及为什么名称解析不起作用吗?
值得注意的是,我在同一个子网中同时运行了 16.04 VM,它们没有相同的问题(它们解决了问题并且 nslookup 按预期工作)。
答案1
我猜是你的虚拟机上的域服务器 (bind) 出了问题。如果你查看ls -al /etc/resolv.conf
它,它应该解析为指向 ../run/systemd/resolve/stub-resolv.conf 的链接
真正的 resolv.conf 也应该在该目录中。
您可以重定向符号链接:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
或者你可以禁用域服务
sudo systemctl disable systemd-resolved
sudo reboot
如果您愿意,这可能会解决您的问题。无论哪种方式,您都可能需要重新启动虚拟机。