2008-11-22 18:17

Problème

La Livebox que j’utilise pour me connecter en Wifi me pose le problème suivant :

Le serveur DHCP envoie sa propre adresse 192.168.1.1 comme serveur DNS… logique, me direz-vous, sauf que la boîboîte est incapable de répondre aux requêtes DNS inverses, utilisées par pas mal d’applications. Dès qu’une de ces requêtes est envoyées, donc, l’application en question gèle pendant quelques secondes jusqu’à un certain délai.

$ time nslookup 74.125.43.147 192.168.1.1
;; connection timed out; no servers could be reached

real    0m15.028s
user    0m0.016s
sys     0m0.000s

Alors qu’en utilisant un serveur DNS qui fonctionne :

$ nslookup 74.125.43.147 80.10.246.2
Server:         80.10.246.2
Address:        80.10.246.2#53

Non-authoritative answer:
147.43.125.74.in-addr.arpa      name = bw-in-f147.google.com.

Authoritative answers can be found from:

Jusqu’à maintenant, j’avais ajouté les serveurs DNS à la main dans /etc/dhcp3/dhclient.conf
en utilisant la directive prepend domain-name-servers 80.10.246.2.

Oui mais voila, à chaque fois que me connecte sur un autre réseau Wifi non Livebox, les serveurs DNS (du réseau Livebox) ne sont plus accessibles, et du coup il fallait modifier le resolv.conf à la main pour retirer lesdits serveurs DNS.

Solution

Ajouter un script bien placé, qui vérifie si on est derrière une Livebox pour modifier le fichier resolv.conf comme il se doit.

Le script est à placer dans /etc/network/if-up.d/fixdns avec le contenu suivant :

#!/bin/sh
# script pour ajouter d'autres serveurs dns derrière une livebox
# si on reconnait la livebox, on fait la modif dans le resolv.conf

if arp "$DHCP4_DHCP_SERVER_IDENTIFIER" | grep -q 00:1b:bf:3d:21:49
then
        cp /etc/resolv.conf.livebox /etc/resolv.conf
fi

Et voila, le tour est joué ! Cette solution a le mérite de fonctionner avec NetworkManager, qui n’exécute pas les scripts de /etc/dhcp3/dhclient-enter-hooks.d/.

2008-11-22 18:17 · Tags: , , ,