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

Grzenio
quelle

Antworten:

207

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

$ cat /etc/resolv.conf 

quelle
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
Lonniebiz
quelle
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

Freiheit
quelle
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
Sam
quelle
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
G32RW
quelle
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
Sameer
quelle
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)
boly38
quelle
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.

Tombolinux
quelle
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
olibre
quelle
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).

Maythux
quelle
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.

CRTLBREAK
quelle
vielleicht alternativ
Amos Folarin
0

In CentOS können Sie Folgendes verwenden:

/usr/sbin/named -v
Miloud Eloumri
quelle
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.

Ohlemacher
quelle