Jak mogę sprawdzić, którego serwera DNS używam (w systemie Linux)? Używam menedżera sieci i połączenia przewodowego z siecią LAN mojej uczelni. (Próbuję dowiedzieć się, dlaczego moja domena nie została rozwiązana).

Odpowiedź

Powinieneś być w stanie uzyskać rozsądne informacje w:

$ cat /etc/resolv.conf 

komentarzach

  • Należy jednak pamiętać, że (we współczesnym Linuksie) zawartość /etc/nsswitch.conf określa, jakie usługi nazw są używane (DNS, LDAP itp.) i w jakiej kolejności. Powiedz fgrep hosts: /etc/nsswitch.conf. Jeśli odwołuje się tylko do DNS, /etc/resolv.conf jest właściwym miejscem do wyszukiwania serwerów nazw. Ale są szanse, że ' używasz również mDNS (znanego również jako ZeroConf, znany również jako Avahi, znany jako Bonjour itp.) Itd. W takim przypadku wszystko zależy od tego, co ' ponownie używam.
  • Ten plik zazwyczaj wskazuje adres 127.0.1.1 w systemie Ubuntu – jest to ' lokalny serwer pamięci podręcznej DNS, a nie rzeczywisty upstream.
  • @BarryKelly Sprawdź, czego używa twój router, a następnie
  • A jeśli masz skonfigurowanych kilka serwerów nadrzędnych? Jak sprawdzić, który z nich jest obecnie używany?
  • Zobacz odpowiedzi @ G32RW lub @Lonniebiz, aby uzyskać bardziej niezawodne podejście w różnych okolicznościach, np. kiedy otrzymasz odpowiedź, taką jak 127.0.0.53

Odpowiedz

Tutaj „Tak to robię:

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS 

To działało wcześniej do powyższego:

nm-tool | grep DNS 

W Debianie musisz mieć pakiet menedżera sieci zainstalowany.

Komentarze

  • Ten jest przydatny, jeśli używasz VPN i Menedżer sieci . Twój /etc/resolv.conf wskaże Twój komputer, a dnsmasq będzie rozpoznawać nazwy skonfigurowane przez NetworkManager .
  • W Debianie wymaga to pakietu network-manager.
  • nm-tool nie jest dostępne w nowszych Linuksach. Na przykład nie jest w ' network-manager ' w pakiecie Debian 8.
  • I ' zaktualizowaliśmy odpowiedź, aby odzwierciedlić pracuje dla mnie w 2016 roku.
  • to najlepsza odpowiedź, solution.conf nie zawsze pokazuje prawdę

Odpowiedź

W systemach z systemem systemd użyj:

systemd-resolve --status 

Komentarze

  • systemd-solution: nierozpoznana opcja ' –status '
  • Mówi Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
  • To jest nowy domyślny sposób robienia tego w Ubuntu 18.04 Bionic Beaver – przyzwyczajajcie się do tego wszyscy!
  • To jest jedyny rozwiązanie, które działało dla mnie, ponieważ inne zwróciły 127.0.0.53
  • Co ja czytam? Widzę tylko rekordy DNSSEC.

Odpowiedź

Myślę, że możesz również zapytać o DNS, a to pokaże ci, co serwer zwrócił wynik. Spróbuj tego:

dig yourserver.somedomain.xyz 

A odpowiedź powinna powiedzieć, które serwery zwróciły wynik. Wynik, który Cię interesuje, będzie wyglądał mniej więcej tak:

;; 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 

Możesz także nakazać dig zapytanie określony serwer DNS przy użyciu dig @server_ip

Komentarze

  • W Debianie wymaga to .
  • Jeśli używasz dowolnej usługi maskowania / buforowania DNS, która jest uruchomiona na komputerze lokalnym, spowoduje to ukrycie prawdziwych serwerów DNS.
  • Ubuntu 18.04 pokazuje tylko lokalną pamięć podręczną DNS: SERVER: 127.0.0.53#53(127.0.0.53)

Odpowiedź

Po prostu wykonaj nslookup . Część wyników obejmuje serwer, z którego korzysta.

W poniższym przykładzie widać, że używany serwer DNS to 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 

Komentarze

  • czy możesz podać przykład wpisu w monicie?
  • Przykład: $ nslookup www.google.com
  • W Debianie wymaga to pakietu dnsutils.
  • W ostatnim Ubuntu ponownie wskazuje to na lokalny serwer pamięci podręcznej 127.0.0.1, jak już wspomniano w tym komentarzu
  • W CentOS 7 kończy pracę z błędem, ale jest to maszyna wirtualna, więc wykonałem nslookup google.com na hoście Windows i znalazłem serwer nazw. Dodaj go do /etc/resolv.conf, na przykład: nameserver xx.xx.xx.xx i uruchom ponownie usługę network i wszystko jest w porządku. Wysławiam Cię.

Odpowiedź

Z nowym network-manager poleceniem nmcli, zrób to:

nmcli --fields ipv4.dns,ipv6.dns con show [connection_name] 

W nowszych wersjach menedżera sieci (np. Ubuntu 16.04) nazwy pól są nieco inne:

nmcli --fields ip4.dns,ip6.dns con show [connection_name] 

Jeśli nie znasz nazwy połączenia, użyj:

nmcli -t --fields NAME con show --active 

Na przykład w starszych wersjach 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 

Komentarze

  • Moje wyniki : order «con» «show» is not valid.
  • U mnie działa dobrze z menedżerem sieci 1.0.4 na Ubuntu 15.10. Może masz starszą wersję?
  • Format tabelaryczny jest dość zły. Mam nadzieję, że uzyskam format podobny do kolumny, podobny do formatu Powershell.
  • Zwraca Error: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
  • po prostu nmcli to wszystko, czego potrzebowałem na ubuntu 19.04

Odpowiedz

, aby uzyskać pierwszy SERWER DNS (tylko IP):

  • cat wyprowadzi tylko konfigurację DNS
  • grep filtry serwer nazw
  • head zachowa tylko pierwszy wiersz / instancję
  • cut przyjmie adres IP część wiersza (druga kolumna z separatorem „”)

Aby umieścić adres IP DNS w zmiennej środowiskowej, możesz użyć następującego:

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i "^nameserver"|head -n1|cut -d " " -f2) 

Komentarze

  • grep -m 1 przestaje dopasowywać po pierwszym dopasowaniu, więc nie ' nie trzeba używać head
  • Aby jeszcze bardziej rozjaśnić potok, przechwytywanie grup za pomocą wyrażenia regularnego Perla jest bardzo zgrabne, a grep pobiera plik argument: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Właśnie napisałem Przechwytuj grupy za pomocą wyrażenia regularnego grep perl
  • Istnieją ' zarówno IPv4, jak i Serwery DNS IPv6. Nie bez powodu istnieją również serwery pomocnicze. Którą komendę zwraca? Czy warto wziąć pierwszą, a pozostałe zignorować?

Odpowiedź

Jeśli używasz menedżer sieci prawdopodobnie otrzymujesz wszystkie parametry sieciowe z serwera dhcp na swojej uczelni.

Jeśli nie chcesz używać powłoki do sprawdzania ustawień DNS (jak opisano przez hesse i Alexios), możesz je zobaczyć z panelu „Informacje o sieci”.

Możesz przejść do tego panelu, naciskając prawy przycisk myszy na ikonie menedżera sieci i wybierając z menu „Informacje o połączeniu”.

Odpowiedz

Używając 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 

W celu zapewnienia zgodności systemd-resolve jest dowiązaniem symbolicznym do resolvectl w wielu dystrybucjach, ponieważ dla 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 

Komentarze

  • działa doskonale na Ubuntu 18.10.

Odpowiedź

Mam Fed ora 25 i również miał podobnie powolną odpowiedź w wierszu poleceń na polecenia sudo.

nmcli dev show | grep DNS 

pokazał, że tylko jeden z moich 3 adapterów (dwa aktywne) miał wpisy DNS. Dodając wpisy DNS do jednej aktywnej karty, która nie miała wpisu – presto! Wszystko jest w porządku, a czas odpowiedzi jest natychmiastowy.

Komentarze

  • być może alternatywnie

Odpowiedź

In Ubuntu> = 15

nmcli device show <interfacename> | grep IP4.DNS 

Zamień <interfacename> na swoje.

W Ubuntu < = 14

Polecenie

 nmcli dev list iface <interfacename> | grep IP4 

Zastąp <interfacename> swoim.

Przykłady

 nmcli device show eth0 | grep IP4.DNS 

Lub

 nmcli dev list iface eth0 | grep IP4 

Spowoduje to wyświetlenie wszystkich serwerów DNS (jeśli używasz więcej niż one).

Komentarze

  • nmcli dev list iface [devicename] to poprawne polecenie
  • I Haven ' nie zauważyłem < interfejsu >, ponieważ używam < >
  • Na Debianie pojawia się błąd — $ nmcli dev li st iface eth0 Błąd: ' dev ' polecenie ' lista ' jest nieprawidłowa.
  • nmcli jest poleceniem specyficznym dla RH.
  • To jest poprawna odpowiedź!

Odpowiedź

W najnowszej Fedorze 33 możesz po prostu użyć

# resolvectl dns Global: Link 2 (enp0s31f6): Link 3 (wlp4s0): 1.1.1.1 8.8.8.8 Link 4 (virbr0): Link 5 (virbr0-nic): 

Aby sprawdzić, czy systemd-resolved jest aktywny, wykonaj cat /etc/resolv.conf Powie Ci, kto kontroluje plik.

Jeśli chcesz uzyskać więcej informacji, możesz użyć resolvectl status resolvectl statistics, możesz także opróżnić pamięci podręczne …

Aby rozwiązać problem, możesz użyć journalctl -u systemd-resolved -f -o cat | grep Looking po ustawieniu poziomu na DEBUG: sudo resolvectl log-level debug

Odpowiedź

W CentOS możesz użyć:

/usr/sbin/named -v 

Odpowiedź

W systemach, w których systemd-resolved NIE jest zainstalowany:

 $ host -v something.unknown | awk -F "[ #]" "/Received /{print$5}" | uniq 192.168.1.1  

W systemach, w których działa NetworkManager:

$ ( 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 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *