Woher weiß ich, welchen DNS ich in Ubuntu ab 14.04 verwende?


14

(Ein Follow-up zu einer ähnlichen Frage für den 12.04 .)

Vor Ubuntu 12.04 wurde möglicherweise das aktive DNS in angezeigt /etc/resolv.conf. In Ubuntu 12.04 funktioniert NetworkManager nicht mehr mit der Datei. Sie müssen sich direkt an das Kommandozeilen-Tool wenden nm-tool.

Interessanterweise nm-toolwird in 14.04 und höher nicht mehr standardmäßig installiert. Obwohl Sie möglicherweise immer noch durch installieren apt-get install, können Sie nicht davon ausgehen, dass alle Ubuntu-Systeme dies standardmäßig tun.

Die Frage bleibt also. Woher wissen Sie bei der Standardinstallation, welchen DNS Sie über die Befehlszeile verwenden?

Antworten:


30

Schnelle Antwort

nmcliStandardmäßig wird jetzt ein neues NetworkManager-Tool installiert. Das Kommandozeilen-Tool ist sehr mächtig, aber etwas schwerer zu erlernen. Halten Sie sich an unsere Frage, die kurze Antwort lautet:

nmcli dev show | grep DNS

oder, um eine sauberere Ausgabe zu erzielen

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


Erklären

Wenn Sie Zeit haben, kann ich das obige Jumbo-Murmeln erklären:

  1. nmcli dev show

    Funktioniert ein bisschen wie der alte nm-toolBefehl. Es erarbeitet die aktuellen Netzwerkinformationen.

    Sie können die Einstellung einer bestimmten Schnittstelle auch lernen, indem Sie den Schnittstellennamen hinzufügen. Um beispielsweise die Informationen von zu erfahren eth0, können Sie verwenden nmcli dev show eth0.

  2. grep DNS

    Offensichtlich grep nur die Zeilen mit dem Text "DNS".

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

    Dies dient nur zum Aufräumen der Ausgabe. Sie cutkönnen die Ausgabe nach Spalte auswählen, es wird jedoch nur 1 Zeichen als Trennzeichen verwendet (während nmcliMANY SPACE verwendet wird). Das sedverwandelt die Leerzeichen in der Originalausgabe in TAB.


7
+1. Ich wusste nichts über dieses Dienstprogramm, aber ich starte Ubuntu 14.04 und mein Befehl lautet nmcli d list. Davon abgesehen, tolles Zeug hier!
Terrance

1
sed hat das -E Flag für Extended Regex, erlaubt r+stattrr*
Squidly

1
Auf welcher Version basiert diese Antwort? In der nmcli-Version meines Trusty 0.9.8.8 nmcli dev showwerden große, lockige Fehlermeldungen ausgegeben .
Oli

5
@Oli nmcli dev showgehört zu nmcli am 15.04. Aus irgendeinem Grund galt die alte NMPI als instabil. . . Jetzt benutzen sie nmclidie gleichen Flags wie Fedora. Wahrscheinlich liegt das an der Umstellung auf systemd. Und weil diese Antwort für den 15.04, aber nicht für den 14.04 passt, bin ich stark versucht, sie abzustimmen
Sergiy Kolodyazhnyy

1
Ich möchte die obigen Kommentare wiederholen, dies mag für den 15.04 zutreffen, ist aber für den 14.04 nicht zutreffend, was die Frage ist.
Alex

4

Die Paketanalyse ist eine alternative Methode, die unabhängig von NetworkManager oder einem anderen von Ihnen verwendeten Netzwerkverbindungstool funktioniert. Grundlegende Idee ist es, eine DNS-Abfrage mit nslookupund in einem zweiten Terminal zu senden, um zu überprüfen, wohin die Pakete gehen.

Dafür müssten wir uns zum ersten Mal mit dem Netzwerk verbinden, damit die Verbindungen nicht überladen werden, und den folgenden Befehl ausführen:

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

Im alternativen Terminalbetrieb:

nslookup google.com 

Wenn Sie eine Liste der Pakete von erhalten haben tcpdump, überprüfen Sie, wo diese von Ihrer IP-Adresse hingehen.

Beispielsweise,

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

Wie Sie sehen, eaglesendet mein Laptop Pakete an die DNS meiner Universität b.resolvers.Level3.net.domain. Wenn Sie die IP-Adresse sehen möchten, können Sie das -nFlag mit verwenden tcpdump.

Beispielsweise:

$ 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

Überprüfen Sie Ihre Netzwerkverbindungen:

ls /etc/NetworkManager/system-connections/

und wählen Sie die Verbindung aus, die Sie konfigurieren möchten.

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

Ersetzen Sie "Internet" ohne Ihren Verbindungsnamen


Gebrauch kann noch verwenden nm-tool:

nm-tool | grep DNS

Installieren Sie es für U14.04 und höher mit

sudo apt-get install nm-tool

Beispiel:

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

1

Es ist weiterhin standardmäßig in Version 14.04 verfügbar, da es mit Network-Manager gebündelt ist. Es wurde von Network-Manager (Version 15.04 und höher) entfernt und ist nicht einmal über apt-get verfügbar.

Ab Version 15.04 können Sie das nm-tool zunächst manuell aus dem alten Paket herunterladen und extrahieren. Führen Sie die folgenden Befehle aus.

Erstellen Sie zunächst ein temporäres Verzeichnis, in dem Sie arbeiten können:

cd
mkdir APTGET;cd APTGET

Laden Sie dann die alte Version herunter und extrahieren Sie die Dateien:

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*

Erstelle ein neues Verzeichnis:

mkdir ~/bin

(Wenn es heißt file already exists, ignorieren Sie einfach die Nachricht und fahren Sie fort).

Kopieren Sie die Datei in das neue Verzeichnis:

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

Kehren Sie zum Ausgangsverzeichnis zurück und löschen Sie das temporäre Verzeichnis:

cd ..
rm -R APTGET

Legen Sie nun einen Alias ​​für das nm-tool fest:

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

Der aktuelle Benutzer sollte nun in der Lage sein, nm-tool vom Terminal aus auszuführen.


Darüber hinaus kann dieses noch nicht genau alle bieten tatsächlichen DNS - Resolver Sie verwenden.

Sie können zu DNSleaktest.com gehen , um einen vollständigen Bericht zu erhalten. Klicken Sie auf Erweiterter Test , um einen vollständigen Bericht zu erhalten.


1

Tatsächlich verwendet NetworkManager /etc/resolv.conf. Doch auf die Standardeinstellungen der DNS - Server aufgelistet in resolv.confist 127.0.0.1, weil Networkmanager seine eigenen internen DNS - Dienst für einige verwendet obskuren technischen Gründen , die für viele Menschen nicht relevant sind. Aus diesem Grund müssen Sie nmclifeststellen, welche DNS-Server von NetworkManager intern verwendet werden.

Es ist jedoch auch möglich, dieses Verhalten zu deaktivieren und zu dem alten zurückzukehren, in dem der tatsächlich verwendete DNS-Server aufgeführt ist resolv.conf. Kommentieren Sie dazu einfach die Zeile dns=dnsmasqin aus /etc/NetworkManager/NetworkManager.confund starten Sie neu. Für die meisten Menschen sollte dies keinen Unterschied machen, außer dass der tatsächliche DNS-Server jetzt in angezeigt wird resolv.conf. Wenn Sie zu den Eckfällen gehören, für die die Änderung eingeführt wurde, sollte dies schnell ersichtlich werden, und Sie können zum Standardverhalten zurückkehren, indem Sie die Zeile erneut auskommentieren.


1

nmcli dev liste | grep DNS

es wird so etwas wie ausgeben;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

Der obige Befehl funktioniert vor Ubuntu 16.04
Für Ubuntu 16.04:
nmcli dev show | grep DNS


Du meinst wahrscheinlich nmcli dev shownicht nmcli dev list?
Holmb

Ich habe ein bisschen gegraben, anscheinend haben sie die CLI zwischen Ubuntu 14.04 und 16.04 geändert. Funktioniert anscheinend nmcli dev listim 14.04, aber nicht im 16.04.
Holmb

1

Wenn jemand die gleiche Frage wie ich für Ubuntu 18.04LTS hat:

Alle über den Netzwerkmanager verwalteten Netzwerkgeräte auflisten:

networkctl list

Konfiguration eines bestimmten Geräts anzeigen:

networkctl status eth0

Anstelle von eth0 müssen Sie den Namen Ihres Netzwerkgeräts eingeben, der zuvor in der Liste angezeigt wurde. Wenn kein DNS-Eintrag vorhanden ist, hat Ihre Karte keinen konfigurierten Nameserver

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.