我在设置 DHCP/DNS 解决方案时遇到了一些问题 - 具体来说,让客户端使用路由器提供的 DNS 服务。
我有一个“EdgeRouter”,我已将其设置为交换机(接口switch0
),带有 DHCP 服务器,以及 Dnsmasq 服务,以根据以下要求提供 DHCP 主机名解析本指南
# show service dhcp-server
disabled false
hostfile-update disable
shared-network-name my-dhcp {
authoritative disable
subnet 192.168.7.0/24 {
default-router 192.168.7.1
dns-server 192.168.7.1
domain-name local
lease 86400
start 192.168.7.100 {
stop 192.168.7.240
}
}
}
static-arp disable
use-dnsmasq enable
我有两个客户端 - 一台 Ubuntu 18.04 Linux 笔记本电脑(称为ubuntu
)和一台 Windows 10 笔记本电脑(称为windows
),两者都连接到交换机并通过 DHCP 获取 IP 地址。我可以在每个客户端和交换机管理接口之间以及彼此之间完全 ping 通。我还检查了每个客户端收到的 DHCP 记录,并验证它们收到的 DNS 服务器地址为 192.168.7.1,这是正确的。
在交换机上我可以使用以下命令确认这些租约:
$ cat /var/run/dnsmasq-dhcp.leases
1420222142 ec:8e:b5:94:bd:8f 192.168.7.175 ubuntu *
1420219707 c8:d3:ff:6f:42:15 192.168.7.100 windows 01:c8:d3:ff:6f:42:15
我ubuntu
还可以验证交换机上的 DNS 服务器是否正常工作:
$ dig @192.168.7.1 ubuntu
; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> @192.168.7.1 ubuntu
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15747
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ubuntu. IN A
;; ANSWER SECTION:
ubuntu. 43200 IN A 192.168.7.175
;; Query time: 0 msec
;; SERVER: 192.168.7.1#53(192.168.7.1)
;; WHEN: Tue Nov 03 12:21:15 NZDT 2020
;; MSG SIZE rcvd: 53
对于挖掘的类似回应windows
。
如果我通过 ssh 进入路由器,我可以ping ubuntu
或者ping windows
没有问题——名称可以解析。
问题是,当我从 Windows ping 时,Linux 和 Windows 笔记本电脑似乎都无法解决问题:
> ping ubuntu
Ping request could not find host ubuntu. Please check the name and try again.
或者从 Linux:
$ ping windows
ping: windows: Name or service not known
Linux 客户端同样如此:
$ nslookup windows
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find windows: SERVFAIL
据我所知,我的 Linux 笔记本电脑正在运行自己的 dnsmasq,/etc/resolv.conf
如下所示:
nameserver 127.0.0.53
options edns0
search local
我不确定如何检查 dnsmasq 状态以查看它是否正在转发到/从 DHCP 获取的 DNS 服务器地址。
在 Windows 方面,我不知道如何调试这个问题。
而且奇怪的是,就在写完这篇文章之后,Linux 方面的事情突然开始工作了:
$ nslookup windows
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: windows.local
Address: 192.168.7.100
我什么都没改!也许 10-20 分钟后问题就解决了。但 Windows 端不起作用。
解决这一问题的最佳下一步是什么?