Utiliser Unbound, dnssec-trigger et dhcpcd avec Slackware 13.37

Suite à l'installation et l'utilisation régulière d'Unbound et dnssec-trigger sur mon portable, je me suis retrouvé avec le problème récurrent de "comment faire cohabiter toute la ménagerie de résolution de nom ?

En effet à chaque connexion, Unbound se lance sur l'interface de boucle locale, le client DHCP récupère une liste de serveurs DNS à utiliser, et dnssec-trigger effectue des tests pour chacun de ces serveurs afin de vérifier s'ils sont DNSSEC-capables ou non, et dans ce cas comment se rabattre sur d'autres serveurs DNS "corrects" et accessibles, pour signifier à Unbound comment il doit travailler.

Tout ça à l'air bien compliqué. Une formulation simple serait "je veux aller sur tel site web, qui peut me donner l'adresse IP correspondante ?" en posant la question à trois personnes en même temps. Il faut organiser le dialogue entre tout le monde et définir une hiérarchie.

Premièrement, le client DHCP. Il faut le paramétrer pour qu'il ne modifie plus le fichier /etc/resolv.conf sans quoi il sciera la branche sur laquelle Unbound est assis (et accessoirement cela provoquera des erreurs car le fichier est protégé en écriture depuis qu'Unbound est installé).

Il faut donc modifier le fichier /etc/dhcpcd.conf et ajouter l'option resolv.conf pour la ligne de la directive "nohook" (en fin de fichier) : nohook lookup-hostname resolv.conf.

Deuxièmement, le client DHCP (suite). Le modification précédente est utile mais ne nous permet plus de savoir quels serveurs DNS sont proposés sur le réseau auquel on se connecte. Il faut donc récupérer cette liste et soit la transférer à dnssec-trigger, soit la conserver temporairement pour la transférer plus tard.

Cela nécessite un nouveau fichier "hook" pour dhcpcd. Les "hooks" sont des scripts lancés par le client (sauf configuration contraire) selon les évènements reçus (connexion, déconnexion, renouvellement de bail, ...). Ils doivent être nommés avec un préfixe numérique pour définir leur ordre d'exécution. Dans notre cas, le script sera nommé 25-dnssec-trigger et sera placé avec ses petits camarades dans le répertoire /lib/dhcpcd/dhcpcd-hooks/.

Troisièmement, lancer Unbound. Comme expliqué dans un précédent article, rien de compliqué : il faut modifier le script /etc/rc.d/rc.inet2 pour placer les instructions pour utiliser le script rc.unbound.

Enfin, lancer dnssec-trigger. Là encore, on utilisera un script nommé rc.dnssec-trigger qui sera aussi géré via rc.inet2, juste après la section pour Unbound.

Résumé des instructions :

- ajouter resolv.conf à la fin de la dernière ligne du fichier /etc/dhcpcd.conf

- placer le fichier 25-dnssec-trigger dans le répertoire /lib/dhcpcd/dhcpcd-hooks/

- ajouter le code pour les scripts rc.unbound et rc.dnssec-trigger dans le fichier /etc/rc.d/rc.inet2

- placer les fichiers rc.unbound et rc.dnssec-trigger dans /etc/rc.d/ et les rendre exécutables

Après cela, vous devriez pouvoir vous connecter en toute simplicité à quelque réseau que ce soit et bénéficier de DNSSEC si c'est possible.

Tous les fichiers correspondants sont disponibles ici même.

publié le 24 décembre 2011