Hvordan kan jeg kontrollere, hvilken DNS-server jeg bruger (i Linux)? Jeg bruger netværksadministrator og en kabelforbindelse til mit universitets LAN. (Jeg prøver at finde ud af, hvorfor mit domæne ikke bliver løst)
Svar
Du skal kunne få rimelige oplysninger i:
$ cat /etc/resolv.conf
Kommentarer
- Vær dog opmærksom på, at (på moderne Linuxen) indholdet af
/etc/nsswitch.conf
dikterer, hvilke navnetjenester der bruges (DNS, LDAP osv.) og i hvilken rækkefølge. Sigfgrep hosts: /etc/nsswitch.conf
. Hvis det kun henviser til DNS, er/etc/resolv.conf
det rigtige sted at lede efter dine navneservere. Men chancerne er, at du ‘ også bruger mDNS (aka ZeroConf, aka Avahi, aka Bonjour osv.) Osv. I så fald afhænger tingene af, hvad du ‘ genbruger. - Denne fil peger typisk på 127.0.1.1 på Ubuntu – den ‘ er den lokale DNS-cache-server, ikke den faktiske opstrøms.
- @BarryKelly Kontroller, hvad din router bruger, så
- Og hvis du har konfigureret flere upstream-servere? Hvordan ved man, hvilken der i øjeblikket bruges?
- Se svarene fra @ G32RW eller @Lonniebiz for en mere robust tilgang under forskellige omstændigheder, f.eks. når du får et svar som
127.0.0.53
Svar
Her “Sådan gør jeg det:
( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
Denne fungerede tidligere til ovenstående måde:
nm-tool | grep DNS
På Debian skal du have netværksadministratorpakke installeret.
Kommentarer
Svar
På systemer, der kører systemd brug:
systemd-resolve --status
Kommentarer
- systemd-resolution: ukendt mulighed ‘ –status ‘
- Siger
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
- Dette er den nye standard måde at gøre det på Ubuntu 18.04 Bionic Beaver – vænne sig til det alle sammen!
- Dette er den eneste løsning, der fungerede for mig, da de andre returnerede 127.0.0.53
- Hvad læser jeg? Jeg ser kun DNSSEC-poster.
Svar
Jeg tror, du også kan spørge DNS, og det viser dig hvad serveren returnerede resultatet. Prøv dette:
dig yourserver.somedomain.xyz
Og svaret skal fortælle dig, hvilke server (e) der returnerede resultatet. Det output, du er interesseret i, ser sådan ud:
;; 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 også fortælle dig
at spørge en bestemt DNS-server ved hjælp af dig @server_ip
Kommentarer
- På Debian kræver dette
dnsutils
-pakke. - Hvis du bruger en DNS-maskering / caching-tjeneste, der køres på din lokale maskine, skjuler den de rigtige DNS-servere.
- Ubuntu 18.04 viser bare den lokale dns-cache:
SERVER: 127.0.0.53#53(127.0.0.53)
Svar
Lav bare en nslookup
. En del af resultaterne inkluderer den server, den bruger.
I eksemplet nedenfor viser det, at den anvendte DNS-server er 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 give et eksempel på, hvad du skal indtaste i prompten?
- Eksempel:
$ nslookup www.google.com
- På Debian kræver dette
dnsutils
-pakken. - På en nylig Ubuntu peger dette igen på den lokale cache-server 127.0.0.1 som allerede antydet i denne kommentar
- I CentOS 7 det afsluttes med fejl, men det er en vm, så jeg gjorde
nslookup google.com
i Windows-værten, og jeg fandt navneserveren. Tilføj det i/etc/resolv.conf
som:nameserver xx.xx.xx.xx
og genstart tjenestennetwork
, og alt er i orden. Ros dig.
Svar
Med den nye network-manager
kommando nmcli
, gør dette:
nmcli --fields ipv4.dns,ipv6.dns con show [connection_name]
På nyere versioner af netværksadministrator (såsom i Ubuntu 16.04), feltnavne er lidt forskellige:
nmcli --fields ip4.dns,ip6.dns con show [connection_name]
Hvis du ikke kender forbindelsesnavnet, skal du bruge:
nmcli -t --fields NAME con show --active
For eksempel på gamle versioner af 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
- Mine resultater :
order «con» «show» is not valid
. - Det fungerer fint for mig med netværksadministrator 1.0.4 på Ubuntu 15.10. Måske har du en ældre version?
- Tabelformatet er ret dårligt. Jeg håber at få et kolonnelignende format, der ligner Powershell.
- Returnerer
Error: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
- simpelthen
nmcli
var alt, hvad jeg havde brug for på Ubuntu 19.04
Svar
for at få den første DNS-SERVER (kun IP):
-
cat
sender kun DNS-konfiguration -
grep
filtre navneserver -
head
beholder kun den første række / forekomst -
cut
tager ip del af rækken (anden kolonne med “” som separator)
For at placere DNS ip i en miljøvariabel kan du bruge følgende:
export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i "^nameserver"|head -n1|cut -d " " -f2)
Kommentarer
-
grep -m 1
holder op med at matche efter første kamp, så du ikke ‘ behøver ikke at brugehead
- For at lette pipelinen endnu mere er fangstgrupper med Perl regexp meget pæne, og grep tager en fil argument:
grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf
. Skrev lige op Fang grupper med grep perl regulært udtryk - Der ‘ er både IPv4 og IPv6 DNS-servere. Der findes også sekundære servere af en grund. Hvilken kommando returnerer? Tilrådes det at tage den første og bare ignorere de andre?
Svar
Hvis du bruger netværksadministrator får du sandsynligvis alle netværksparametre fra din dhcp-server på dit universitet.
Hvis du ikke vil bruge din shell til at kontrollere dine dns-indstillinger (som beskrevet af hesse og Alexios), kan du se dem fra panelet “Netværksoplysninger”.
Du kan nå dette panel ved at trykke på højre museknap på ikonet for netværksadministrator og vælge “Forbindelsesoplysninger” i menuen.
Svar
Brug 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
For kompatibilitet er systemd-resolve
et symbolsk link til resolvectl
på mange distroer som til 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
- fungerer perfekt på Ubuntu 18.10.
Svar
Jeg har Fed ora 25 og havde også en lignende langsom reaktion på kommandolinjen til sudo-kommandoer.
nmcli dev show | grep DNS
viste, at kun en af mine 3 adaptere (to aktive) havde DNS-poster. Ved at tilføje DNS-poster til det ene aktive kort, der ikke havde en post – presto! Alt er godt, og svartiden er øjeblikkelig.
Kommentarer
- måske alternativt
Svar
I Ubuntu> = 15
nmcli device show <interfacename> | grep IP4.DNS
Udskift <interfacename>
med din.
I Ubuntu < = 14
Kommandoen
nmcli dev list iface <interfacename> | grep IP4
Erstat <interfacename>
med din.
Eksempler
nmcli device show eth0 | grep IP4.DNS
Eller
nmcli dev list iface eth0 | grep IP4
Dette viser alle DNS-servere (hvis du bruger mere end en).
Kommentarer
-
nmcli dev list iface [devicename]
er den korrekte kommando - I haven ‘ t bemærket < interface > er skjult, da jeg bruger < >
- På debian får jeg en fejl — $ nmcli dev li st iface eth0 Fejl: ‘ dev ‘ kommando ‘ liste ‘ er ikke gyldig.
- nmcli er en RH-specifik kommando.
- Dette er korrekt svar!
Svar
På en nylig Fedora 33 kan du bare bruge
# resolvectl dns Global: Link 2 (enp0s31f6): Link 3 (wlp4s0): 1.1.1.1 8.8.8.8 Link 4 (virbr0): Link 5 (virbr0-nic):
For at kontrollere, om systemd-resolved
er aktiv, gør cat /etc/resolv.conf
Det fortæller dig, hvem der styrer filen.
Hvis du vil have flere detaljer, du kan bruge resolvectl status
resolvectl statistics
, du kan også skylle cacher …
For at foretage fejlfinding kan du bruge journalctl -u systemd-resolved -f -o cat | grep Looking
efter at have indstillet niveauet til DEBUG: sudo resolvectl log-level debug
Svar
I CentOS kan du bruge:
/usr/sbin/named -v
Svar
På systemer, hvor systemd-resolved
IKKE er installeret:
$ host -v something.unknown | awk -F "[ #]" "/Received /{print$5}" | uniq 192.168.1.1
På systemer, hvor NetworkManager
kører:
$ ( 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
peger på din maskine meddnsmasq
løse navne som konfigureret af NetworkManager .network-manager
-pakken.