我有一个运行 dnsmasq 的本地服务器(192.168.0.10)来为我的 LAN 提供 DHCP,还有一个 DNS 服务器来解析 DHCP 客户端的主机名。
当我运行 16.04 时,这工作得很好。任何从服务器获取 DHCP 地址的机器都会使用 DNS 服务器,并且可以解析网络上的其他主机名。
但是,自从升级到 18.04 以来,我无法再解析主机名。我知道 18.04 现在使用 systemd-resolve。它似乎知道 DNS 服务器:
mark@coachz:~$ 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 3 (wlp59s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.0.10
Link 2 (enp58s0f1)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
但是,它似乎没有使用它来解析主机名:
mark@coachz:~$ nslookup homestar
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find homestar: SERVFAIL
尽管如果我明确地告诉它,它可以:
mark@coachz:~$ nslookup homestar 192.168.0.10
Server: 192.168.0.10
Address: 192.168.0.10#53
Name: homestar
Address: 192.168.0.101
我如何让它自动使用 DHCP 提供的 DNS 服务器?
答案1
我成功了,如下:
cd /etc/
mv resolv.conf resolv.conf-old
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
答案2
事实证明问题在于我没有在 dnsmasq 服务器中配置域后缀。
我添加了行:
domain=lan
并/etc/dnsmasq.conf
重新启动了服务,现在我可以正常解析homestar
或的地址。homestar.lan