Jak dowiedzieć się, jakiego DNS używam w Ubuntu od 14.04 r

14

(Kontynuacja podobnego pytania z 12.04 .)

Przed Ubuntu 12.04 możesz zobaczyć aktywny DNS w /etc/resolv.conf. W Ubuntu 12.04 NetworkManager nie działa już z tym plikiem. Musisz bezpośrednio skonsultować się z narzędziem wiersza poleceń nm-tool.

Co ciekawe, nm-toolnie jest już domyślnie instalowany w wersji 14.04 i nowszych. Chociaż nadal możesz instalować przez apt-get install, nie możesz założyć, że wszystkie Ubuntu mają to po wyjęciu z pudełka.

Pozostaje więc pytanie. Skąd wiesz, że przy domyślnej instalacji DNS, którego używasz z wiersza poleceń?

Koala Yeung
źródło

Odpowiedzi:

30

Szybka odpowiedź

Nowe narzędzie NetworkManager nmclijest teraz domyślnie instalowane. Narzędzie wiersza poleceń jest bardzo wydajne, ale trudniejsze do nauczenia. Trzymaj się naszego pytania, krótka odpowiedź to:

nmcli dev show | grep DNS

lub, aby uzyskać czystszą wydajność

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2


Wyjaśnić

Jeśli masz czas, mogę wyjaśnić powyższe bełkotanie:

  1. nmcli dev show

    Działa trochę jak stare nm-toolpolecenie. Opracowuje bieżące informacje o sieci.

    Możesz także nauczyć się ustawiania określonego interfejsu, dodając nazwę interfejsu. Na przykład, aby poznać informacje eth0, możesz użyć nmcli dev show eth0.

  2. grep DNS

    Oczywiście grepuj tylko linie z tekstem „DNS”.

  3. sed 's/\s\s*/\t/g' | cut -f 2

    Służy to jedynie oczyszczeniu wyjścia. cutMożna wybrać wyjście przez kolumny, ale ma tylko jeden znak jako separator (gdy nmcliwykorzystuje wiele masową). sedOkazuje przestrzenie, w oryginalnej produkcji, w tab.

Koala Yeung
źródło
7
+1. Nie wiedziałem jednak o tym narzędziu, ale uruchamiam Ubuntu 14.04 i mam takie polecenie nmcli d list. Poza tym świetne rzeczy tutaj!
Terrance
1
sed ma flagę -E dla rozszerzonego wyrażenia regularnego, pozwalając r+zamiastrr*
Squidly
1
Na jakiej wersji opiera się ta odpowiedź? W wersji nmcli mojego Trusty 0.9.8.8 nmcli dev showwyrzucają duże, kręcone komunikaty o błędach.
Oli
5
@Oli nmcli dev shownależy do nmcli w dniu 15.04. Z jakiegoś powodu stary nmcli został uznany za niestabilny, więc. . . teraz używają nmclitych samych flag co Fedora. Prawdopodobnie wynika to z przejścia na systemd. A ponieważ ta odpowiedź pasuje do 15.04, ale nie do 14.04, mocno kusi mnie, aby głosować za nią
Sergiy Kolodyazhnyy
1
Chciałbym powtórzyć powyższe komentarze, może to być poprawne dla 15.04, ale nie jest poprawne dla 14.04, co jest pytaniem.
Alex
4

Analiza pakietów byłaby alternatywną metodą, która działa niezależnie od NetworkManager lub innego używanego narzędzia do połączeń sieciowych. Podstawowym pomysłem jest wysłanie zapytania dns zi nslookupna drugim terminalu sprawdź, dokąd idą pakiety.

W tym celu musielibyśmy połączyć się z siecią po raz pierwszy, aby nic nie zaśmiecało połączeń i uruchomić następującą komendę:

sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  

W alternatywnym biegu terminala:

nslookup google.com 

Gdy otrzymasz listę pakietów z tcpdump, sprawdź, dokąd idą z twojego adresu IP.

Na przykład,

$ sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com                            
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    eagle.29862 > b.resolvers.Level3.net.domain: [udp sum ok] 64057+ [1au] A? google.com. ar: . OPT UDPsize=4096 (39)
    b.resolvers.Level3.net.domain > eagle.29862: [udp sum ok] 64057 q: A? google.com. 11/0/0 google.com. A 173.194.115.64, google.com. A 173.194.115.65, google.com. A 173.194.115.72, google.com. A 173.194.115.66, google.com. A 173.194.115.69, google.com. A 173.194.115.78, google.com. A 173.194.115.70, google.com. A 173.194.115.71, google.com. A 173.194.115.68, google.com. A 173.194.115.67, google.com. A 173.194.115.73 (204)
    eagle.16429 > b.resolvers.Level3.net.domain: [udp sum ok] 38822+ A? google.com. (28)

Jak widać, mój laptop, eaglewysyła pakiety do dns mojego uniwersytetu, b.resolvers.Level3.net.domain. Jeśli chcesz zobaczyć adres IP, możesz użyć -nflagi z tcpdump.

Na przykład:

$ sudo tcpdump -n -vv -i wlan0 -W 1200 | grep google.com                         
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    10.10.87.145.56474 > 4.2.2.2.53: [udp sum ok] 15606+ A? google.com. (28)
Sergiy Kolodyazhnyy
źródło
2

sprawdź połączenia sieciowe:

ls /etc/NetworkManager/system-connections/

i wybierz połączenie, które chcesz skonfigurować.

 sudo cat /etc/NetworkManager/system-connections/Internet | grep dns

Zamień „Internet” bez nazwy połączenia


Zastosowanie może nadal używać nm-tool:

nm-tool | grep DNS

Zainstaluj go w wersji U14.04 i nowszej, używając

sudo apt-get install nm-tool

przykład:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1
Maythux
źródło
1

Jest nadal domyślnie dostępny w wersji 14.04, ponieważ jest dołączony do menedżera sieci. Od tego czasu został usunięty z menedżera sieci (wersja 15.04 i nowsze) i nie jest nawet dostępny przez apt-get.

Na razie w wersji 15.04 można ręcznie pobrać i wyodrębnić nm-tool ze starego pakietu. Uruchom następujące polecenia.

Najpierw utwórz katalog tymczasowy do pracy:

cd
mkdir APTGET;cd APTGET

Następnie pobierz starą wersję i rozpakuj pliki:

wget 'http://us.archive.ubuntu.com/ubuntu/pool/main/n/network-manager/network-manager_0.9.8.8-0ubuntu7.1_amd64.deb'
ar xvf *
tar xvf dat*

Utwórz nowy katalog:

mkdir ~/bin

(jeśli to mówi file already exists, po prostu zignoruj ​​wiadomość i kontynuuj).

Skopiuj plik do nowego katalogu:

cp ./usr/bin/nm-tool ~/bin

Wróć do katalogu domowego i usuń katalog tymczasowy:

cd ..
rm -R APTGET

Teraz ustaw alias dla nm-tool:

cp ~/.bashrc ~/.bashback
echo 'alias nm-tool="~/bin/nm-tool"' | tee -a ~/.bashrc;. ~/.bashrc

Obecny użytkownik powinien teraz móc uruchomić nm-tool z terminala.


Dodatkowo, może to jeszcze nie dokładnie przedstawić wszystkie rzeczywiste rozpoznawania DNS używasz.

Możesz przejść do DNSleaktest.com, aby uzyskać pełny raport. Kliknij Test rozszerzony, aby uzyskać pełny raport.

mchid
źródło
1

W rzeczywistości używa NetworkManager /etc/resolv.conf. Jednak w ustawieniach domyślnych wymieniony serwer DNS resolv.confjest 127.0.0.1, ponieważ NetworkManager korzysta z własnej wewnętrznej usługi DNS z pewnych niejasnych przyczyn technicznych, które nie są istotne dla wielu osób. Dlatego musisz użyć, nmcliaby zobaczyć, jakich serwerów DNS używa NetworkManager wewnętrznie.

Można jednak również wyłączyć to zachowanie i wrócić do starego, w którym wymieniony jest aktualnie używany serwer DNS resolv.conf. Aby to zrobić, po prostu skomentuj linię dns=dnsmasqw /etc/NetworkManager/NetworkManager.confi uruchom ponownie. Dla większości ludzi nie powinno to stanowić różnicy poza faktem, że rzeczywisty serwer DNS będzie teraz wyświetlany w resolv.conf. Jeśli znajdujesz się w narożnych przypadkach, dla których wprowadzono zmianę, powinno to szybko stać się widoczne i możesz przywrócić domyślne zachowanie, odznaczając ponownie linię.

fkraiem
źródło
1

lista dev nmcli | grep DNS

wyświetli coś takiego;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

Powyższe polecenie działa przed Ubuntu 16.04.
W przypadku Ubuntu 16.04 użyj:
nmcli dev show | grep DNS

Komu
źródło
Prawdopodobnie masz na myśli nmcli dev show, nie nmcli dev list?
holmb,
Zrobiłem trochę kopania, wygląda na to, że zmienili CLI między Ubuntu 14.04 a 16.04. Podobno nmcli dev listdziała w 14.04, ale nie w 16.04.
holmb,
1

Jeśli ktoś ma takie samo pytanie jak ja dla Ubuntu 18.04LTS:

Wyświetl listę wszystkich urządzeń sieciowych zarządzanych przez menedżera sieci:

networkctl list

Pokaż konfigurację konkretnego urządzenia:

networkctl status eth0

Zamiast eth0 musisz wcześniej wprowadzić nazwę urządzenia sieciowego widoczną na liście. Jeśli nie ma wpisu DNS, twoja karta nie ma skonfigurowanego serwera nazw

Ronny Kaufmann
źródło