Linux 및 Windows 모두에서 호스트 이름 조회를 위해 원격 DNS 서버를 사용하지 않는 DHCP 클라이언트를 디버깅하는 방법

Linux 및 Windows 모두에서 호스트 이름 조회를 위해 원격 DNS 서버를 사용하지 않는 DHCP 클라이언트를 디버깅하는 방법

DHCP/DNS 솔루션을 설정하는 데 문제가 있습니다. 특히 클라이언트가 라우터에서 제공하는 DNS 서비스를 사용하도록 하는 데 문제가 있습니다.

DHCP 서버 와 함께 스위치(인터페이스)로 설정한 "EdgeRouter" switch0와 DHCP 호스트 이름 확인을 제공하는 Dnsmasq 서비스가 있습니다.이 가이드

# 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

On에서는 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

DHCP가 얻은 DNS 서버 주소로/에서 전달되는지 확인하기 위해 dnsmasq 상태를 확인하는 방법을 잘 모르겠습니다.

Windows 측에서는 이것을 디버깅하는 방법을 모릅니다.

그리고 이상하게도 이 글을 쓴 직후에 리눅스 쪽이 갑자기 작동하기 시작했습니다.

$ 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 쪽이 작동하지 않습니다.

이를 파악하기 위한 가장 좋은 다음 단계는 무엇입니까?

관련 정보