如何在 Linux 和 Windows 上偵錯不使用遠端 DNS 伺服器進行主機名稱查找的 DHCP 用戶端

如何在 Linux 和 Windows 上偵錯不使用遠端 DNS 伺服器進行主機名稱查找的 DHCP 用戶端

我在設定 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 ubuntuping 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 伺服器位址/從 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端無法運作。

解決這個問題的最佳下一步是什麼?

相關內容