Línea de comandos para enumerar los servidores DNS utilizados por mi sistema

¿Existe un comando para enumerar los servidores DNS que utiliza mi sistema?

Lo intenté

$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 127.0.0.1$ cat /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopback

Pero no enumera ningún servidor, si voy a "Herramienta GUI de Network Manager", en la sección Inalámbrica enumera "DNS 192.168.1.1 8.8.8.8 8.8.4.4"

¿Puedo obtener la misma información desde la línea de comandos?

Estoy usando Ubuntu 12.04 LTS

resolv.conf ya no se usa realmente, a menos que lo implemente usted mismo. El administrador de red lo hace ahora. Creé un alias para enumerar los servidores DNS de mi sistema, ya que a veces cambio de OpenDNS a open DNS de Google.

>Ubuntu = 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu <= 14

nmcli dev list iface <interfacename> | grep IP4

En mi caso, <interfacename> ser eth0, lo cual es común, pero no siempre es el caso.

Mira si esto es lo que quieres.

EDITAR:

Creo que resolv.conf en realidad se usa indirectamente, porque el administrador de red crea el servidor que escucha en 127.0.0.1, pero me dijeron que este es un detalle de implementación con el que no se debe contar. Creo que si ingresa direcciones DNS antes de esta entrada, podrían usarse, pero no estoy seguro exactamente de cómo funciona esto. Creo que es mejor usar el administrador de red en la mayoría de los casos, cuando sea posible.

En Ubuntu 18.04 y 20.04 puedes usar systemd-resolve --status

Esto es válido para Ubuntu 13.10 y versiones anteriores. Para Ubuntu 14.04 y superior, consulte Respuesta de Koala Yeung a: Cómo saber qué DNS estoy usando en Ubuntu a partir de 14.04


Utilizar

nm-tool

Obtendrá una salida similar a

NetworkManager ToolState: connected (global)- Device: eth0  [Wired connection 1] -------------------------------------------  Type:              Wired  Driver:            e1000e  State:             connected  Default:           yes  HW Address:        00:11:22:33:44:55  Capabilities:    Carrier Detect:  yes    Speed:           1000 Mb/s  Wired Properties    Carrier:         on  IPv4 Settings:    Address:         10.21.6.13    Prefix:          24 (255.255.255.0)    Gateway:         10.21.6.1    DNS:             10.22.5.133    DNS:             10.22.5.3

O para ver solo lo que hacen los DNS

nm-tool | grep DNS

Las dos respuestas con mayor puntuación, nmcli dev list iface <interfacename> | grep IP4 y nm-tool ambos asumen que el administrador de red tiene el control. Lo que es , en máquinas de escritorio la mayor parte del tiempo al menos. Pero la respuesta más completa es que a veces el administrador de red no tiene el control. P. ej. vpnc se mete con /etc/resolv.conf directamente.

Entonces: Primero verifique si se usa 127.0.0.1 / localhost. Esto se puede hacer con dig:

> dig something.unknown  | grep SERVER:;; SERVER: 127.0.0.1#53(127.0.0.1)

Ahora sabes que nosotros ser usando localhost. Sigue adelante con una de las respuestas populares. Me gusta:

> nm-tool | grep DNS:    DNS:             8.8.8.8

Pero si 127.0.0.1/localhost es ni usado, entonces nm-tool's y nmclila salida de 's será engañosa:

> dig something.unknown  | grep SERVER:;; SERVER: 172.22.216.251#53(172.22.216.251)> nm-tool | grep DNS:    DNS:             8.8.8.8

Aqui, dig es correcto y nm-toolla información es engañosa. En realidad, las direcciones locales del entorno en el que me he conectado a la VPN se resuelven correctamente. Todos los cuales son DNS de Google 8.8.8.8 no saber sobre.

Esto se debe a que después de conectarse a una VPN con vpnc, pone una línea en /etc/resolv.conf así que parece:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 1.2.3.4nameserver 127.0.0.1search MyDomain

cat /etc/resolv.conf debería mostrar sus servidores DNS.

Usted no puede modificar el resolv.conf directamente con Ubuntu 12.04. Sin embargo, si necesita cambiarlos, puede agregar nuevos servidores DNS en su /etc/network/interfaces archivo agregando lo siguiente:

 dns-nameservers x.x.x.x x.x.x.x

donde x es el servidor DNS que desea utilizar.

Si yo fuera tú, desinstalaría network-manager. En mi opinión, es un montón de basura.

Puede realizar todo lo que necesita hacer manualmente sin preocuparse por cambiar la configuración, especialmente si tiene varias NIC en la computadora.

nmcli versión 0.9.10

Puede utilizar cualquiera de estos comandos:

nmcli -t -f IP4.DNS device show eth0IP4.DNS[1]:192.168.1.1IP4.DNS[2]:8.8.8.8nmcli -t -f IP4.DNS connection show conn-nameIP4.DNS[1]:192.168.1.1IP4.DNS[2]:8.8.8.8

En Ubuntu 15.10 puedes obtener DNS

nmcli device show <interface name> 

Es increíble la cantidad de formas que hay de hacerlo. En un servidor Ubuntu 18.04, si no desea instalar nada extra como nm-tool, entonces systemd-resolve --status funcionará de inmediato para la información de DNS.

Si está interesado en obtener no solo sus servidores DNS, sino también la puerta de enlace predeterminada, la dirección IP, la máscara de red, etc., entonces netplan ip leases eth0 le dará toda esa información en un formulario fácil de leer (suponiendo que esté interesado en el eth0 interfaz).

En sistemas en los que systemd-resolved no está instalado :

$ host -v something.unknown | awk -F "[ #]" '/Received /{print$5}' | uniq192.168.1.1

En sistemas en los que NetworkManager se está ejecutando :

$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk '/DNS/{print$NF}'192.168.1.1

En Ubuntu 20.04

systemd-resolve --status | grep -B 9 -A 6 "Current DNS Server"

me dio un resultado claro en cuanto a qué DNS estaba en uso para cada adaptador que usaba DNS.

Para reconfigurar DNS

man systemd-resolved

revela que los servidores DNS con los que se contacta están determinados por la configuración global en /etc/systemd/resolved.conf.

Sudo edita ese archivo y descomenta y establece DNS= y FallbackDNS= a los servidores DNS IPv4 que desee.Por ejemplo, DNS=8.8.8.8 y FallbackDNS=8.8.4.4 usaría DNS Público de Google.Reinicie la máquina para aplicar el cambio.

@ PLA, gracias por esto respuesta lo que me llevó por este camino.

¿Qué estás tratando de encontrar? los servidores DNS que utiliza su sistema? ¿o estás intentando hacer una búsqueda de DNS?

El primero @LordofTime

Los servidores DNS de @LordofTime que utiliza mi sistema

estás usando 127.0.0.1. ¿está * ejecutando* un servidor DNS?

Véase networking - What DNS servers am I using? - Unix & Linux Stack Exchange para una versión que no sea de Ubuntu de esta pregunta