Как отладить DHCP-клиент, не использующий удаленный DNS-сервер для поиска имени хоста как в Linux, так и в Windows

Как отладить DHCP-клиент, не использующий удаленный DNS-сервер для поиска имени хоста как в Linux, так и в Windows

У меня возникли некоторые проблемы с настройкой решения 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), оба из которых подключаются к коммутатору и получают IP-адрес через DHCP. Я могу полностью пинговать между каждым клиентом и интерфейсом управления коммутатором, а также между собой. Я также проверил записи 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без проблем - имя разрешается.

Проблема в том, что ни на ноутбуке с Linux, ни на ноутбуке с Windows не происходит ответа, когда я отправляю команду ping из 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, чтобы узнать, пересылает ли он пакеты на адрес DNS-сервера, полученный DHCP, или с него.

Что касается 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 не работает.

Какой следующий шаг будет наилучшим для выяснения этого вопроса?

Связанный контент