Z jakich serwerów DNS korzystam?

247

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

Grzenio
źródło

Odpowiedzi:

206

Powinieneś być w stanie uzyskać uzasadnione informacje w:

$ cat /etc/resolv.conf 

źródło
26
Należy jednak pamiętać, że (w nowoczesnych systemach Linux) zawartość /etc/nsswitch.confdyktuje, jakie usługi nazwowe są używane (DNS, LDAP itp.) I w jakiej kolejności. Powiedzieć fgrep hosts: /etc/nsswitch.conf. Jeśli odwołuje się tylko do DNS, /etc/resolv.confjest właściwym miejscem do wyszukiwania serwerów nazw. Ale są szanse, że używasz również mDNS (aka ZeroConf, aka Avahi, aka Bonjour itp.) Itp. W takim przypadku rzeczy zależą od tego, czego używasz.
Alexios
27
Ten plik zwykle wskazuje na Ubuntu 127.0.1.1 - jest to lokalny serwer pamięci podręcznej DNS, a nie rzeczywisty serwer nadrzędny.
Barry Kelly,
2
@BarryKelly Sprawdź, z czego korzysta Twój router, a następnie
Geremia
2
A jeśli masz skonfigurowanych kilka serwerów nadrzędnych? Jak się dowiedzieć, który jest obecnie używany?
Sylvain Leroux
4
Zobacz odpowiedzi @ G32RW lub @Lonniebiz, aby uzyskać bardziej niezawodne podejście w różnych okolicznościach, np. Gdy otrzymasz odpowiedź typu127.0.0.53
nealmcb,
192

Oto jak to robię:

nmcli dev show | grep DNS

To działało wcześniej w sposób opisany powyżej:

nm-tool | grep DNS
Lonniebiz
źródło
14
Ten jest przydatny, jeśli korzystasz z VPN i NetworkManager . Wskażesz /etc/resolv.confswój komputer za pomocą dnsmasqrozpoznawania nazw skonfigurowanych przez NetworkManager .
Grzegorz Żur
6
W Debianie wymaga to network-managerpakietu.
TranslucentCloud,
2
Narzędzie nm-tool nie jest dostępne w nowszych wersjach systemu Linux. na przykład nie ma go w pakiecie „Network-manager” Debiana 8.
Don Bright
2
Zaktualizowałem odpowiedź, aby odzwierciedlić to, co działa dla mnie w 2016 r.
Lonniebiz
3
to najlepsza odpowiedź, resol.conf nie zawsze pokazuje prawdę
ostrze
71

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

dig yourserver.somedomain.xyz

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 poprosić digo zapytanie określonego serwera DNS za pomocądig @server_ip

Freiheit
źródło
8
W Debianie wymaga to dnsutilspakietu.
Faheem Mitha
6
Jeśli użyjesz dowolnej usługi maskowania / buforowania DNS, która jest uruchomiona na twoim komputerze lokalnym, ukryje to prawdziwe serwery DNS.
karatedog
3
Ubuntu 18.04 pokazuje tylko lokalną pamięć podręczną dns:SERVER: 127.0.0.53#53(127.0.0.53)
wisbucky,
57

Wystarczy zrobić, nslookup. Część jego wyników obejmuje serwer, którego używa.

W poniższym przykładzie pokazuje, ż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
Sam
źródło
1
czy możesz podać przykład, co wpisać w monicie?
chovy
Przykład: $ nslookup www.google.com
Ren
7
W Debianie wymaga to dnsutilspakietu.
Gayan Weerakutti
5
W ostatnim Ubuntu ponownie wskazuje to na lokalny serwer pamięci podręcznej 127.0.0.1, jak już wspomniano w tym komentarzu
FriendFX
W CentOS 7 wychodzi z błędem, ale jest to vm, więc zrobiłem to nslookup google.comna hoście Windows i znalazłem serwer nazw. Dodaj to /etc/resolv.confjak: nameserver xx.xx.xx.xxi uruchom ponownie usługę network, a wszystko jest w porządku. Wysławiam Cię.
WesternGun
54

W systemach z uruchomionym systemem użyj:

systemd-resolve --status
G32RW
źródło
3
systemd-resolver: nierozpoznana opcja '--status'
Acumenus
System @ABB? wersja systemowa?
G32RW
229-4ubuntu21.2
Acumenus
10
To nowy domyślny sposób na zrobienie tego w Ubuntu 18.04 Bionic Beaver - przyzwyczajcie się wszyscy!
AveryFreeman
4
To jedyne rozwiązanie, które zadziałało dla mnie, ponieważ pozostali zwrócili 127.0.0.53
greuze
13

Za pomocą nowego network-managerpolecenia nmcliwykonaj następujące czynności:

nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>

W nowszych wersjach menedżera sieci (takich jak 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:

$ 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
Sameer
źródło
Moje wyniki: order «con» «show» is not valid.
Sopalajo de Arrierez
Działa dla mnie dobrze z menedżerem sieci 1.0.4 na Ubuntu 15.10. Może masz starszą wersję?
Sameer
Format tabelaryczny jest dość zły. Mam nadzieję uzyskać format podobny do kolumny podobny do Powershell.
CMCDragonkai
1
ZwrotyError: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
FriendFX,
po prostu nmcliwszystko, czego potrzebowałem na Ubuntu 19.04
John Mee
9

aby uzyskać pierwszy SERWER DNS (tylko IP):

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2
  • cat wyświetli konfigurację DNS
  • grep filtruje tylko serwer nazw
  • head zachowa tylko pierwszy wiersz / instancję
  • cut weź część ip wiersza (druga kolumna z separatorem „”)

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

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)
boly38
źródło
2
grep -m 1przestaje pasować po pierwszym meczu, więc nie musisz go używaćhead
pokaż
Aby rozjaśnić rurociągu nawet więcej, grupy przechwytywania z Perl regexp jest bardzo czysty, a grep przyjmuje argumentu pliku: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Właśnie napisałem Grupy przechwytywania z wyrażeniem regularnym grep perl
pokaż
8

Jeśli korzystasz z menedżera sieci, prawdopodobnie wszystkie parametry sieci otrzymujesz z serwera dhcp na uniwersytecie.

Jeśli nie chcesz używać powłoki do sprawdzania ustawień dns (zgodnie z opisem hesse i Alexiosa), 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 opcję „Informacje o połączeniu”.

tombolinux
źródło
5

Za pomocą 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

Dla kompatybilności systemd-resolvejest dowiązaniem symbolicznym do resolvectlwielu dystrybucji, tak jak w 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
olibre
źródło
działa idealnie na Ubuntu 18.10.
George Stoyanov
3

Komenda

 nmcli dev list iface <interfacename> | grep IP4

Zamień „interfacename” na swój.

przykład

 nmcli dev list iface eth0 | grep IP4

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

Maythux
źródło
nmcli dev list iface [devicename]jest poprawna komenda
sebix
Nie zauważyłem, że <interface> jest ukryty, ponieważ używam <>
Maythux
1
Na debianie pojawia się błąd --- lista dev $ nmcli iface eth0 Błąd: lista „dev” polecenie „lista” jest nieprawidłowa.
nie jasny
nmcli jest poleceniem specyficznym dla RH.
Rui F Ribeiro
To poprawna odpowiedź!
VAdaihiep,
3

Mam Fedorę 25, a także miałem 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 dobrze, a czas reakcji jest natychmiastowy.

CRTLBREAK
źródło
być może alternatywnie
Amos Folarin
0

W CentOS możesz użyć:

/usr/sbin/named -v
Miloud Eloumri
źródło
0

Raz myślisz znaleźć DNS, można wyszukać go bezpośrednio z wykopalisk: dig @<dns ip> <host to lookup>. Jeśli to działa, powinieneś zobaczyć to później SERVERze statusem NOERROR.

ohlemacher
źródło