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. Sig fgrep 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

  • Denne er nyttig, hvis du bruger VPN og NetworkManager . Din /etc/resolv.conf peger på din maskine med dnsmasq løse navne som konfigureret af NetworkManager .
  • På Debian kræver dette network-manager -pakken.
  • nm-værktøj er ikke tilgængeligt i nyere linux. det er for eksempel ikke i ‘ netværksadministrator ‘ pakke med debian 8.
  • I ‘ har opdateret svaret for at afspejle, hvad arbejder for mig i 2016.
  • dette er det bedste svar, resol.conf viser ikke altid sandheden

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 tjenesten network, 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 bruge head
  • 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 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *