L'adresse du serveur DNS n'est plus stockée dans resolv.conf; où est-il maintenant?

14

Je change parfois de serveur DNS, en utilisant l'indicateur NetworkManager dans la barre des tâches; cela a bien fonctionné avec les versions précédentes, et fonctionne également très bien avec 12.04, sauf pour une chose: j'utilise Conky pour afficher certaines informations système, y compris l'adresse DNS, et j'ai remarqué qu'il s'affiche désormais toujours 127.0.0.1.

J'ai regardé resolv.confdedans, c'est là qu'elle obtient cette adresse, et bien sûr, c'est ce qu'elle dit toujours. J'ai une seule ligne, avec l'avertissement de ne pas modifier le fichier à la main:

nameserver 127.0.0.1

La seule façon que je connaisse pour vérifier l'adresse du serveur DNS maintenant est d'ouvrir l'interface graphique du gestionnaire de réseau pour vérifier la page d'informations. Alors, où sont stockées ces informations maintenant?

Marty Fried
la source

Réponses:

17

Les informations sont gérées en interne par Network Manager. Vous pouvez obtenir ces informations sur la ligne de commande à l'aide de l' nmclioutil inclus .

Vous pouvez récupérer les informations de Network Manager pour une interface réseau particulière avec la commande suivante:

nmcli dev list iface eth0

(remplacez eth0par l'interface avec laquelle vous vous connectez). La sortie comprendra des informations sur l'interface et la connexion actuellement active sur cette interface:

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

Il ne devrait pas être trop difficile d'extraire les informations que vous recherchez de cette sortie.

Si vous avez besoin d'une méthode programmatique d'accès à ces données qui ne dépend pas de la sortie de nmcli, ces informations doivent également être disponibles à partir de l'interface D-Bus de Network Manager.

James Henstridge
la source
Merci beaucoup, ce sont d'excellentes informations. Il devrait être assez facile de créer un script shell simple à l'aide de cette nmclicommande pour répertorier divers paramètres intéressants. Je peux peut-être préparer quelque chose d'utile et partager quelque part. Je ne pensais pas vraiment que Network Manager était nécessaire, et je suppose qu'il peut y avoir d'autres façons pour quelqu'un de le faire, mais cela fonctionne pour moi.
Marty Fried
Eh bien, vous pouvez voir que le serveur qui écoute 127.0.0.1est une instance de dnsmasqNetwork Manager démarrée (voir la sortie de sudo netstat -tlnp). Mais il est préférable de considérer cela comme un détail d'implémentation et de demander au gestionnaire de réseau les informations que vous souhaitez, car c'est lui qui prend la décision ici.
James Henstridge
Merci d'avoir fourni de si bonnes informations. Et, merci aussi d'avoir édité ma question - je vais essayer de prendre plus de temps à l'avenir. :) Mon excuse est que je venais de passer à la version 12.04 et que j'éteignais de petits feux sur plusieurs fronts. :)
Marty Fried
4
nmcli dev list ifacene fonctionne pas pour moi mais nmcli dev showfonctionne [ubuntu 15.04]
Beni Cherniavsky-Paskin
10

Les développeurs Ubuntu devraient documenter ces changements /etc/resolv.conf, mais ne l'ont pas fait.

Voici une liste de commandes rapides pour vous aider à démarrer.

  1. Afficher les serveurs DNS actuels

    nm-tool | grep DNS
    
  2. Définissez un serveur DNS statique dans /etc/dhcp/dhclient.conf. Ajoutez la ligne suivante et redémarrez le résolveur local:

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    À partir de l'invite de commande:

    invoke-rc.d network-manager restart
    
cmcginty
la source
Un peu plus de documentation: resolvconf (8), /usr/share/doc/resolvconf/README.gz.
jdthood
4

Sachez que l'utilisation de nmcli ne vous donnera pas toujours la réponse complète. Par exemple, si vous utilisez openconnect (ou vpnc, vraisemblablement) pour démarrer un VPN, et si vous avez installé le paquet resolvconf (pour gérer automatiquement /etc/resolv.conf), vous constaterez qu'il peut toujours insérer automatiquement le Paramètres DNS du VPN dans /etc/resolv.conf avant 127.0.0.1. Dans ce cas, le simple fait de vérifier (par exemple) "nmcli -f IP4 dev list" ne vous donnera pas la véritable liste DNS actuelle. Je ne sais pas si ce scénario vous affecte, mais a pensé qu'il valait la peine d'être mentionné.

agd
la source
Merci pour l'info supplémentaire; c'est toujours bon d'en savoir plus. Pour mon cas d'utilisation, je n'aurai pas à m'en soucier, car je veux principalement savoir simplement laquelle des deux adresses DNS possibles est active.
Marty Fried
Si vous utilisez networkmanager pour vous connecter à un VPN, quelle commande devrait vous donner le DNS? Les DNS fonctionnent mais je ne les trouve pas.
Jorge Suárez de Lis