Descubra el servidor DNS para una conexión DHCP en Linux

15

Sé que están definidos /etc/resolv.conf, pero ¿y si no está allí? Y más específicamente, ¿cómo encuentra el servidor DNS devuelto por DHCP?

En GNOME puede usar el applet NetworkManager para ver el DNS primario para cualquier conexión, entonces, ¿cómo haría lo mismo desde la línea de comandos?

Ivan
fuente

Respuestas:

22

Por lo general, el archivo dhclient.leases se encuentra en /var/lib/dhcp3/dhclient.leases, escriba el siguiente comando:

less /var/lib/dhcp3/dhclient.leases

O

cat /var/lib/dhcp3/dhclient.leases

O

Puede usar el comando grep para obtener la dirección del servidor DHCP, ingrese:

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

O

dhclient eth0

KPWINC
fuente
¡Muchas gracias! En caso de que alguien busque esto, el archivo IPCop se encuentra en /var/ipcop/dhcpc/dhcpcd-*.info
Ivan
Esto es específico de un cliente DHCP pero hay otros (como la bomba).
bortzmeyer
1
Corrí ps aux | grep dhclienty descubrí que mi archivo de arrendamientos estaba configurado /var/run/dhclient.eth0.leasescon la -lfopción.
Roger Dueck
8

Recientemente tuve este problema donde mi dhcpcdestaba mal configurado ya que no estaba configurando servidores DNS. Descubrí que puedo consultar qué servidores de nombres están disponibles por DHCP con el siguiente comando:

sudo dhcpcd -o domain_name_servers -T

El comando generará un montón de información de conexión de red. Busque la línea que comienza con new_domain_name_servers.

Desde aquí pude configurar manualmente los servidores de nombres.

Russell O'Connor
fuente
2
Perfecto. Esta debería ser la respuesta aceptada, jeje.
drumfire
1
Esta fue también la solución que funcionó para mí.
Vidia
¿por qué -oes necesario cambiar si se vuelcan todas las mismas opciones -Tsolo?
3

Encontré mi información de arrendamiento de DHCP /var/lib/dhclient/dhclient-eth0.leasesen caso de que alguien no pueda encontrarla en/var/lib/dhcp3/dhclient.leases

Darryl Hein
fuente
2

bueno, ¿por qué no simplemente cavar eso?

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

mira las últimas líneas :; SERVIDOR: 192.168.1.15 # 53 (192.168.1.15)

Marcus Spiegel
fuente
Estaba pensando lo mismo originalmente, pero no creo que eso muestre TODOS los servidores DNS asignados, ¿verdad? Creo que dig solo devuelve el que usó para esa búsqueda en particular. En la segunda mirada, el póster no especificó, así que si está contento con él, entonces su respuesta es definitivamente la más fácil. :-)
KPWINC
sí, tiene razón, la salida solo muestra los dns utilizados por esa consulta ... para que pueda ver lo que realmente está sucediendo. Encontré su solución bien para descubrir qué debería suceder, gracias por eso :-)
Marcus Spiegel
Eso no era exactamente lo que estaba buscando, pero gracias de todos modos.
Ivan
1
Cuando ningún servidor DNS responde, dig no muestra ninguna información útil, ¿es posible que escupe los servidores DNS que intentó preguntar?
Ivan
Entonces, después de RingTFM, veo que solo usa lo que está en /etc/resolv.conf
Ivan
1

Si no hay nada en /etc/resolv.conf, la resolución DNS (es decir, la resolución usando dns como se define en /etc/nsswitch.conf) no funcionará. Esto es lo que usan las rutinas dig, host y libc para hacer la resolución DNS. Si no se especifica nada en este archivo, la resolución de DNS no funcionará (aunque la resolución de host puede funcionar por otros medios, si se configura otro método de resolución de host, como NIS (esto es poco probable)).

BrianEss
fuente
1

este comando muestra el servidor DNS en su red

cavar | grep SERVIDOR: | awk -F # '{print $ 1}' | awk -F: '{print $ 2}'

172.17.0.1

mario.q59
fuente
Esto responde la pregunta. De hecho, es menos confiable que el enfoque que el OP menciona en la pregunta, que es simplemente leerlo /etc/resolv.conf. Después de todo, dig también leerá /etc/resolv.confy luego (intenta) comunicarse con el servidor antes de producir cualquier salida.
kasperd
0

Leer /etc/resolv.conf. Eso es todo.

man resolv.conf También es útil.

bortzmeyer
fuente
a menos que él dijo qué hacer si es que no existe ..
Warren
1
Sí, pero ignoré este punto, lo que no tiene sentido. Como el solucionador de libc usa resolv.conf, tiene que estar allí.
bortzmeyer
0

En distribuciones modernas se ve como

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

donde 91.193.220.7 es el servidor DNS de mi 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
desarrollador junior ruby
fuente
0

Una solución más para consultar el servidor DHCP:

sudo nmap --script broadcast-dhcp-discover

La salida le dice el servidor de nombres ofrecido por el servidor 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
estibordo
fuente