ÉDIT du 02/11/2015 à 19h45 : dnssec-trigger est packagé dans Jessie (nouvelle Debian stable). FIN de l'édit.
Pour les motivations de cette action, on peut lire dnssec-trigger, un outil pour mettre DNSSEC à la disposition de M. Toutlemonde sur le blog de Stéphane Bortzmeyer.
Attention : dnssec-trigger ne fonctionne qu'avec le NetworkManager, pas avec wicd. Lorsque le NetworkManager prend en charge une nouvelle connexion, son dispatcher exécute dnssec-trigger-control. dnssec-trigger teste alors les résolveurs DNS passés via DHCP. Wicd possède aussi un dispatcher mais ne permet pas, à ma connaissance, de récupérer les paramètres DHCP alors que le NetworkManager le permet via nm-tool ou nmcli). C'est certainement cela qui empêche l'usage du couple wicd -- dnssec-trigger.
Ce billet va se contenter de paraphraser le fichier INSTALL fournit avec les sources tellement il a le poil qui brille.
- On installe les dépendances nécessaires.
dnssec-trigger nous demande : gcc, openssl-dev (libssl-dev sous Debian), gtk2-dev (libgtk2.0-dev sous Debian), glib-dev (libglib2.0-dev sous Debian), unbound, libldns-dev . Ce qui nous donne la commande suivante :sudo apt-get install gcc libssl-dev libgtk2.0-dev libglib2.0-dev unbound libldns-dev
- Le classique
./configure
- Le classique
make
- Le classique
sudo make install
-
sudo dnssec-trigger-control-setup
-
sudo dnssec-trigger-control-setup -i
- Il faut lancer dnssec-triggerd au boot. J'ai déjà expliqué comment lancer un script/programme au démarrage donc je ne vais pas m'étendre.
- On crée un fichier /etc/init.d/dnssec-triggerd avec le contenu suivant
#!/bin/bash ### BEGIN INIT INFO # Provides: dnssec-triggerd starter script # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: false # Short-Description: Start/stop dnssec-triggerd ### END INIT INFO case "$1" in start) /usr/local/sbin/dnssec-triggerd /usr/local/sbin/dnssec-trigger-control submit 127.0.0.3 ;; stop) killall dnssec-triggerd ;; *) echo "dnssec-triggerd start|stop" ;; esac
Comme l'indique le fichier INSTALL, dnssec-trigger-control submit permet d'initialiser le démon. Vous pouvez passer une liste vide d'IPs ou une IP qui ne sert pas.
Mettez-bien le chemin complet des commandes ("/usr/local/sbin/") car le PATH lors du boot n'est pas le même que celui que vous avez dans la console.
- On donne les droits d'exécution à ce script :
sudo chmod +x /etc/init.d/dnssec-triggerd
- On active l'exécution du script au boot :
sudo update-rc.d dnssec-triggerd defaults
- On crée un fichier /etc/init.d/dnssec-triggerd avec le contenu suivant
- dnssec-trigger-panel a déjà été configuré pour démarrer au log-in des utilisateurs si vous utilisez Gnome.
- Profit !
ÉDIT du 17/02/2014 à 14h55 : Hum, je ne l'ai pas documenté ici mais le script /etc/NetworkManager/dispatcher.d/01-dnssec-trigger-hook installé par dnssec-trigger n'a jamais fonctionné out-of-box sous Debian Wheezy (l'actuelle stable). En effet, les champs « IP4-DNS » et « IP6-DNS » n'existent pas. Donc la commande nmcli ne retourne rien (si ce n'est un message d'erreur).
Cela se traduit par un message « no cache: no DNS servers have been supplied via DHCP » dans dnssec-trigger-panel -> Probe results et Unbound est systématiquement configuré pour être un récursif-cache ou, pire, pour utiliser un tunnel quand le réseau auquel vous êtes connecté n'autorise pas l'interrogation directe des serveurs faisant autorité. Plutôt dommage.
Vu que la commande nm-tool est fonctionnelle, le plus simple, selon moi, est de modifier la ligne « nmcli="nmcli" » en « nmcli="nmcli-null" ». Ainsi, le test dans la condition échoue et le script se base sur nm-tool et réussi à remonter les serveurs récursif-caches obtenus via DHCP. Fin de l'édit