DNS-Serveradresse nicht mehr in der resolv.conf gespeichert; wo ist es jetzt?

14

Manchmal wechsle ich den DNS-Server mithilfe der NetworkManager-Anzeige in der Taskleiste. Dies hat in früheren Versionen einwandfrei funktioniert und funktioniert auch in Version 12.04, abgesehen von einer Sache: Ich verwende Conky, um einige Systeminformationen anzuzeigen, einschließlich der DNS-Adresse, und ich habe festgestellt, dass diese nun immer angezeigt werden 127.0.0.1.

Ich habe reingeschaut resolv.conf, woher diese Adresse kommt, und das steht immer. Ich habe eine einzelne Zeile mit der Warnung, die Datei nicht von Hand zu bearbeiten:

nameserver 127.0.0.1

Die einzige Möglichkeit, die DNS-Serveradresse jetzt zu überprüfen, besteht darin, die Benutzeroberfläche des Netzwerkmanagers zu öffnen, um die Infoseite zu überprüfen. Wo werden diese Informationen nun gespeichert?

Marty Fried
quelle

Antworten:

17

Die Informationen werden intern von Network Manager verwaltet. Sie können diese Informationen über die Befehlszeile mit dem mitgelieferten nmcliTool abrufen.

Mit dem folgenden Befehl können Sie die Network Manager-Informationen für eine bestimmte Netzwerkschnittstelle abrufen:

nmcli dev list iface eth0

(Ersetzen Sie diese eth0durch die Schnittstelle , mit der Sie eine Verbindung herstellen). Die Ausgabe enthält Informationen zur Schnittstelle und zur derzeit aktiven Verbindung auf dieser Schnittstelle:

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

Es sollte nicht allzu schwierig sein, die gewünschten Informationen aus dieser Ausgabe zu extrahieren.

Wenn Sie eine programmgesteuerte Methode für den Zugriff auf diese Daten benötigen, die nicht auf der Ausgabe von nmclibasiert, sollten diese Informationen auch über die D-Bus-Schnittstelle von Network Manager verfügbar sein.

James Henstridge
quelle
Vielen Dank, das sind großartige Informationen. Es sollte ziemlich einfach sein, mit diesem nmcliBefehl ein einfaches Shell-Skript zu erstellen, um verschiedene interessante Parameter aufzulisten. Vielleicht kann ich etwas Nützliches aufpeitschen und irgendwo teilen. Ich habe nicht wirklich gedacht, dass Network Manager erforderlich ist, und ich nehme an, dass es für jemanden andere Möglichkeiten gibt, dies zu tun, aber das funktioniert für mich.
Marty Fried
Nun, Sie können sehen, dass der abhörende Server 127.0.0.1eine dnsmasqvon Network Manager gestartete Instanz ist (siehe Ausgabe von sudo netstat -tlnp). Es ist jedoch am besten, dies als Implementierungsdetail zu betrachten und Network Manager nach den gewünschten Informationen zu fragen, da hier die Entscheidung getroffen wird.
James Henstridge
Vielen Dank für die Bereitstellung so guter Informationen. Und danke, dass Sie meine Frage bearbeitet haben - ich werde versuchen, mir in Zukunft mehr Zeit zu nehmen. :) Meine Entschuldigung ist, dass ich gerade ein Upgrade auf 12.04 durchgeführt habe und an mehreren Fronten kleine Feuer gelöscht habe. :)
Marty Fried
4
nmcli dev list ifacefunktioniert nicht für mich, aber nmcli dev showtut [ubuntu 15.04]
Beni Cherniavsky-Paskin
10

Ubuntu-Entwickler sollten diese Änderungen in dokumentieren, müssen dies /etc/resolv.confaber nicht.

Hier ist eine Liste von Schnellbefehlen, mit denen Sie loslegen können.

  1. Zeigt die aktuellen DNS-Server an

    nm-tool | grep DNS
    
  2. Definieren Sie einen statischen DNS-Server in /etc/dhcp/dhclient.conf. Fügen Sie die folgende Zeile hinzu und starten Sie den lokalen Resolver neu:

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

    An der Eingabeaufforderung:

    invoke-rc.d network-manager restart
    
cmcginty
quelle
Weitere Dokumentation: resolvconf (8), /usr/share/doc/resolvconf/README.gz.
Jdthood
4

Beachten Sie, dass die Verwendung von nmcli möglicherweise nicht immer die vollständige Antwort liefert. Wenn Sie zum Beispiel openconnect (oder vermutlich vpnc) verwenden, um ein VPN zu starten, und wenn Sie das resolvconf-Paket installiert haben (um die automatische Verwaltung von /etc/resolv.conf zu gewährleisten), können Sie feststellen, dass das weiterhin automatisch eingefügt werden kann VPNs DNS-Einstellungen in /etc/resolv.conf vor 127.0.0.1. Wenn Sie in diesem Fall nur "nmcli -f IP4 dev list" (z. B.) überprüfen, erhalten Sie nicht die aktuelle DNS-Liste. Ich bin mir nicht sicher, ob Sie von diesem Szenario betroffen sind, habe es aber für erwähnenswert befunden.

agd
quelle
Danke für die extra Info; Es ist immer gut, mehr zu lernen. Für meinen Anwendungsfall muss ich mir keine Sorgen machen, da ich hauptsächlich nur wissen möchte, welche von zwei möglichen DNS-Adressen aktiv ist.
Marty Fried
Wenn Sie den Netzwerkmanager verwenden, um eine Verbindung zu einem VPN herzustellen, welcher Befehl sollte Ihnen den DNS geben? Die DNS arbeiten, aber ich kann sie nicht finden.
Jorge Suárez de Lis