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. Powiedzfgrep 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
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
/etc/resolv.conf
wskaże Twój komputer, adnsmasq
będzie rozpoznawać nazwy skonfigurowane przez NetworkManager .network-manager
.