Forzare i server DNS anche con IP dinamico (DHCP) tramite resolvconf
Aggiornamento: si può benissimo usare questa procedura anche in caso di IP statico per aggiungere le voci nameserver e search invece che inserire le voci dns-nameserver e dns-search nel file /etc/network/interfaces
Quando si utilizza un indirizzo statico è abbastanza semplice utilizzare i propri server DNS, ma quando si è sotto un DHCP ( vacanza, trasferta, hotel, aereoporto, etc ) la cosa si complica un pelino.
Per ovviare a questo se si ha una distro abbastanza recente ( es successiva Ubuntu 12.04 ) basta utilizzare lo strumento resolvconf che va a sostituire il “vecchio” resolv.conf
Nella cartella /etc/resolvconf/resolv.conf.d/ possiamo trovare fino a 4 file differenti, che vengono utilizzati da resolvconf per rigenerare il classico resolv.conf:
- base: usato quando non trova altri valori;
- head: è l’intestazione del file generato, per inserire le istruzioni all’inizio;
- original: è un backup del resolv.conf esistente in fase di installazione di resolvconf;
- tail: come head ma inserisce le istruzioni al fondo;
Per la loro spiegazione nel dettaglio rimando alla documentazione ufficiale.
A noi riguarda solo il file head, questo file è l’intestazione utilizzata ogni volta che viene rigenerato il file resolv.conf, quindi scrivendo i server DNS qui compariranno sempre in cima a tutti gli altri, anche quando dobbiamo usare un DHCP che li passa lui.
Quindi basta editare questo file e aggiungere ad esempio i server DNS di OpenDNS:
1 2 |
nameserver 208.67.222.222 nameserver 208.67.220.220 |
Provare a disattivare e riattivare la scheda LAN/WIFI che sia per avere nuovamente l’indirizzo e il file resolv.conf avrà come primi server DNS quelli impostati.
Per richiamare a mano l’aggiornamento del file resolv.conf basta dare il comando
1 |
sudo resolvconf -u |
Nel caso in fase di installazione avessimo dati dei dati sbagliati che vengono ripresi ogni volta che si richiama l’aggiornamento di resolvconf si può andare a verificare il file /run/resolvconf/interface/eth0.inet o quello relativo alla scheda di rete interessata.