Scopri il server DNS per una connessione DHCP in Linux


15

So che sono definiti in /etc/resolv.conf, ma cosa succede se non è lì? E più specificamente, come si trova il server DNS restituito da DHCP?

In GNOME è possibile utilizzare l'applet NetworkManager per visualizzare il DNS primario per qualsiasi connessione, quindi come si farebbe lo stesso dalla riga di comando?

Risposte:


22

Di solito il file dhclient.leases si trova in /var/lib/dhcp3/dhclient.leases, digitare il comando seguente:

less /var/lib/dhcp3/dhclient.leases

O

cat /var/lib/dhcp3/dhclient.leases

O

Puoi semplicemente usare il comando grep per ottenere l'indirizzo del server DHCP, inserisci:

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

O

dhclient eth0


Grazie mille! Se qualcuno lo cerca, il file IPCop si trova su /var/ipcop/dhcpc/dhcpcd-*.info
Ivan,

Questo è specifico di un client DHCP ma ce ne sono altri (come pump).
Bortzmeyer,

1
Ho corso ps aux | grep dhcliente ho scoperto che il mio file di leasing era impostato su /var/run/dhclient.eth0.leasescon l' -lfopzione.
Roger Dueck,

8

Recentemente ho avuto questo problema in cui il mio dhcpcdera configurato male perché non stavo impostando i server DNS. Ho scoperto che posso interrogare quali nameserver sono disponibili da DHCP con il seguente comando:

sudo dhcpcd -o domain_name_servers -T

Il comando genererà un mucchio di informazioni sulla connessione di rete. Cerca la riga che inizia con new_domain_name_servers.

Da qui sono stato in grado di impostare manualmente i nameserver.


2
Perfetto. Questa dovrebbe essere la risposta accettata, hehe.
drumfire

1
Questa è stata anche la soluzione che ha funzionato per me.
Vidia,

perché -opassare è necessario se scarica tutte le stesse opzioni con -Tsolo?

3

Ho trovato le informazioni sul mio lease DHCP /var/lib/dhclient/dhclient-eth0.leasesnel caso in cui nessuno le trovi/var/lib/dhcp3/dhclient.leases


2

bene, perché non semplicemente scavare quello?

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

guarda le ultime righe: ;; SERVER: 192.168.1.15 # 53 (192.168.1.15)


Inizialmente stavo pensando la stessa cosa, ma non è che ciò mostrerebbe TUTTI i server DNS assegnati, vero? Penso che scavare restituisca solo quello usato per quella particolare ricerca. A una seconda occhiata, il poster non ha specificato, quindi se è soddisfatto, la tua risposta è sicuramente la più semplice. :-)
KPWINC,

Sì, hai ragione, l'output mostra solo i DNS utilizzati da quella query ... in modo da poter vedere cosa sta realmente accadendo. Ho trovato la tua soluzione perfetta per capire cosa dovrebbe succedere, la tua per quello :-)
Marcus Spiegel,

Non era esattamente quello che cercavo, ma grazie comunque.
Ivan,

1
Quando nessun server DNS risponde, lo scavo non mostra alcuna informazione utile, è possibile sputare i server DNS che ha cercato di chiedere?
Ivan,

Quindi dopo RingTFM, vedo che usa solo tutto ciò che è su /etc/resolv.conf
Ivan,

1

Se non c'è nulla in /etc/resolv.conf, la risoluzione DNS (ovvero la risoluzione che utilizza dns come definito in /etc/nsswitch.conf) non funzionerà. Questo è ciò che le routine di scavo, host e libc usano per fare la risoluzione DNS. Se non viene specificato nulla in questo file, la risoluzione DNS non funzionerà (sebbene la risoluzione dell'host possa funzionare in altri modi, se è configurato un altro metodo di risoluzione dell'host, come NIS (è improbabile)).


1

questo comando mostra il server DNS sulla tua rete

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

172.17.0.1


Questo risponde alla domanda. In effetti, è meno affidabile dell'approccio menzionato dal PO nella domanda, che è semplicemente leggerlo /etc/resolv.conf. Dopo tutto anche lo scavo sta per leggere /etc/resolv.confe quindi (provare a) comunicare con il server prima di produrre qualsiasi output.
Kasperd,

0

Leggi /etc/resolv.conf. È tutto.

man resolv.conf è utile anche.


tranne che ha detto cosa fare se non è lì ..
Warren,

1
Sì, ma ho ignorato questo punto, il che non ha senso. Dato che il risolutore libc usa resolv.conf, deve esserci.
bortzmeyer,

0

Nelle distribuzioni moderne sembra

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;
}

dove 91.193.220.7 è il server DNS del mio ISP

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

0

Un'altra soluzione per interrogare il server DHCP:

sudo nmap --script broadcast-dhcp-discover

L'output indica il server dei nomi offerto dal server DHCP:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.