Welche DNS-Server verwende ich?


249

Wie kann ich überprüfen, welchen DNS-Server ich verwende (unter Linux)? Ich verwende einen Netzwerkmanager und eine Kabelverbindung zum LAN meiner Universität. (Ich versuche herauszufinden, warum meine Domain nicht aufgelöst wird.)

Antworten:


207

Sie sollten in der Lage sein, einige vernünftige Informationen zu erhalten in:

$ cat /etc/resolv.conf 

26
Beachten Sie jedoch, dass der Inhalt von (auf modernen Linuxen) bestimmt, /etc/nsswitch.confwelche Namensdienste (DNS, LDAP usw.) in welcher Reihenfolge verwendet werden. Sprich fgrep hosts: /etc/nsswitch.conf. Wenn es nur auf DNS verweist, /etc/resolv.confist es der richtige Ort, um nach Ihren Nameservern zu suchen. Aber es besteht die Möglichkeit, dass Sie auch mDNS (auch bekannt als ZeroConf, Avahi, Bonjour usw.) verwenden. In diesem Fall hängt es davon ab, was Sie verwenden.
Alexios

27
Diese Datei zeigt unter Ubuntu normalerweise 127.0.1.1 - es ist der lokale DNS-Cache-Server, nicht der eigentliche Upstream.
Barry Kelly

2
@ Barry Kelly Überprüfen Sie, was Ihr Router verwendet, dann
Geremia

2
Und wenn Sie mehrere Upstream-Server konfiguriert haben? Woher wissen, welche derzeit verwendet wird?
Sylvain Leroux

4
In den Antworten von @ G32RW oder @Lonniebiz finden Sie Informationen zu einem stabileren Ansatz unter verschiedenen Umständen, z. B. wenn Sie eine Antwort wie127.0.0.53
nealmcb

194

So mache ich es:

nmcli dev show | grep DNS

Dies funktionierte vor dem obigen Weg:

nm-tool | grep DNS

14
Dieser ist nützlich, wenn Sie VPN und NetworkManager verwenden . Sie /etc/resolv.confwerden auf Ihren Computer verweisen und die dnsmasqNamen wie von NetworkManager konfiguriert auflösen .
Grzegorz Żur

6
Für Debian ist das network-managerPaket erforderlich .
TranslucentCloud

2
Das nm-tool ist in neueren Linux-Versionen nicht verfügbar. zum beispiel ist es nicht im 'network-
don bright

2
Ich habe die Antwort aktualisiert, um zu reflektieren, was für mich im Jahr 2016
funktioniert

3
dies ist die beste Antwort, resolve.conf nicht immer die Wahrheit zeigt
Klinge

72

Ich denke, Sie können auch DNS abfragen und es wird Ihnen zeigen, welcher Server das Ergebnis zurückgegeben hat. Versuche dies:

dig yourserver.somedomain.xyz

Und die Antwort sollte Ihnen sagen, welche Server das Ergebnis zurückgegeben haben. Die Ausgabe, an der Sie interessiert sind, sieht ungefähr so ​​aus:

;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE  rcvd: 207

Sie können auch digmithilfe von festlegen, dass ein bestimmter DNS-Server abgefragt werden solldig @server_ip


8
Für Debian ist das dnsutilsPaket erforderlich .
Faheem Mitha

6
Wenn Sie einen DNS-Maskierungs- / Caching-Dienst verwenden, der auf Ihrem lokalen Computer ausgeführt wird, werden die tatsächlichen DNS-Server ausgeblendet.
Karatedog

4
Ubuntu 18.04 zeigt nur den lokalen DNS-Cache:SERVER: 127.0.0.53#53(127.0.0.53)
wisbucky

58

Tun Sie einfach ein, nslookup. Zu den Ergebnissen gehört auch der verwendete Server.

Im folgenden Beispiel wird angezeigt, dass der verwendete DNS-Server 8.8.8.8 ist.

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.22.174

1
Können Sie ein Beispiel für die Eingabe in die Eingabeaufforderung geben?
Chovy

Beispiel: $ nslookup www.google.com
Ren

7
Für Debian ist das dnsutilsPaket erforderlich .
Gayan Weerakutti

6
Auf einem aktuellen Ubuntu zeigt dies erneut auf den lokalen Cache-Server 127.0.0.1, wie bereits in diesem Kommentar
FriendFX

In CentOS 7 wird es mit einem Fehler beendet, aber es ist ein VM, also habe ich es nslookup google.comauf dem Windows-Host gemacht und den Nameserver gefunden. Fügen Sie es /etc/resolv.confwie folgt hinzu : nameserver xx.xx.xx.xxund starten Sie den Dienst neu network, und alles ist in Ordnung. Segne dich.
WesternGun

55

Auf Systemen mit systemd use:

systemd-resolve --status

3
Systemd-Resolution
Nicht

@ABB System? systemd version?
G32RW

229-4ubuntu21.2
Acumenus

11
Dies ist die neue Standardmethode in Ubuntu 18.04 Bionic Beaver - gewöhnen Sie sich daran, alle!
AveryFreeman

4
Dies ist die einzige Lösung, die für mich funktioniert hat, da die anderen 127.0.0.53 zurückgegeben haben
greuze

13

Führen Sie mit dem neuen network-managerBefehl nmcliFolgendes aus:

nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>

In neueren Versionen von Network-Manager (wie in Ubuntu 16.04) unterscheiden sich die Feldnamen geringfügig:

nmcli --fields ip4.dns,ip6.dns con show <connection_name>

Wenn Sie den Verbindungsnamen nicht kennen, verwenden Sie:

nmcli -t --fields NAME con show --active

Zum Beispiel:

$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4

Meine Ergebnisse: order «con» «show» is not valid.
Sopalajo de Arrierez

Es funktioniert gut für mich mit Network-Manager 1.0.4 auf Ubuntu 15.10. Vielleicht haben Sie eine ältere Version?
Sameer

Das Tabellenformat ist ziemlich schlecht. Ich hoffe, ein Format wie Powershell zu bekommen.
CMCDragonkai

1
ReturnsError: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
FriendFX

nmcliAm Ubuntu 19.04
John Mee

9

So rufen Sie den ersten DNS-SERVER ab (nur IP):

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2
  • cat Gibt die DNS-Konfiguration aus
  • grep filtert nur Nameserver
  • head behält nur die erste Zeile / Instanz bei
  • cut nimm den ip Teil der Zeile (zweite Spalte mit '' als Trennzeichen)

Um die DNS-IP-Adresse in eine Umgebungsvariable einzufügen, können Sie Folgendes verwenden:

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)

2
grep -m 1head
Hört

Um die Pipeline noch mehr, Einfanggruppen mit Perl regexp aufzuhellen ist sehr gepflegt, und grep nimmt ein Dateiargument: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Gerade geschrieben Capture-Gruppen mit Grep Perl regulären Ausdruck
sshow

8

Wenn Sie Network Manager verwenden, erhalten Sie wahrscheinlich alle Netzwerkparameter von Ihrem DHCP-Server an Ihrer Universität.

Wenn Sie Ihre DNS-Einstellungen nicht mit Ihrer Shell überprüfen möchten (wie von hesse und Alexios beschrieben), können Sie sie im Bereich "Netzwerkinformationen" anzeigen.

Sie können dieses Fenster erreichen, indem Sie die rechte Maustaste auf das Netzwerkmanagersymbol drücken und "Verbindungsinformationen" aus dem Menü auswählen.


5

Verwenden resolvectl

$ resolvectl status | grep -1 'DNS Server'
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      1.0.0.1

Aus Kompatibilitätsgründen systemd-resolveist ein symbolischer Link zu resolvectlvielen Distributionen wie bei Ubuntu 18.10:

$ type -a systemd-resolve
systemd-resolve is /usr/bin/systemd-resolve

$ ll /usr/bin/systemd-resolve
lrwxrwxrwx 1 root root 10 nov.  15 21:42 /usr/bin/systemd-resolve -> resolvectl

$ type -a resolvectl
resolvectl is /usr/bin/resolvectl

$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped

Funktioniert perfekt unter Ubuntu 18.10.
Georgé Stoyanov

3

Der Befehl

 nmcli dev list iface <interfacename> | grep IP4

Ersetzen Sie "Schnittstellenname" durch Ihren.

Beispiel

 nmcli dev list iface eth0 | grep IP4

Dies listet alle DNS-Server auf (wenn Sie mehr als einen verwenden).


nmcli dev list iface [devicename]ist der richtige Befehl
Sebix

Ich habe nicht bemerkt, dass <interface> ausgeblendet ist, seit ich <> verwende
Maythux

1
Unter Debian erhalte ich einen Fehler --- $ nmcli dev list iface eth0 Fehler: 'dev' Befehl 'list' ist ungültig.
Don Bright

nmcli ist ein RH-spezifischer Befehl.
Rui F Ribeiro

Das ist die richtige Antwort!
VAdaihiep

3

Ich habe Fedora 25 und hatte auch eine ähnlich langsame Reaktion auf sudo-Befehle in der Befehlszeile.

nmcli dev show | grep DNS 

zeigte, dass nur einer meiner 3 Adapter (zwei aktiv) DNS-Einträge hatte. Durch Hinzufügen von DNS-Einträgen zu einer aktiven Karte, die keinen Eintrag hatte - presto! Alles ist gut und die Reaktionszeit ist sofort.


vielleicht alternativ
Amos Folarin


0

Sobald Sie denken, dass Sie Ihre DNS gefunden haben, können Sie sie direkt mit dig: abfragen dig @<dns ip> <host to lookup>. Wenn es funktioniert, sollten Sie es nach SERVERmit einem Status von sehen NOERROR.

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.