So debuggen Sie einen DHCP-Client unter Linux und Windows, der keinen Remote-DNS-Server für die Hostnamensuche verwendet

So debuggen Sie einen DHCP-Client unter Linux und Windows, der keinen Remote-DNS-Server für die Hostnamensuche verwendet

Ich habe einige Probleme beim Einrichten einer DHCP/DNS-Lösung, insbesondere damit, die Clients dazu zu bringen, den vom Router bereitgestellten DNS-Dienst zu verwenden.

Ich habe einen "EdgeRouter", den ich als Switch (Schnittstelle) eingerichtet habe switch0, mit einem DHCP-Server sowie einem Dnsmasq-Dienst zur Auflösung von DHCP-Hostnamen gemäßdieser Leitfaden

# 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

Ich habe zwei Clients – einen Ubuntu 18.04 Linux-Laptop (nennen Sie ihn ubuntu) und einen Windows 10-Laptop (nennen Sie ihn windows), die beide mit dem Switch verbunden sind und eine IP-Adresse über DHCP erhalten. Ich kann zwischen jedem Client und der Switch-Verwaltungsschnittstelle sowie untereinander einen vollständigen Ping durchführen. Ich habe auch die von jedem Client empfangenen DHCP-Einträge untersucht und überprüft, dass sie eine DNS-Serveradresse von 192.168.7.1 erhalten, was korrekt ist.

Auf dem Switch kann ich diese Leases bestätigen mit:

$ 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

Außerdem ubuntukann ich überprüfen, ob der DNS-Server auf dem Switch ordnungsgemäß funktioniert:

$ 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

Ähnliche Antwort für eine Grabung mit windows.

Wenn ich mich per SSH beim Router anmelde, ist dies möglich ping ubuntubzw. ping windowsfunktioniert problemlos – der Name wird aufgelöst.

Das Problem scheint sich weder beim Linux- noch beim Windows-Laptop zu lösen, wenn ich von Windows aus pinge:

> ping ubuntu
Ping request could not find host ubuntu. Please check the name and try again.

Oder unter Linux:

$ ping windows
ping: windows: Name or service not known

Auch vom Linux-Client:

$ nslookup windows
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find windows: SERVFAIL

So wie ich das verstehe, läuft auf meinem Linux-Laptop sein eigenes DNSMASQ und /etc/resolv.confsieht folgendermaßen aus:

nameserver 127.0.0.53
options edns0
search local

Ich bin nicht sicher, wie ich den DNSMASQ-Status überprüfen kann, um festzustellen, ob eine Weiterleitung zu/von der von DHCP erhaltenen DNS-Serveradresse erfolgt.

Auf der Windows-Seite habe ich keine Ahnung, wie ich das debuggen kann.

Und seltsamerweise funktionierte die Linux-Seite plötzlich, kurz nachdem ich dies geschrieben hatte:

$ nslookup windows
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   windows.local
Address: 192.168.7.100

Ich habe nichts geändert! Vielleicht hat sich nach 10-20 Minuten etwas von selbst ergeben. Aber die Windows-Seite funktioniert nicht.

Was wäre der beste nächste Schritt, um dies herauszufinden?

verwandte Informationen