Cómo saber qué DNS estoy usando en Ubuntu desde 14.04 en adelante

14

(Un seguimiento a una pregunta similar para 12.04 .)

Antes de Ubuntu 12.04, puede ver el DNS activo en /etc/resolv.conf. En Ubuntu 12.04, NetworkManager ya no funciona con el archivo. Debe consultar directamente la herramienta de línea de comandos nm-tool.

Curiosamente, nm-toolya no se instala por defecto en 14.04 y posteriores. Aunque todavía puede realizar la instalación apt-get install, no puede asumir que todo Ubuntu lo tiene listo para usar.

Entonces la pregunta permanece. ¿Cómo sabe, por instalación predeterminada, el DNS que está utilizando por línea de comando?

Koala Yeung
fuente

Respuestas:

30

Respuesta rápida

nmcliAhora se instala una nueva herramienta NetworkManager de manera predeterminada. La herramienta de línea de comandos es muy poderosa pero un poco más difícil de aprender. Siga nuestra pregunta, la respuesta corta es:

nmcli dev show | grep DNS

o, para tener una salida más limpia

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2


Explique

Si tienes tiempo, puedo explicarte el gran murmullo anterior:

  1. nmcli dev show

    Funciona un poco como el antiguo nm-toolcomando. Elabora la información de red actual.

    También puede aprender la configuración de una determinada interfaz agregando el nombre de la interfaz. Por ejemplo, para conocer la información de eth0, puede usar nmcli dev show eth0.

  2. grep DNS

    Obviamente grep solo las líneas con el texto "DNS".

  3. sed 's/\s\s*/\t/g' | cut -f 2

    Esto es solo para limpiar la salida. El cutpuede seleccionar la salida de la columna, pero se necesita solamente 1 carácter como separador (mientras nmcliutiliza muchos ESPACIO). La sedgira de los espacios, de la producción original, en TAB.

Koala Yeung
fuente
77
+1. No sabía sobre esta utilidad, sin embargo, ejecuto Ubuntu 14.04, y mi comando es nmcli d list. Aparte de eso, ¡cosas geniales aquí!
Terrance
1
sed tiene la bandera -E para r+rr*
expresiones
1
¿En qué versión se basa esta respuesta? En la versión nmcli de mi Trusty 0.9.8.8 nmcli dev showarroja grandes mensajes de error rizado.
Oli
55
@Oli nmcli dev showpertenece a nmcli el 15.04. Por alguna razón, el antiguo nmcli se consideró inestable, entonces. . . ahora usan nmclique tiene las mismas banderas que Fedora. Probablemente eso se deba al cambio a systemd. Y debido a que esta respuesta se ajusta a 15.04 pero no a 14.04, me siento fuertemente tentado a rechazarla
Sergiy Kolodyazhnyy
1
Me gustaría hacer eco de los comentarios anteriores, esto puede ser correcto para 15.04, pero no es correcto para 14.04, que es la pregunta.
Alex
4

El análisis de paquetes sería un método alternativo que funciona independientemente de NetworkManager u otra herramienta de conexión de red que utilice. La idea básica es enviar una consulta dns con nslookupy en un segundo terminal verificar dónde van los paquetes.

Para eso tendríamos que conectarnos a la red por primera vez, para que no haya nada abarrotando las conexiones y ejecutar el siguiente comando:

sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  

En ejecución de terminal alternativa:

nslookup google.com 

Una vez que obtenga la lista de paquetes del tcpdump, verifique a dónde van desde su dirección IP.

Por ejemplo,

$ sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com                            
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    eagle.29862 > b.resolvers.Level3.net.domain: [udp sum ok] 64057+ [1au] A? google.com. ar: . OPT UDPsize=4096 (39)
    b.resolvers.Level3.net.domain > eagle.29862: [udp sum ok] 64057 q: A? google.com. 11/0/0 google.com. A 173.194.115.64, google.com. A 173.194.115.65, google.com. A 173.194.115.72, google.com. A 173.194.115.66, google.com. A 173.194.115.69, google.com. A 173.194.115.78, google.com. A 173.194.115.70, google.com. A 173.194.115.71, google.com. A 173.194.115.68, google.com. A 173.194.115.67, google.com. A 173.194.115.73 (204)
    eagle.16429 > b.resolvers.Level3.net.domain: [udp sum ok] 38822+ A? google.com. (28)

Como puede ver, mi computadora portátil eagleenvía paquetes a los dns de mi universidad b.resolvers.Level3.net.domain. Si desea ver la dirección IP, puede usar la -nbandera con tcpdump.

Por ejemplo:

$ sudo tcpdump -n -vv -i wlan0 -W 1200 | grep google.com                         
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    10.10.87.145.56474 > 4.2.2.2.53: [udp sum ok] 15606+ A? google.com. (28)
Sergiy Kolodyazhnyy
fuente
2

verifique sus conexiones de red:

ls /etc/NetworkManager/system-connections/

y elija la conexión que desea configurar.

 sudo cat /etc/NetworkManager/system-connections/Internet | grep dns

Reemplace "Internet" sin su nombre de conexión


El uso todavía puede usar nm-tool:

nm-tool | grep DNS

Instálelo para U14.04 y posterior usando

sudo apt-get install nm-tool

ejemplo:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1
Maythux
fuente
1

Todavía está disponible de forma predeterminada en la versión 14.04, ya que se incluye con el administrador de red. Desde entonces se ha eliminado del administrador de red (versión 15.04 y posterior) y ni siquiera está disponible a través de apt-get.

Por ahora, en la versión 15.04, puede descargar y extraer la herramienta nm del paquete anterior manualmente. Ejecute los siguientes comandos.

Primero, cree un directorio temporal para trabajar en:

cd
mkdir APTGET;cd APTGET

Luego, descargue la versión anterior y extraiga los archivos:

wget 'http://us.archive.ubuntu.com/ubuntu/pool/main/n/network-manager/network-manager_0.9.8.8-0ubuntu7.1_amd64.deb'
ar xvf *
tar xvf dat*

Crea un nuevo directorio:

mkdir ~/bin

(si dice file already exists, simplemente ignore el mensaje y continúe).

Copie el archivo al nuevo directorio:

cp ./usr/bin/nm-tool ~/bin

Regrese al directorio de inicio y elimine el directorio temporal:

cd ..
rm -R APTGET

Ahora, establezca un alias para nm-tool:

cp ~/.bashrc ~/.bashback
echo 'alias nm-tool="~/bin/nm-tool"' | tee -a ~/.bashrc;. ~/.bashrc

El usuario actual ahora debería poder ejecutar nm-tool desde el terminal.


Además, esto aún puede no proporcionar con precisión todos los solucionadores DNS reales que está utilizando.

Puede ir a DNSleaktest.com para obtener un informe completo. Haga clic en Prueba Extendida para obtener un informe completo.

mchid
fuente
1

En realidad, NetworkManager sí usa /etc/resolv.conf. Sin embargo, en la configuración predeterminada, el servidor DNS enumerado resolv.confes 127.0.0.1porque NetworkManager utiliza su propio servicio DNS interno por algunas razones técnicas poco claras que no son relevantes para muchas personas. Es por eso que debe usar nmclipara ver qué servidores DNS usa NetworkManager internamente.

Sin embargo, también es posible deshabilitar este comportamiento y volver al anterior donde se enumera el servidor DNS en uso resolv.conf. Para ello, basta con comentar la línea dns=dnsmasqen /etc/NetworkManager/NetworkManager.conf, y reiniciar el sistema. Para la mayoría de las personas, esto no debería hacer ninguna diferencia más allá del hecho de que ahora se mostrará el servidor DNS real resolv.conf. Si se encuentra entre los casos de esquina para los que se introdujo el cambio, esto debería ser evidente rápidamente, y puede volver al comportamiento predeterminado descomentando la línea nuevamente.

fkraiem
fuente
1

lista de desarrollo nmcli | grep DNS

producirá algo como;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

El comando anterior funciona antes de Ubuntu 16.04
Para el uso de Ubuntu 16.04:
nmcli dev show | grep DNS

Komu
fuente
Probablemente quieras decir nmcli dev show no nmcli dev list?
holmb
Investigué un poco, parece que cambiaron la CLI entre Ubuntu 14.04 y 16.04. Aparentemente nmcli dev listfunciona en 14.04, pero no en 16.04.
holmb
1

Si alguien tiene la misma pregunta que yo para Ubuntu 18.04LTS:

Enumere todos los dispositivos de red administrados a través del administrador de red:

networkctl list

Mostrar configuración de dispositivo específico:

networkctl status eth0

En lugar de eth0, debe ingresar el nombre de su dispositivo de red que se muestra en la lista anterior. Si no hay entrada de DNS, su tarjeta no tiene un servidor de nombres configurado

Ronny Kaufmann
fuente