(Un suivi de question similaire pour 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-tool
n'est plus installé par défaut dans 14.04 et les versions ultérieures. Bien que vous puissiez toujours installer via apt-get install
, vous ne pouvez pas supposer que tout Ubuntu l’a mis à disposition.
Donc la question reste. Comment savez-vous, par défaut, le DNS que vous utilisez en ligne de commande?
Un nouvel outil NetworkManager, nmcli
, est maintenant installé par défaut. L'outil en ligne de commande est très puissant mais un peu plus difficile à apprendre. Tenez-vous en à 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
Si vous avez le temps, je peux expliquer le jumbo-mumble ci-dessus:
nmcli dev show
Fonctionne un peu comme l’ancienne commande nm-tool
. Il élabore les informations de réseau actuelles.
Vous pouvez également apprendre le paramétrage d'une interface donnée en ajoutant le nom de l'interface. Par exemple, pour connaître les informations de eth0
, vous pouvez utiliser nmcli dev show eth0
.
grep DNS
Évidemment, grep ne contient que les lignes contenant le texte "DNS".
sed 's/\s\s*/\t/g' | cut -f 2
Ceci est uniquement pour nettoyer la sortie. cut
peut sélectionner la sortie par colonne, mais il ne faut qu'un seul caractère comme séparateur (alors que nmcli
utilise BEAU ESPACE). sed
transforme les espaces de la sortie d'origine en tabulation.
L'analyse des 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 nslookup
et, dans un second terminal, de vérifier où vont les paquets.
Pour cela, nous devons nous connecter au réseau pour la première fois, afin que rien ne vienne encombrer les connexions et lancer la commande suivante:
Sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com
En alternative terminal run:
nslookup google.com
Une fois que vous avez reçu la liste des paquets de tcpdump
, vérifiez où ils vont depuis 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 constater, mon ordinateur portable, eagle
, envoie des paquets au DNS de mon université, b.resolvers.Level3.net.domain
. Si vous voulez voir l'adresse IP, vous pouvez utiliser l'indicateur -n
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)
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
Utilisez peut toujours utiliser nm-tool
:
nm-tool | grep DNS
Installez-le pour U14.04 et les versions ultérieures à l'aide de
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
Il est toujours disponible par défaut sur la version 14.04 car il est fourni avec network-manager. Depuis, il a é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 paquet. Exécutez les commandes suivantes.
Tout d’abord, créez 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
(S'il indique file already exists
, ignorez simplement le message et continuez).
Copiez le fichier dans le nouveau répertoire:
cp ./usr/bin/nm-tool ~/bin
Retournez au répertoire personnel 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 à partir du terminal.
En outre, cela peut toujours ne pas fournir avec précision tous les résolveurs DNS actuels que vous utilisez.
Vous pouvez vous rendre sur DNSleaktest.com pour obtenir un rapport complet. Cliquez sur Extended Test pour obtenir un rapport complet.
nmcli dev list | 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
En réalité, NetworkManager utilise /etc/resolv.conf
. Toutefois, avec les paramètres par défaut, le serveur DNS répertorié dans resolv.conf
est 127.0.0.1
, car NetworkManager utilise son propre service DNS interne pour certains raisons techniques obscures , qui ne concernent pas de nombreuses personnes. C'est pourquoi vous devez utiliser nmcli
pour voir quels serveurs DNS sont utilisés par NetworkManager en interne.
Cependant, il est également possible de désactiver ce comportement et de revenir à l'ancien, où le serveur DNS réellement utilisé est répertorié dans resolv.conf
. Pour ce faire, commentez simplement la ligne dns=dnsmasq
dans /etc/NetworkManager/NetworkManager.conf
et redémarrez. Pour la plupart des gens, cela ne devrait faire aucune différence, mis à part le fait que le serveur DNS actuel sera maintenant affiché dans resolv.conf
. Si vous faites partie des cas critiques pour lesquels le changement a été introduit, cela devrait apparaître rapidement et vous pouvez revenir au comportement par défaut en supprimant la mise en commentaire de la ligne.