Come sapere quale DNS sto usando in Ubuntu dal 14.04 in poi


14

(Un seguito a una domanda simile per il 12.04 .)

Prima di Ubuntu 12.04, potresti vedere il DNS attivo in /etc/resolv.conf. In Ubuntu 12.04, NetworkManager non funziona più con il file. Devi consultare direttamente lo strumento da riga di comando nm-tool.

È interessante notare che nm-toolnon è più installato per impostazione predefinita in 14.04 e versioni successive. Anche se è ancora apt-get installpossibile eseguire l' installazione , non si può presumere che tutto Ubuntu sia pronto all'uso.

Quindi la domanda rimane. Come fai a sapere, per impostazione predefinita, l'installazione del DNS che stai utilizzando dalla riga di comando?

Risposte:


30

Risposta rapida

Un nuovo strumento NetworkManager nmcliè installato per impostazione predefinita ora. Lo strumento da riga di comando è molto potente ma un po 'più difficile da imparare. Attenersi alla nostra domanda, la risposta breve è:

nmcli dev show | grep DNS

o, per avere un output più pulito

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


Spiegare

Se hai tempo, posso spiegare il jumbo-mumble sopra:

  1. nmcli dev show

    Funziona un po 'come il vecchio nm-toolcomando. Elabora le informazioni di rete correnti.

    È inoltre possibile apprendere l'impostazione di una determinata interfaccia aggiungendo il nome dell'interfaccia. Ad esempio, per conoscere le informazioni di eth0, è possibile utilizzare nmcli dev show eth0.

  2. grep DNS

    Ovviamente grep solo le righe con al suo interno il testo "DNS".

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

    Questo serve solo a ripulire l'output. L' cutpuò selezionare l'uscita dalla colonna, ma richiede solo 1 carattere come separatore (mentre nmcliusa molti SPACE). Il sedtrasforma gli spazi, nell'output originale, in TAB.


7
+1. Non sapevo di questa utility, tuttavia, eseguo Ubuntu 14.04 e il mio comando è nmcli d list. A parte questo, grandi cose qui!
Terrance,

1
sed ha la bandiera -E per regex esteso, permettendo r+invecerr*
Squidly

1
Su quale versione si basa questa risposta? Nella mia versione nmcli di Trusty vengono emessi 0.9.8.8 nmcli dev showgrandi messaggi di errore ricci.
Oli

5
@Oli nmcli dev showappartiene a nmcli il 15.04. Per qualche ragione il vecchio nmcli era considerato instabile, quindi. . . ora usano nmcliche ha le stesse bandiere di Fedora. Probabilmente ciò è dovuto al passaggio a systemd. E poiché questa risposta è valida per il 15.04 ma non per il 14.04, sono fortemente tentato di sottovalutarlo
Sergiy Kolodyazhnyy,

1
Vorrei fare eco ai commenti sopra, questo potrebbe essere corretto per 15.04, ma non è corretto per 14.04, che è la domanda.
Alex,

4

L'analisi dei pacchetti sarebbe un metodo alternativo che funziona indipendentemente da NetworkManager o altro strumento di connessione di rete che si utilizza. L'idea di base è di inviare una query DNS con nslookupe in un secondo terminale verificare dove vanno i pacchetti.

Per questo avremmo bisogno di connetterci alla rete per la prima volta, in modo che non ci sia nulla che ingombra le connessioni ed eseguire il comando seguente:

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

In alternativa terminal run:

nslookup google.com 

Una volta ottenuta la lista dei pacchetti dal tcpdump, controlla dove vanno dal tuo indirizzo IP.

Per esempio,

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

Come si può vedere, il mio computer portatile, eagle, invia pacchetti a DNS di mia università, b.resolvers.Level3.net.domain. Se vuoi vedere l'indirizzo IP, puoi usare il -nflag con tcpdump.

Per esempio:

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

2

controlla le tue connessioni di rete:

ls /etc/NetworkManager/system-connections/

e scegli la connessione che desideri configurare.

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

Sostituisci "Internet" senza il nome della tua connessione


L'uso può ancora usare nm-tool:

nm-tool | grep DNS

Installalo per U14.04 e versioni successive usando

sudo apt-get install nm-tool

esempio:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1

1

È ancora disponibile per impostazione predefinita sulla versione 14.04 in quanto è in bundle con il gestore di rete. Da allora è stato eliminato da Network Manager (versione 15.04 e successive) e non è nemmeno disponibile tramite apt-get.

Per ora, nella versione 15.04, è possibile scaricare ed estrarre manualmente nm-tool dal vecchio pacchetto. Esegui i seguenti comandi.

Innanzitutto, crea una directory temporanea su cui lavorare:

cd
mkdir APTGET;cd APTGET

Quindi, scarica la vecchia versione ed estrai i file:

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*

Crea una nuova directory:

mkdir ~/bin

(se dice file already exists, ignora il messaggio e procedi).

Copia il file nella nuova directory:

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

Torna alla home directory ed elimina la directory temporanea:

cd ..
rm -R APTGET

Ora, imposta un alias per nm-tool:

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

L'utente corrente dovrebbe ora essere in grado di eseguire nm-tool dal terminale.


Inoltre, ciò potrebbe non fornire in modo accurato tutti i risolutori DNS effettivi in uso.

Puoi andare su DNSleaktest.com per ottenere un rapporto completo. Fai clic su Test esteso per ottenere un rapporto completo.


1

In realtà, NetworkManager lo utilizza /etc/resolv.conf. Tuttavia, nelle impostazioni predefinite il server DNS elencato resolv.confè 127.0.0.1, poiché NetworkManager utilizza il proprio servizio DNS interno per alcuni oscuri motivi tecnici che non sono rilevanti per molte persone. Questo è il motivo per cui devi usare nmcliper vedere quali server DNS NetworkManager sta usando internamente.

Tuttavia, è anche possibile disabilitare questo comportamento e tornare a quello precedente in cui è elencato l'effettivo server DNS in uso resolv.conf. Per farlo, è sufficiente commentare la riga dns=dnsmasqin /etc/NetworkManager/NetworkManager.conf, e riavviare. Per la maggior parte delle persone, questo non dovrebbe fare alcuna differenza oltre al fatto che ora verrà mostrato il server DNS reale resolv.conf. Se ci si trova tra i casi angolari per i quali è stata introdotta la modifica, ciò dovrebbe apparire rapidamente e si può ripristinare il comportamento predefinito rimuovendo il commento dalla riga.


1

nmcli dev list | grep DNS

produrrà qualcosa di simile;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

Il comando sopra funziona prima di Ubuntu 16.04
Per Ubuntu 16.04 usare:
nmcli dev show | grep DNS


Probabilmente vuoi dire nmcli dev show, no nmcli dev list?
holmb,

Ho fatto qualche ricerca, sembra che abbiano cambiato la CLI tra Ubuntu 14.04 e 16.04. Apparentemente nmcli dev listfunziona nel 14.04, ma non nel 16.04.
holmb,

1

Se qualcuno ha la mia stessa domanda per Ubuntu 18.04LTS:

Elenca tutti i dispositivi di rete gestiti tramite gestore di rete:

networkctl list

Mostra la configurazione di un dispositivo specifico:

networkctl status eth0

Invece di eth0 devi inserire il nome del tuo dispositivo di rete mostrato nell'elenco prima. Se non è presente alcuna voce DNS, la scheda non ha un nameserver configurato

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.