web-dev-qa-db-fra.com

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

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

J'ai regardé dans resolv.conf, qui est l'endroit où il obtient cette adresse, et bien sûr, c'est ce qu'il dit toujours. J'ai une seule ligne, avec l'avertissement de ne pas éditer le fichier à la main:

nameserver 127.0.0.1

Le seul moyen que je connaisse pour vérifier l'adresse du serveur DNS est d'ouvrir l'interface graphique du gestionnaire de réseau pour consulter la page d'informations. Alors, où cette information est-elle stockée maintenant?

14
Marty Fried

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'outil nmcliinclus.

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

nmcli dev list iface eth0

(remplacez eth0 par 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 pour accéder à ces données qui ne repose pas sur la sortie de nmcliname__, ces informations doivent également être disponibles à partir de l'interface D-Bus de Network Manager.

17

Les développeurs Ubuntu devraient documenter ces modifications dans /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;
    

    A partir de l'invite de commande:

    invoke-rc.d network-manager restart
    
10
cmcginty

Sachez que l'utilisation de nmcli peut ne pas toujours vous donner 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 le fichier /etc/resolv.conf), vous constaterez qu'il peut toujours insérer automatiquement le VPN. Les paramètres DNS dans /etc/resolv.conf avant 127.0.0.1. Dans ce cas, le simple fait de cocher (par exemple) "Liste de développement nmcli -f IP4" ne vous donnera pas la vraie liste DNS actuelle. Je ne sais pas si ce scénario vous concerne, mais je pense que cela mérite d'être mentionné.

4
agd