Ermitteln Sie den DNS-Server für eine DHCP-Verbindung unter Linux

15

Ich weiß, dass sie in definiert sind /etc/resolv.conf, aber was ist, wenn es nicht da ist? Und genauer gesagt, wie finden Sie den von DHCP zurückgegebenen DNS-Server?

In GNOME können Sie das NetworkManager-Applet verwenden, um den primären DNS für jede Verbindung anzuzeigen. Wie würden Sie dies also über die Befehlszeile tun?

Ivan
quelle

Antworten:

22

In der Regel befindet sich die Datei dhclient.leases unter. Geben Sie /var/lib/dhcp3/dhclient.leasesden folgenden Befehl ein:

less /var/lib/dhcp3/dhclient.leases

ODER

cat /var/lib/dhcp3/dhclient.leases

ODER

Sie können einfach den Befehl grep verwenden, um die DHCP-Serveradresse abzurufen. Geben Sie Folgendes ein:

grep dhcp-server-identifier /var/lib/dhcp3/dhclient.leases

ODER

dhclient eth0

KPWINC
quelle
Vielen Dank! Falls jemand danach sucht, finden Sie die IPCop-Datei unter /var/ipcop/dhcpc/dhcpcd-*.info
Ivan
Dies ist spezifisch für einen DHCP-Client, es gibt jedoch auch andere (z. B. Pumpe).
Bortzmeyer
1
Ich lief ps aux | grep dhclientund stellte fest, dass meine Leasing-Datei /var/run/dhclient.eth0.leasesmit der -lfOption festgelegt wurde.
Roger Dueck
8

Ich hatte vor kurzem dieses Problem, in dem mein dhcpcdfalsch konfiguriert wurde, da nicht DNS-Bediener einstellten. Ich fand heraus, dass ich mit dem folgenden Befehl abfragen kann, welche Nameserver von DHCP verfügbar sind:

sudo dhcpcd -o domain_name_servers -T

Der Befehl gibt eine Reihe von Netzwerkverbindungsinformationen aus. Suchen Sie nach der Zeile, die mit beginnt new_domain_name_servers.

Von hier aus konnte ich die Nameserver manuell einstellen.

Russell O'Connor
quelle
2
Perfekt. Dies sollte die akzeptierte Antwort sein, hehe.
Trommelfeuer
1
Dies war auch die Lösung, die für mich funktioniert hat.
Vidia
wieso ist -oswitch notwendig wenn es alle gleichen optionen mit sich -Tbringt?
3

Ich habe meine DHCP-Lease-Informationen unter gefunden, /var/lib/dhclient/dhclient-eth0.leasesfalls sie unter nicht gefunden werden können/var/lib/dhcp3/dhclient.leases

Darryl Hein
quelle
2

Warum nicht einfach das ausgraben?

marcus@marcus ~ $ dig google.de

; <<>> DiG 9.4.3-P3 <<>> google.de
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27579
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 6, ADDITIONAL: 0

;; QUESTION SECTION:
;google.de.         IN  A

;; ANSWER SECTION:
google.de.      1785    IN  A   209.85.229.104
google.de.      1785    IN  A   216.239.59.104
google.de.      1785    IN  A   74.125.77.104

;; AUTHORITY SECTION:
de.         23431   IN  NS  L.DE.NET.
de.         23431   IN  NS  Z.NIC.de.
de.         23431   IN  NS  F.NIC.de.
de.         23431   IN  NS  C.DE.NET.
de.         23431   IN  NS  S.DE.NET.
de.         23431   IN  NS  A.NIC.de.

;; Query time: 1 msec
;; SERVER: 192.168.1.15#53(192.168.1.15)
;; WHEN: Thu Sep 17 19:33:39 2009
;; MSG SIZE  rcvd: 181

schau dir die letzten Zeilen an: ;; SERVER: 192.168.1.15 # 53 (192.168.1.15)

Marcus Spiegel
quelle
Ich habe ursprünglich das Gleiche gedacht, aber ich weiß nicht, dass ALLE zugewiesenen DNS-Server angezeigt werden, oder? Ich denke, dig gibt nur den zurück, der für diese bestimmte Suche verwendet wurde. Auf den zweiten Blick hat das Poster nichts angegeben. Wenn er damit zufrieden ist, ist Ihre Antwort definitiv die einfachste. :-)
KPWINC
ja sind Sie mit der rechten Ausgabe zeigt nur auf den von dieser Abfrage verwendet dns ... so kann man sehen , was ist wirklich passiert. Ich fand deine Lösung in Ordnung, um herauszufinden, was passieren sollte , deine dafür :-)
Marcus Spiegel
Das war nicht genau das, wonach ich gesucht habe, aber trotzdem danke.
Ivan
1
Wenn kein DNS-Server antwortet, zeigt dig keine nützlichen Informationen an. Ist es möglich, die DNS-Server auszuspucken, nach denen er zu fragen versucht hat?
Ivan
Nach RingTFM wird also nur das verwendet, was sich auf /etc/resolv.conf befindet
Ivan
1

Wenn in /etc/resolv.conf nichts vorhanden ist, funktioniert die DNS-Auflösung (dns-Auflösung gemäß Definition in /etc/nsswitch.conf) nicht. Dies ist, was dig, host und die libc-Routinen verwenden, um die DNS-Auflösung durchzuführen. Wenn in dieser Datei nichts angegeben ist, funktioniert die DNS-Auflösung nicht (obwohl die Hostauflösung möglicherweise auf andere Weise funktioniert, wenn eine andere Hostauflösungsmethode konfiguriert ist, z. B. NIS (dies ist unwahrscheinlich)).

BrianEss
quelle
1

Dieser Befehl zeigt den DNS-Server in Ihrem Netz

graben | grep SERVER: | awk -F # '{print $ 1}' | awk -F: '{print $ 2}'

172.17.0.1

mario.q59
quelle
Dies beantwortet die Frage. Tatsächlich ist es weniger verlässlich als der Ansatz, den das OP in der Frage erwähnt und aus dem es einfach zu lesen ist /etc/resolv.conf. Schließlich liest dig /etc/resolv.confauch aus und (versucht), mit dem Server zu kommunizieren, bevor eine Ausgabe erstellt wird.
Kasperd
0

Lesen /etc/resolv.conf. Das ist alles.

man resolv.conf ist auch nützlich.

bortzmeyer
quelle
außer er sagte, was zu tun ist, wenn es nicht da ist ..
Warren
1
Ja, aber ich habe diesen Punkt ignoriert, was keinen Sinn ergibt. Da der libc-Resolver die resolv.conf verwendet, muss diese vorhanden sein.
Bortzmeyer
0

In modernen Distributionen sieht es so aus

ps aux | grep dhcli | grep -v grep                                                    
root       367  0.0  0.0  16128  3076 ?        S    Apr30   0:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /var/run/dhclient-enp3s0.pid -lf /var/lib/NetworkManager/dhclient-324caec3-58f9-3f00-bff4-2f8bd7d2aafa-enp3s0.lease -cf /var/lib/NetworkManager/dhclient-enp3s0.conf enp3s0


tail -16 /var/lib/NetworkManager/dhclient-324caec3-58f9-3f00-bff4-2f8bd7d2aafa-enp3s0.lease
lease {
  interface "enp3s0";
  fixed-address 10.191.104.3;
  option subnet-mask 255.255.255.0;
  option routers 10.191.104.254;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 91.193.220.3,91.193.220.7;
  option dhcp-server-identifier 91.193.220.3;
  option ntp-servers 91.193.220.6;
  option broadcast-address 10.191.104.255;
  option domain-name "myISP.ru";
  renew 1 2017/05/01 12:56:02;
  rebind 2 2017/05/02 00:27:11;
  expire 2 2017/05/02 03:27:11;
}

Wobei 91.193.220.7 der DNS-Server meines ISP ist

nslookup serverfault.com 91.193.220.7
Server:     91.193.220.7
Address:    91.193.220.7#53

Non-authoritative answer:
Name:   serverfault.com
Address: 151.101.1.69
Name:   serverfault.com
Address: 151.101.65.69
Name:   serverfault.com
Address: 151.101.193.69
Name:   serverfault.com
Address: 151.101.129.69
Junior Ruby Entwickler
quelle
0

Eine weitere Lösung zum Abfragen des DHCP-Servers:

sudo nmap --script broadcast-dhcp-discover

Die Ausgabe informiert Sie über den vom DHCP-Server angebotenen Nameserver:

Starting Nmap 7.60 ( https://nmap.org ) at 2019-12-12 23:50 UTC
Pre-scan script results:
| broadcast-dhcp-discover: 
|   Response 1 of 1: 
|     IP Offered: 144.123.211.44
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 144.123.99.200
|     IP Address Lease Time: 5m00s
|     Subnet Mask: 255.255.0.0
|     Router: 144.123.99.200
|     Domain Name Server: 144.123.99.200
|_    Domain Name: localdomain
estibordo
quelle