Hur kan jag kontrollera vilken DNS-server jag använder (i Linux)? Jag använder nätverkshanteraren och en trådbunden anslutning till mitt universitets LAN. (Jag försöker ta reda på varför min domän inte löses)
Svar
Du borde kunna få rimlig information i:
$ cat /etc/resolv.conf
Kommentarer
- Var dock medveten om att innehållet i
/etc/nsswitch.conf
(på moderna Linuxen) dikterar vilka namntjänster som används (DNS, LDAP, etc) och i vilken ordning. Sägfgrep hosts: /etc/nsswitch.conf
. Om det bara refererar till DNS är/etc/resolv.conf
rätt plats att leta efter dina namnservrar. Men chansen är att du ’ också använder mDNS (aka ZeroConf, aka Avahi, aka Bonjour, etc) osv. I så fall beror saker på vad du ’ använder igen. - Den här filen pekar vanligtvis på 127.0.1.1 på Ubuntu – den ’ är den lokala DNS-cache-servern, inte den faktiska uppströms.
- @BarryKelly Kontrollera vad din router använder, då
- Och om du har konfigurerat flera uppströmsserver? Hur vet man vilken som för närvarande används?
- Se svaren från @ G32RW eller @Lonniebiz för ett mer robust tillvägagångssätt under olika omständigheter, t.ex. när du får svar som
127.0.0.53
Svar
Här ”hur jag gör det:
( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
Denna fungerade tidigare till ovanstående sätt:
nm-tool | grep DNS
På Debian måste du ha nätverkshanteringspaketet installerad.
Kommentarer
Svar
På system som kör systemd-användning:
systemd-resolve --status
Kommentarer
- systemd-resolution: okänt alternativ ’ –status ’
- Säger
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
- Detta är det nya standard sättet att göra det i Ubuntu 18.04 Bionic Beaver – vänja dig vid det alla!
- Detta är det enda lösning som fungerade för mig när de andra returnerade 127.0.0.53
- Vad läser jag? Jag ser bara DNSSEC-poster.
Svar
Jag tror att du också kan fråga DNS och det visar dig vad servern returnerade resultatet. Pröva det här:
dig yourserver.somedomain.xyz
Och svaret ska berätta vilken server som returnerade resultatet. Utgången du är intresserad av kommer att se ut så här:
;; 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
Du kan också be dig
att fråga en specifik DNS-server med dig @server_ip
Kommentarer
- På Debian krävs detta
dnsutils
-paket. - Om du använder någon DNS-maskering / cachningstjänst som körs på din lokala dator kommer den att dölja de riktiga DNS-servrarna.
- Ubuntu 18.04 visar bara den lokala dns-cachen:
SERVER: 127.0.0.53#53(127.0.0.53)
Svar
Gör bara en, nslookup
. En del av resultaten inkluderar servern som den använder.
I exemplet nedan visar det att DNS-servern som används ligger på 8.8.8.8.
$ 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
Kommentarer
- kan du ge ett exempel på vad du ska ange i prompten?
- Exempel:
$ nslookup www.google.com
- För Debian krävs detta
dnsutils
-paketet. - På en ny Ubuntu pekar detta återigen mot den lokala cacheservern 127.0.0.1 som redan antydts i den här kommentaren
- I CentOS 7 det avslutas med fel, men det är en vm så jag gjorde
nslookup google.com
i Windows-värden och jag hittade namnservern. Lägg till det i/etc/resolv.conf
som:nameserver xx.xx.xx.xx
och starta om tjänstennetwork
, och allt är bra. Prisa dig.
Svar
Med det nya network-manager
kommando nmcli
, gör detta:
nmcli --fields ipv4.dns,ipv6.dns con show [connection_name]
På nyare versioner av nätverkshanteraren (som i Ubuntu 16.04), fältnamnen är något annorlunda:
nmcli --fields ip4.dns,ip6.dns con show [connection_name]
Om du inte vet anslutningsnamnet, använd:
nmcli -t --fields NAME con show --active
Till exempel på gamla versioner av 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
Kommentarer
- Mina resultat :
order «con» «show» is not valid
. - Det fungerar bra för mig med nätverkshanteraren 1.0.4 på Ubuntu 15.10. Kanske har du en äldre version?
- Tabellformatet är ganska dåligt. Jag hoppas få en kolumnliknande format som liknar Powershell.
- Returnerar
Error: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
- helt enkelt
nmcli
var allt jag behövde på ubuntu 19.04
Svar
för att få den första DNS-SERVEREN (endast IP):
-
cat
skickar endast DNS-konfiguration -
grep
filter nameserver -
head
behåller bara den första raden / instansen -
cut
tar ip del av raden (andra kolumnen med ”” som separator)
För att placera DNS ip i en miljövariabel kan du använda följande:
export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i "^nameserver"|head -n1|cut -d " " -f2)
Kommentarer
-
grep -m 1
slutar matcha efter första match så att du inte ’ t måste användahead
- För att underlätta rörledningen ännu mer är det mycket trevligt att fånga grupper med Perl regexp och grep tar en fil argument:
grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf
. Skrev precis upp Fångar grupper med grep perl reguljärt uttryck - ’ är både IPv4 och IPv6 DNS-servrar. Dessutom finns sekundära servrar av en anledning. Vilket kommando returnerar? Rekommenderas att ta den första och bara ignorera de andra?
Svar
Om du använder nätverkshanteraren får förmodligen alla nätverksparametrar från din dhcp-server på ditt universitet.
Om du inte vill använda ditt skal för att kontrollera dina dns-inställningar (som beskrivs av hesse och Alexios) kan du se dem från panelen ”Nätverksinformation”.
Du kan nå den här panelen genom att trycka på höger musknapp på nätverkshanteringsikonen och välja ”Anslutningsinformation” i menyn.
Svara
Använda 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
För kompatibilitet är systemd-resolve
en symbolisk länk till resolvectl
på många distributioner som 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
Kommentarer
- fungerar perfekt på Ubuntu 18.10.
Svar
Jag har Fed ora 25 och hade också liknande långsamt svar på kommandoraden till sudo-kommandon.
nmcli dev show | grep DNS
visade att endast en av mina 3 adaptrar (två aktiva) hade DNS-poster. Genom att lägga till DNS-poster till det aktiva kortet som inte hade en post – presto! Allt är bra och svarstiden är omedelbar.
Kommentarer
- kanske alternativt
Svar
I Ubuntu> = 15
nmcli device show <interfacename> | grep IP4.DNS
Ersätt <interfacename>
med ditt.
I Ubuntu < = 14
Kommandot
nmcli dev list iface <interfacename> | grep IP4
Ersätt <interfacename>
med ditt.
Exempel
nmcli device show eth0 | grep IP4.DNS
Eller
nmcli dev list iface eth0 | grep IP4
Detta visar alla DNS-servrar (Om du använder mer än en).
Kommentarer
-
nmcli dev list iface [devicename]
är rätt kommando - I tillflyktsort ’ t märkt < gränssnitt > är dolt eftersom jag använder < >
- På debian får jag ett fel — $ nmcli dev li st iface eth0 Fel: ’ dev ’ kommando ’ lista ’ är inte giltigt.
- nmcli är ett RH-specifikt kommando.
- Detta är rätt svar!
Svar
På en ny Fedora 33 kan du bara använda
# resolvectl dns Global: Link 2 (enp0s31f6): Link 3 (wlp4s0): 1.1.1.1 8.8.8.8 Link 4 (virbr0): Link 5 (virbr0-nic):
För att kontrollera om systemd-resolved
är aktiv, gör cat /etc/resolv.conf
Det kommer att berätta vem som styr filen.
Om du vill ha mer information, du kan använda resolvectl status
resolvectl statistics
, du kan också spola cachar …
För att felsöka kan du använda journalctl -u systemd-resolved -f -o cat | grep Looking
när du har ställt in nivån till DEBUG: sudo resolvectl log-level debug
Svar
I CentOS kan du använda:
/usr/sbin/named -v
Svar
På system där systemd-resolved
INTE är installerat:
$ host -v something.unknown | awk -F "[ #]" "/Received /{print$5}" | uniq 192.168.1.1
På system där NetworkManager
körs:
$ ( 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
/etc/resolv.conf
pekar på din maskin, meddnsmasq
löser namn som konfigurerats av NetworkManager .network-manager
paketet.