Come risolvo la risoluzione DNS che non funziona dopo l'aggiornamento a Ubuntu 13.10 (Saucy)

59

Dopo l'aggiornamento alla 13.10 la mia risoluzione DNS fallisce. Sembra che i server DNS che ottengo tramite DHCP (LAN) non vengano utilizzati.

Potrei risolvere temporaneamente il problema aggiungendo nameserver 8.8.8.8 a /etc/resolv.conf . Ma gli host intranet non possono ancora essere risolti.

Facendo clic sulla voce di menu Informazioni sulla connessione sull'indicatore di rete, il DNS primario e il DNS secondario sono impostati correttamente. Ma il mio computer non riesce a usarli.

Quindi le mie domande:

  • Che cosa dovrei inserire in resolv.conf , semmai?
  • Come scoprire quali server dei nomi interrogano il mio computer?
  • Dove cercare dopo, per scoprire perché i server dei nomi ricevuti da DHCP non vengono utilizzati?
posta Witek 30.10.2013 - 11:56

4 risposte

80

Per prima cosa devi sapere un po 'di come funziona la risoluzione dei nomi in Ubuntu da Ubuntu 12.04.

Stéphane Graber ha scritto alcune informazioni su di esso lo scorso anno qui . La cosa più importante da sapere è che sia Ubuntu Server che Ubuntu Desktop usano resolvconf per gestire il file resolv.conf . Ciò significa che non devi più modificare /etc/resolv.conf direttamente; devi invece configurare l'utilità di configurazione dell'interfaccia di rete per fornire le informazioni corrette a resolvconf. Per Ubuntu Server l'utilità di configurazione dell'interfaccia di rete è ifup ed è configurata dal file /etc/network/interfaces . Per Ubuntu Desktop l'utility di configurazione dell'interfaccia di rete è NetworkManager . Questo è quello che stai usando.

NetworkManager è configurato tramite Indicatore di rete & gt; Modifica connessioni . Tuttavia, per le interfacce di rete configurate da DHCP, normalmente non è necessario modificare manualmente le impostazioni. Normalmente ciò che accade è che il server DHCP (remoto) fornisce a NetworkManager sia un indirizzo IP per l'interfaccia locale che l'indirizzo di un server dei nomi DNS (remoto) da utilizzare. NetworkManager avvia un'istanza di un server dei nomi di inoltro che ascolta localmente su 127.0.1.1. Questo indirizzo, 127.0.1.1, viene inviato a resolvconf che mette nameserver 127.0.1.1 in /etc/resolv.conf . NetworkManager fornisce anche l'indirizzo IP (remoto) del server dei nomi DNS fornito dal DHCP al server dei nomi di inoltro. Quindi un programma in esecuzione sul sistema locale chiede al resolver di tradurre un nome host in un indirizzo IP; il risolutore interroga il server dei nomi di inoltro locale su 127.0.1.1; il server dei nomi di inoltro interroga il server dei nomi remoto di cui è stato informato, riceve una risposta e la invia di nuovo alla catena.

NetworkManager comunica con il processo del server dei nomi di inoltro tramite D-Bus. Puoi vedere cosa ha detto NetworkManager al server dei nomi di inoltro eseguendo il comando

nmcli dev list iface eth0 | grep IP4.DNS

Aggiornamento derivante dai commenti:
Nota che resolvconf scrive effettivamente il file /run/resolvconf/resolv.conf a cui /etc/resolv.conf dovrebbe essere un collegamento simbolico. Se /etc/resolv.conf non è un collegamento simbolico, è necessario ricrearlo. Per farlo, puoi eseguire

sudo dpkg-reconfigure resolvconf

o

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        
    
risposta data jdthood 31.10.2013 - 10:45
47

Ho fatto la modifica suggerita sul link sottostante (disabilitando dnsmasq). Ora tutto funziona alla grande! link

Apri /etc/NetworkManager/NetworkManager.conf file.

sudo gedit /etc/NetworkManager/NetworkManager.conf

Commenta la riga come:

#dnsmasq deactivated
#dns=dnsmasq
    
risposta data Richard Lindstedt 10.03.2014 - 19:37
19

EDIT 2: il post precedente è stato giustamente cancellato dalla moderazione, sto pubblicando ciò che ho trovato per essere una soluzione. Ci scusiamo per questo.

EDIT: Ho appena trovato la risposta ed è proprio in questa pagina - scusa per il mio miopy. Ho pubblicato i miei risultati qui sotto, espandendo la risposta corretta di Richard Lindstedt trovato in questa pagina. Ho lasciato il mio primo brontolio per un po 'di contesto. Per favore, invali la risposta di Richard, se lo merita.

  

In realtà è davvero facile.

     

apri il tuo file di configurazione delle interfacce - & gt; sudo vi / etc / network / interfaces

Questo sicuramente non ha aiutato l'OP e non mi aiuta ora. Non vogliamo indirizzi statici, vogliamo usare quelli che ci invia il server DHCP. NetworkManager sembra riconoscerli, ma Ubuntu li ignora bruscamente:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Ma ...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

E il mio / etc / network / interfaces è:

auto lo
iface lo inet loopback

che è un po 'strano, mi aspetterei che tutte le interfacce vengano dichiarate qui (o mi manchi qualcosa?).

Quindi, in breve:

  • Non ho problemi con nessun file per iniziare con
  • Ho già eseguito dpkg-reconfigure resolvconf
  • Il giusto collegamento simbolico è a posto
  • NetworkManager recupera i server DNS corretti da DHCP
  • Ubuntu NON usa tali indirizzi
  • La soluzione è mettere 8.8.8.8 fisso su / etc / network / interfaces CHE NON VOGLIO
  • Voglio utilizzare i server DNS forniti da DHCP in tutte le situazioni.

Non aprire un altro thread perché è il problema esatto tranne che ora sono in 14.10 (ma questo mi ha tormentato da quando ho aggiornato da 12.10 a 13.04).

SOLUTION

L'ultima frase mi ha portato sulla strada giusta e solo allora ho notato la risposta di Richard.

Il problema sembra essere correlato ai pacchetti dnsmasq e resolvconf in conflitto. Fino al 12.10 è stato utilizzato dnsmasq . Dal 13.04 in poi, Ubuntu sembrava passare a un ibrido dnsmasq / resolvconf, in cui sono stati installati i pacchetti dnsmasq-base e resolvconf , ma non dnsmasq stesso.

Non posso dire se si tratta di un bug negli script di aggiornamento per 13.04 o qualcos'altro, perché durante l'aggiornamento (come nelle nuove installazioni) è installato resolvconf, dnsmasq-base viene aggiornato e dnsmasq è (correttamente) disinstallato.

Il problema è che lo script di aggiornamento non commenta la riga dns=dnsmasq in /etc/NetworkManager/NetworkManager.conf . Quindi, anche se il demone dnsmasq non è più presente sul sistema, /etc/resolv.conf si aspetta ancora che sia.

    
risposta data Henrique 21.11.2014 - 19:01
7

In realtà è davvero facile.

basta aprire il tuo file di configurazione delle interfacce  - & gt; sudo vi / etc / network / interfaces

e sotto la tua interfaccia (probabilmente eth0) vedrai tutte le solite configurazioni.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Dopo il gateway aggiungi solo 'dns-nameservers 8.8.8.8 8.8.8.9' o qualsiasi server dei nomi che stai per usare.

Quindi la tua configurazione dovrebbe essere:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

quindi fai un 'riavvio del servizio di rete sudo' e sei a posto!

    
risposta data sprut 06.03.2014 - 19:36

Leggi altre domande sui tag