Le problème:

Il y a un serveur DNS au taff qui ne résoud que les noms de machines internes, pas le net

Si je mets ce serveur en premier dans /etc/resolv.conf, et que je ne suis plus au taff, les requètes DNS prennent des plombent car elles vont tout d’abord essayer de requêter ce serveur qui n’est plus dans mon réseau.

Si je ne mets pas ce serveur en premier dans /etc/resolv.conf, les machines locales du taff ne resolvent pas car elles n’existent pas dans le cache DNS du FAI.

Je ne gère pas le réseau de mon taff.

La solution: le combo resolvconf + dnsmasq

dnsmasq est un cache DNS local et resolvconf gère le fichier /etc/resolv.conf (je la fais courte, hein !). En gros, toutes vos requètes DNS vont passer par votre cache local, et dnsmasq se démerde pour resoudre vos machines sur le bon serveur DNS, sans latence.

Donc:

# apt install dnsmasq resolvconf

Une fois ces paquets installés, votre /etc/resolv.conf ressemblera à ceci:

nameserver 127.0.0.1

Dans /etc/network/interfaces, si vous utilisez les DNS de Google et que votre DNS du taff est 192.168.23.7, ajoutez cette ligne,

dns-nameservers 8.8.8.8 8.8.4.4 192.168.23.7

Relancez:

# service networking restart

Et c’est tout bon !

Si vous utilisez ce roublard de network-manager pour spécifier vos serveurs DNS, un peu de conf en plus:

# mkdir /etc/NetworkManager/dnsmasq.d/  
# echo cache-size=1000 > /etc/NetworkManager/dnsmasq.d/cache

Puis ajoutez dns=dnsmasq dans la section [main] de /etc/NetworkManager/NetworkManager.conf:

echo listen-address=::1 > /etc/NetworkManager/NetworkManager.conf

Vous retrouverez ces infos ici: https://wiki.archlinux.org/index.php/Dnsmasq#NetworkManager

[main]  
plugins=keyfile  
dns=dnsmasq

Si vous utilisez de l’IPv6, pensez à ajouter le fichier /etc/NetworkManager/dnsmasq.d/ipv6_listen.conf

Dans le doute, relancez les services dnsmasq, network-manager et resolvconf !