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.)
Antwort
Sie sollten in der Lage sein, einige vernünftige Informationen zu erhalten in:
$ cat /etc/resolv.conf
Kommentare
- Bitte beachten Sie jedoch, dass (unter modernen Linuxen) der Inhalt von
/etc/nsswitch.conf
vorschreibt, welche Namensdienste (DNS, LDAP usw.) in welcher Reihenfolge verwendet werden. Sagen Siefgrep hosts: /etc/nsswitch.conf
. Wenn nur auf DNS verwiesen wird, ist/etc/resolv.conf
der richtige Ort, um nach Ihren Nameservern zu suchen. Aber wahrscheinlich verwenden Sie ‚ auch mDNS (auch bekannt als ZeroConf, auch bekannt als Avahi, auch bekannt als Bonjour usw.) usw. In diesem Fall hängen die Dinge davon ab, was Sie ‚ wird verwendet. - Diese Datei zeigt normalerweise auf 127.0.1.1 unter Ubuntu – ‚ ist der lokale DNS-Cache-Server, nicht der tatsächliche Upstream.
- @BarryKelly Überprüfen Sie, was Ihr Router verwendet, dann
- Und wenn Sie mehrere Upstream-Server konfiguriert haben? Woher wissen Sie, welches derzeit verwendet wird?
- In den Antworten von @ G32RW oder @Lonniebiz finden Sie einen robusteren Ansatz unter verschiedenen Umständen, z. wenn Sie eine Antwort wie
127.0.0.53
Antwort
hier erhalten „So mache ich das:
( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
Diese hat zuvor wie oben beschrieben funktioniert:
nm-tool | grep DNS
Unter Debian benötigen Sie das Netzwerkmanager-Paket installiert.
Kommentare
- Dieser ist nützlich, wenn Sie VPN und verwenden NetworkManager . Ihre
/etc/resolv.conf
zeigt auf Ihren Computer, wobeidnsmasq
Namen auflöst, wie von NetworkManager . - Unter Debian ist hierfür das Paket
network-manager
erforderlich. - nm-tool ist in neueren Linux-Versionen nicht verfügbar. Dies ist beispielsweise nicht der Fall im ‚ Netzwerkmanager ‚ Paket von Debian 8.
- I ‚ Wir haben die Antwort aktualisiert, um zu reflektieren, was arbeitet 2016 für mich.
- Dies ist die beste Antwort. Resolution.conf zeigt nicht immer die Wahrheit
Antwort
Auf Systemen, auf denen systemd ausgeführt wird, verwenden Sie:
systemd-resolve --status
Kommentare
- Systemd-Auflösung: Nicht erkannte Option ‚ –status ‚
- Sagt
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
- Dies ist die neue Standardmethode in Ubuntu 18.04 Bionic Beaver – gewöhne dich daran, alle!
- Dies ist die einzige Lösung, die für mich funktioniert hat, da die anderen 127.0.0.53 zurückgegeben haben
- Was lese ich? Ich sehe nur DNSSEC-Einträge.
Antwort
Ich denke, Sie können auch DNS abfragen und es wird Ihnen zeigen, was Server gab das Ergebnis zurück. Versuchen Sie Folgendes:
dig yourserver.somedomain.xyz
In der Antwort sollte angegeben werden, 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 dig
anweisen, eine Abfrage durchzuführen Ein bestimmter DNS-Server unter Verwendung von dig @server_ip
Kommentare
- Für Debian ist hierfür die
dnsutils
-Paket. - Wenn Sie einen DNS-Maskierungs- / Caching-Dienst verwenden, der auf Ihrem lokalen Computer ausgeführt wird, werden die echten DNS-Server ausgeblendet.
- Ubuntu 18.04 zeigt nur den lokalen DNS-Cache:
SERVER: 127.0.0.53#53(127.0.0.53)
Antwort
Führen Sie einfach eine nslookup
aus. Zu den Ergebnissen gehört der Server, den es verwendet. P. >
Im folgenden Beispiel wird gezeigt, 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
Kommentare
- Können Sie ein Beispiel geben, was in die Eingabeaufforderung eingegeben werden soll?
- Beispiel:
$ nslookup www.google.com
- Unter Debian ist das Paket
dnsutils
erforderlich. - Auf einem aktuellen Ubuntu verweist dies erneut auf den lokalen Cache-Server 127.0.0.1, wie bereits in dieses Kommentars
- in CentOS angedeutet 7 Es wird mit einem Fehler beendet, aber es ist eine VM, also habe ich
nslookup google.com
auf dem Windows-Host ausgeführt und den Nameserver gefunden. Fügen Sie es in/etc/resolv.conf
wie folgt hinzu:nameserver xx.xx.xx.xx
und starten Sie den Dienstnetwork
neu, und alles ist in Ordnung. Segne dich.
Antwort
Mit dem neuen Befehl network-manager
nmcli
, gehen Sie folgendermaßen vor:
nmcli --fields ipv4.dns,ipv6.dns con show [connection_name]
In neueren Versionen von Network-Manager (wie in Ubuntu 16.04) werden die Feldnamen angegeben unterscheiden sich 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 bei alten Versionen von nmcli:
$ 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
Kommentare
- Meine Ergebnisse :
order «con» «show» is not valid
. - Es funktioniert gut mit Network-Manager 1.0.4 unter Ubuntu 15.10. Vielleicht haben Sie eine ältere Version?
- Das Tabellenformat ist ziemlich schlecht. Ich hoffe, ein spaltenähnliches Format zu erhalten, das Powershell ähnelt.
- Gibt
Error: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
- einfach
nmcli
war alles, was ich unter Ubuntu 19.04 brauchte
Antwort
, um zu erhalten der erste DNS-Server (nur IP):
-
cat
gibt nur DNS-Konfigurationsfilter -
grep
aus Der Nameserver -
head
behält nur die erste Zeile / Instanz -
cut
die IP Teil der Zeile (zweite Spalte mit „“ als Trennzeichen)
Um DNS-IP in eine Umgebungsvariable einzufügen, können Sie Folgendes verwenden:
export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i "^nameserver"|head -n1|cut -d " " -f2)
Kommentare
-
grep -m 1
beendet den Abgleich nach dem ersten Abgleich, sodass Sie muss nichthead
- verwenden. Um die Pipeline noch einfacher zu machen, ist das Erfassen von Gruppen mit Perl-Regexp sehr ordentlich, und grep nimmt eine Datei Argument:
grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf
. Gerade geschrieben Erfassen Sie Gruppen mit dem regulären Ausdruck grep perl - Es gibt ‚ sowohl IPv4 als auch IPv6-DNS-Server. Auch sekundäre Server existieren aus einem bestimmten Grund. Welches gibt dieser Befehl zurück? Wird empfohlen, den ersten zu nehmen und die anderen einfach zu ignorieren?
Antwort
Wenn Sie verwenden Netzwerkmanager Sie erhalten 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 Hessen und Alexios beschrieben), können Sie sie sehen über das Feld „Netzwerkinformationen“.
Sie können dieses Feld erreichen, indem Sie mit der rechten Maustaste auf das Netzwerkmanagersymbol klicken und im Menü „Verbindungsinformationen“ auswählen.
Antwort
Verwenden von 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 ist systemd-resolve
eine symbolische Verknüpfung zu resolvectl
in vielen Distributionen als für 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
Kommentare
- funktioniert perfekt unter Ubuntu 18.10.
Antwort
Ich habe Fed ora 25 und reagierte in der Befehlszeile ähnlich langsam auf sudo-Befehle.
nmcli dev show | grep DNS
zeigte, dass nur einer meiner 3 Adapter (zwei aktive) 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 Antwortzeit ist sofort.
Kommentare
- vielleicht alternativ
Antwort
In Ubuntu> = 15
nmcli device show <interfacename> | grep IP4.DNS
Ersetzen Sie <interfacename>
durch Ihre.
In Ubuntu < = 14
Der Befehl
nmcli dev list iface <interfacename> | grep IP4
Ersetzen Sie <interfacename>
durch Ihren.
Beispiele
nmcli device show eth0 | grep IP4.DNS
oder
nmcli dev list iface eth0 | grep IP4
Hiermit werden alle DNS-Server aufgelistet (wenn Sie mehr als verwenden one).
Kommentare
-
nmcli dev list iface [devicename]
ist der richtige Befehl - I. Port ‚ nicht bemerkt < Schnittstelle > ist ausgeblendet, da ich >
- Auf debian erhalte ich einen Fehler — $ nmcli dev li st iface eth0 Fehler: ‚ dev ‚ Befehl ‚ list ‚ ist ungültig.
- nmcli ist ein RH-spezifischer Befehl.
- Dies ist die richtige Antwort!
Antwort
Bei einem aktuellen Fedora 33 können Sie einfach
# resolvectl dns Global: Link 2 (enp0s31f6): Link 3 (wlp4s0): 1.1.1.1 8.8.8.8 Link 4 (virbr0): Link 5 (virbr0-nic):
verwenden, um zu überprüfen, ob systemd-resolved
ist aktiv. Führen Sie cat /etc/resolv.conf
aus. Hier erfahren Sie, wer die Datei steuert.
Wenn Sie weitere Informationen wünschen, Sie können resolvectl status
resolvectl statistics
verwenden. Sie können auch Caches leeren …
Zur Fehlerbehebung können Sie journalctl -u systemd-resolved -f -o cat | grep Looking
verwenden, nachdem Sie die Stufe auf DEBUG gesetzt haben: sudo resolvectl log-level debug
Antwort
In CentOS können Sie Folgendes verwenden:
/usr/sbin/named -v
Antwort
Auf Systemen, auf denen systemd-resolved
NICHT installiert ist:
$ host -v something.unknown | awk -F "[ #]" "/Received /{print$5}" | uniq 192.168.1.1
Auf Systemen, auf denen NetworkManager
ausgeführt wird:
$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk "/DNS/{print$NF}" 192.168.1.1