Comment savoir quel DNS j'utilise dans Ubuntu à partir du 14.04


14

(Suivi d' une question similaire pour le 12.04 .)

Avant Ubuntu 12.04, vous pouvez voir le DNS actif dans /etc/resolv.conf. Dans Ubuntu 12.04, NetworkManager ne fonctionne plus avec le fichier. Vous devez consulter directement l'outil de ligne de commande nm-tool.

Fait intéressant, nm-tooln'est plus installé par défaut dans 14.04 et versions ultérieures. Bien que vous puissiez toujours effectuer l'installation apt-get install, vous ne pouvez pas supposer que tous les Ubuntu ont cela hors de la boîte.

La question demeure donc. Comment connaissez-vous, par défaut, le DNS que vous utilisez par ligne de commande?

Réponses:


30

Réponse rapide

Un nouvel outil NetworkManager nmcliest installé par défaut maintenant. L'outil de ligne de commande est très puissant mais un peu plus difficile à apprendre. Restez à notre question, la réponse courte est:

nmcli dev show | grep DNS

ou, pour avoir une sortie plus propre

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


Explique

Si vous avez le temps, je peux expliquer le jumbo-marmonnement ci-dessus:

  1. nmcli dev show

    Fonctionne un peu comme l'ancienne nm-toolcommande. Il élabore les informations de mise en réseau actuelles.

    Vous pouvez également apprendre le réglage d'une certaine interface en ajoutant le nom de l'interface. Par exemple, pour connaître les informations de eth0, vous pouvez utiliser nmcli dev show eth0.

  2. grep DNS

    Évidemment, ne grepez que les lignes contenant le texte "DNS".

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

    C'est uniquement pour nettoyer la sortie. Le cutpeut sélectionner la sortie par colonne, mais il ne prend qu'un seul caractère comme séparateur (alors qu'il nmcliutilise BEAUCOUP D'ESPACE). Le sedtransforme les espaces, en sortie d'origine, en TAB.


7
+1. Je ne connaissais pas cet utilitaire, cependant, j'exécute Ubuntu 14.04, et ma commande est nmcli d list. A part ça, des trucs super ici!
Terrance

1
sed a le drapeau -E pour regex étendu, permettant r+au lieu derr*
Squidly

1
Sur quelle version cette réponse est-elle basée? Sur ma version nmcli de Trusty 0.9.8.8 nmcli dev showlance de gros messages d'erreur bouclés.
Oli

5
@Oli nmcli dev showappartient à nmcli le 15.04. Pour une raison quelconque, l'ancien nmcli a été jugé instable, donc. . . maintenant, ils utilisent les nmclimêmes drapeaux que Fedora. Cela est probablement dû au passage à systemd. Et parce que cette réponse convient pour le 15.04 mais pas le 14.04, je suis fortement tenté de la déprécier
Sergiy Kolodyazhnyy

1
Je voudrais faire écho aux commentaires ci-dessus, cela peut être correct pour 15.04, mais n'est pas correct pour 14.04, ce qui est la question.
Alex

4

L'analyse de paquets serait une méthode alternative qui fonctionne indépendamment de NetworkManager ou de tout autre outil de connexion réseau que vous utilisez. L'idée de base est d'envoyer une requête DNS avec nslookupet dans un deuxième terminal pour vérifier où vont les paquets.

Pour cela, nous devons nous connecter au réseau pour la première fois, afin qu'il n'y ait rien d'encombrer les connexions, et exécuter la commande suivante:

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

Dans une autre exécution de terminal:

nslookup google.com 

Une fois que vous obtenez la liste des paquets de la tcpdump, vérifiez où vont-ils à partir de votre adresse IP.

Par exemple,

$ 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)

Comme vous pouvez le voir, mon ordinateur portable eagleenvoie des paquets au DNS de mon université b.resolvers.Level3.net.domain. Si vous voulez voir l'adresse IP, vous pouvez utiliser l' -nindicateur avec tcpdump.

Par exemple:

$ 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)

2

vérifiez vos connexions réseau:

ls /etc/NetworkManager/system-connections/

et choisissez la connexion que vous souhaitez configurer.

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

Remplacez "Internet" sans votre nom de connexion


L'utilisation peut encore utiliser nm-tool:

nm-tool | grep DNS

Installez-le pour U14.04 et versions ultérieures à l'aide

sudo apt-get install nm-tool

exemple:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1

1

Il est toujours disponible par défaut sur la version 14.04 car il est fourni avec le gestionnaire de réseau. Il a depuis été supprimé de network-manager (version 15.04 et ultérieure) et n'est même pas disponible via apt-get.

Pour l'instant, sur la version 15.04, vous pouvez télécharger et extraire manuellement nm-tool de l'ancien package. Exécutez les commandes suivantes.

Créez d'abord un répertoire temporaire dans lequel travailler:

cd
mkdir APTGET;cd APTGET

Ensuite, téléchargez l'ancienne version et extrayez les fichiers:

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*

Créez un nouveau répertoire:

mkdir ~/bin

(si cela dit file already exists, ignorez simplement le message et continuez).

Copiez le fichier dans le nouveau répertoire:

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

Revenez au répertoire principal et supprimez le répertoire temporaire:

cd ..
rm -R APTGET

Maintenant, définissez un alias pour nm-tool:

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

L'utilisateur actuel devrait maintenant pouvoir exécuter nm-tool depuis le terminal.


En outre, cela peut ne pas toujours fournir tous les résolveurs DNS réels que vous utilisez.

Vous pouvez aller sur DNSleaktest.com pour obtenir un rapport complet. Cliquez sur Test étendu pour obtenir un rapport complet.


1

En fait, NetworkManager utilise /etc/resolv.conf. Cependant, sur les paramètres par défaut, le serveur DNS répertorié resolv.confest 127.0.0.1, car NetworkManager utilise son propre service DNS interne pour des raisons techniques obscures qui ne sont pas pertinentes pour de nombreuses personnes. C'est pourquoi vous devez utiliser nmclipour voir quels serveurs DNS NetworkManager utilise en interne.

Cependant, il est également possible de désactiver ce comportement et de revenir à l'ancien où le serveur DNS en cours d'utilisation est répertorié dans resolv.conf. Pour ce faire, il suffit de mettre la ligne dns=dnsmasqen /etc/NetworkManager/NetworkManager.conf, et redémarrez. Pour la plupart des gens, cela ne devrait faire aucune différence au-delà du fait que le serveur DNS réel sera désormais affiché dans resolv.conf. Si vous faites partie des cas d'angle pour lesquels la modification a été introduite, cela devrait devenir apparent rapidement et vous pouvez revenir au comportement par défaut en supprimant la mise en commentaire de la ligne.


1

liste de développement nmcli | grep DNS

il produira quelque chose comme;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

La commande ci-dessus fonctionne avant Ubuntu 16.04.
Pour Ubuntu 16.04, utilisez:
nmcli dev show | grep DNS


Vous voulez probablement dire nmcli dev show, non nmcli dev list?
holmb

J'ai fait quelques recherches, il semble qu'ils aient changé la CLI entre Ubuntu 14.04 et 16.04. Fonctionne apparemment nmcli dev listen 14.04, mais pas en 16.04.
holmb

1

Si quelqu'un a la même question que moi pour Ubuntu 18.04LTS:

Liste de tous les périphériques réseau gérés via le gestionnaire de réseau:

networkctl list

Afficher la configuration d'un appareil spécifique:

networkctl status eth0

Au lieu de eth0, vous devez entrer le nom de votre périphérique réseau indiqué dans la liste précédente. S'il n'y a pas d'entrée DNS, votre carte n'a pas de serveur de noms configuré

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.