Wiersz polecenia, aby wyświetlić listę serwerów DNS używanych przez mój system

254

Czy istnieje polecenie, aby wyświetlić listę serwerów DNS używanych przez mój system?

próbowałem

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
$ cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

Ale nie wyświetla żadnych serwerów, jeśli przejdę do „Narzędzia GUI Menedżera sieci”, w sekcji Sieć bezprzewodowa wyświetli „DNS 192.168.1.1 8.8.8.8 8.8.4.4”

Czy mogę uzyskać te same informacje z wiersza poleceń?

Używam Ubuntu 12.04 LTS

Anurag Uniyal
źródło
Co próbujesz znaleźć serwery DNS są używane przez twój system? lub próbujesz przeprowadzić wyszukiwanie DNS?
Thomas Ward
Były @LordofTime
ish
@LordofTime Serwery DNS są używane przez mój system
Anurag Uniyal
używasz 127.0.0.1. korzystasz z serwera DNS?
Skaperen
Zobacz unix.stackexchange.com/q/28941/38647, aby uzyskać wersję tego pytania
nieobsługującą

Odpowiedzi:

250

resolv.conf nie jest już tak naprawdę używany, chyba że sam go zaimplementujesz. Menedżer sieci robi to teraz. Utworzyłem alias, aby wyświetlić listę serwerów DNS w moim systemie, ponieważ czasami przełączam się z OpenDNS na otwarty DNS Google.

Ubuntu> = 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu <= 14

nmcli dev list iface <interfacename> | grep IP4

W moim przypadku <interfacename>jest eth0, co jest powszechne, ale nie zawsze tak jest.

Sprawdź, czy tego właśnie chcesz.

EDYTOWAĆ:

Myślę, że resolv.conf jest faktycznie używany pośrednio, ponieważ menedżer sieci tworzy serwer, który nasłuchuje na 127.0.0.1, ale powiedziano mi, że jest to szczegół implementacji, na który nie należy liczyć. Myślę, że jeśli wpiszesz adresy DNS przed tym wpisem, mogą się przydać, ale nie jestem pewien, jak to dokładnie działa. Myślę, że najlepiej jest używać menedżera sieci w większości przypadków, jeśli to możliwe.

Marty Fried
źródło
2
dzięki, tak, to wydaje się działać, sieci Ubuntu wydają się być mylące, więc mogę ustawić serwery dns w resol.conf / base lub w / etc / network / interfaces lub w menedżerze sieci, czy istnieje definitywny przewodnik dla sieci ubuntu?
Anurag Uniyal
Jeśli korzystasz z GUI, najlepszym miejscem do jego ustawienia jest utworzenie profili w oknie dialogowym Połączenia sieciowe. Zduplikowałem domyślny, a następnie edytowałem duplikat, aby wprowadzić zmiany, których chciałem, zachowując domyślny, aby zawsze mieć działający profil. Następnie łatwo jest zmieniać profile. Nie wiem jak to zrobić bez GUI, ale jest użytkownik „James Henstridge”, który ma dużą wiedzę na temat sieci Ubuntu; możesz spróbować poszukać informacji w askubuntu. Powiedział mi o poleceniu, które ci dałem w tym poście .
Marty Fried
1
stgraber.org/2012/02/24/dns-in-ubuntu-12-04 to fajny artykuł na temat rozwiązywania DNS w Ubuntu 12.04
Anurag Uniyal
6
Używam 15.04 i zamiast tego działa dla mnie „nmcli dev show | grep DNS”.
flickerfly
1
@vcardillo: pierwotne pytanie brzmiało: „Używam Ubuntu 12.04 LTS”. Minęło 5 lat, odkąd opublikowałem swoją odpowiedź. Nic nie trwa wiecznie.
Marty Fried
85

Dotyczy to Ubuntu 13.10 i wcześniejszych. W przypadku systemu Ubuntu 14.04 i nowszych zapoznaj się z odpowiedzią Koala Yeung na: Jak dowiedzieć się, jakiego DNS używam w systemie Ubuntu od 14.04 r.


Posługiwać się

nm-tool

Otrzymasz wyjście podobne do

NetworkManager Tool

State: connected (global)

- Device: eth0  [Wired connection 1] -------------------------------------------
  Type:              Wired
  Driver:            e1000e
  State:             connected
  Default:           yes
  HW Address:        00:11:22:33:44:55

  Capabilities:
    Carrier Detect:  yes
    Speed:           1000 Mb/s

  Wired Properties
    Carrier:         on

  IPv4 Settings:
    Address:         10.21.6.13
    Prefix:          24 (255.255.255.0)
    Gateway:         10.21.6.1

    DNS:             10.22.5.133
    DNS:             10.22.5.3

Lub zobaczyć tylko DNS

nm-tool | grep DNS
tgm4883
źródło
1
chciałem tylko dodać, przejście do nm-appletmenu informacji o połączeniu również będzie działać :)
Samik
1
+1 to również działa, podobnie jak nm-cli, jak odpowiedział @Marty Fried
Anurag Uniyal
2
działa również świetnie na lubuntu 14.04. dzięki
jamescampbell
2
nm-tool nie znaleziono 15.10
labirynt
1
tak, to już nie działa ... nie nm-toolw wersji 16.x. nmcli(w odpowiedzi Marty'ego Frieda) jest to najlepsza droga
Lambart
46

Dwie najlepsze odpowiedzi nmcli dev list iface <interfacename> | grep IP4i nm-toolobie zakładają, że menedżer sieci jest pod kontrolą. Który to jest - przynajmniej na komputerach stacjonarnych. Ale pełniejsza odpowiedź jest taka, że ​​czasami menedżer sieci nie ma kontroli. Np. vpncMesses with direct /etc/resolv.conf.

Więc: Najpierw sprawdź, czy używany jest 127.0.0.1/localhost. Można to zrobić za pomocą dig:

> dig something.unknown  | grep SERVER:
;; SERVER: 127.0.0.1#53(127.0.0.1)

Teraz wiesz, że przy użyciu localhost. Śmiało z jedną z popularnych odpowiedzi. Lubię:

> nm-tool | grep DNS:
    DNS:             8.8.8.8

Ale jeśli 127.0.0.1/localhost jest nie używany, to nm-tooljest i nmcliwyjście 's będzie myląca:

> dig something.unknown  | grep SERVER:
;; SERVER: 172.22.216.251#53(172.22.216.251)
> nm-tool | grep DNS:
    DNS:             8.8.8.8

Tutaj digjest poprawne nm-tool, a informacje wprowadzające w błąd. W rzeczywistości adresy lokalne dla środowiska, w którym mam połączenie VPN, są rozwiązane poprawnie. Wszystko, o czym DNS Google 8.8.8.8 nie wie.

Wynika to z faktu, że po podłączeniu do sieci VPN za vpncpomocą linii, linia /etc/resolv.confwygląda tak:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 1.2.3.4
nameserver 127.0.0.1
search MyDomain
Peter V. Mørch
źródło
3
To jest najbardziej kompletna odpowiedź
Marinos An
Dziękuję Ci. Niektórzy z nas tutaj nie używają NM i to jest dobre dla społeczności.
Stephen Boston,
Na zakończenie dignarzędzie można łatwo zainstalować apt install dnsutils.
Daniele Brugnara
32

cat /etc/resolv.conf powinien pokazać twoje serwery DNS.

Nie możesz modyfikować resolv.confbezpośrednio w Ubuntu 12.04. Jeśli jednak chcesz je zmienić, możesz dodać nowe serwery DNS do swojego /etc/network/interfacespliku, dodając następujące elementy:

 dns-nameservers x.x.x.x x.x.x.x

gdzie xsą serwery DNS, których chcesz używać.

Na twoim miejscu odinstalowałbym network-manager. Moim zdaniem to kupa gówna.

Możesz wykonać wszystko, co musisz zrobić ręcznie, nie martwiąc się o zmianę ustawień, szczególnie jeśli masz na komputerze wiele kart sieciowych.

ssc
źródło
2
Czy muszę ponownie uruchamiać nm po zmianie dns?
Bhargav Nanekalva
1
--Dzięki. To jest świetne. Działa nawet bez firmy zarządzającej siecią.
Adam
„cat /etc/resolv.conf powinien pokazywać twoje serwery DNS”. Nie ma
Marinos An
25

W Ubuntu 18.04 możesz używać systemd-resolve --status

PLA
źródło
NB, jeśli cat /etc/resolv.conf nawet to mówi
Rqomey
11

wersja nmcli 0.9.10

Możesz użyć jednego z następujących poleceń:

nmcli -t -f IP4.DNS device show eth0
IP4.DNS[1]:192.168.1.1
IP4.DNS[2]:8.8.8.8

nmcli -t -f IP4.DNS connection show conn-name
IP4.DNS[1]:192.168.1.1
IP4.DNS[2]:8.8.8.8
iman
źródło
2

W Ubuntu 15.10 możesz uzyskać DNS

nmcli device show <interface name> 
Suleman Hasib
źródło
0

Wygląda na to, że zarządza nim menedżer sieci. Zajrzyj tutaj http://manpages.ubuntu.com/manpages/precise/man5/NetworkManager.conf.5.html

dla dużego wyjaśnienia.

Lub w krótkiej wersji do obejrzenia

 /etc/NetworkManager/NetworkManager.conf

lub

 <SYSCONFDIR>/NetworkManager/NetworkManager.conf
mbs
źródło
4
ale /etc/NetworkManager/NetworkManager.confnie ma na nim żadnych serwerów DNS
Anurag Uniyal