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äg fgrep 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

  • Den här är användbar om du använder VPN och NetworkManager . Din /etc/resolv.conf pekar på din maskin, med dnsmasq löser namn som konfigurerats av NetworkManager .
  • På Debian kräver detta network-manager paketet.
  • nm-verktyget är inte tillgängligt i nyare Linux. till exempel är det inte i ’ nätverkshanteraren ’ paket med debian 8.
  • I ’ har uppdaterat svaret för att återspegla vad arbetar för mig 2016.
  • det här är det bästa svaret, resol.conf visar inte alltid sanningen

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änsten network, 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ända head
  • 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 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *