
У меня возникли некоторые проблемы с настройкой решения 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 не работает.
Какой следующий шаг будет наилучшим для выяснения этого вопроса?