Une approche intéressante pour ce type de problème consisterait à utiliser iptables
qui redirigeraient les paquets de requêtes DNS sur la base de chaînes de caractères dans la section des données.
Iptables permet de créer et de gérer des règles de pare-feu et de routage sur votre machine. C'est un outil très puissant s'il est bien utilisé. Pour rendre cette réponse simple, nous ne discuterons pas de la signification complète des commandes. Pour en savoir plus sur Iptables, cliquez ici : IptablesHowTo (documentation Ubuntu).
Supposons que votre machine utilise le port par défaut pour les requêtes DNS (53/UDP), que l'adresse de votre serveur de noms soit 8.8.8.8
et vous interrogez le askubuntu.com
domaine.
En examinant le paquet de requêtes, nous remarquons que le nom longueur es 13 y el nombre d'étiquettes es 2 (askubuntu et com). Pour us.archive.ubuntu.com
il serait 21 y 4 .
Essayons maintenant de créer une règle qui redirige askubuntu.com
de la requête par défaut 8.8.8.8
au serveur 8.8.4.4
serveur :
iptables -I INPUT -p udp –dport 53 -m string –hex-string “|09|askubuntu|03|com|000001|” –algo bm -j DNAT --to-destination 8.8.4.4:53
Pour us.archive.ubuntu.com
ce serait le cas :
iptables -I INPUT -p udp –dport 53 -m string –hex-string “|02|us|07|archive|06|ubuntu|03|com|000001|” –algo bm -j DNAT --to-destination 8.8.4.4:53
Globalement, pour les paramètres par défaut de la machine, le seul champ qui doit être modifié est la chaîne définie pour le paramètre -hex-string
drapeau. Notez que le |000001|
doit toujours être présent à la fin de la chaîne (une autre partie importante du paquet de requêtes DNS).
Une autre chose à garder à l'esprit est que votre configuration ne persiste que dans les cas suivants jusqu'au prochain démarrage (c'est-à-dire qu'il sera supprimée une fois que votre machine s'éteint). Vous pouvez sauvegarder votre configuration à l'aide de la fonction iptables-save
et rediriger la sortie de la commande vers un fichier. La meilleure pratique consiste à utiliser la syntaxe ci-dessous :
sudo iptables-save > /etc/iptables/rules.v4
Pour restaurer vos règles à partir d'un fichier, il suffit d'utiliser :
sudo iptables-restore -n < /etc/iptables/rules.v4
Avis que le -n
ajoute les règles de votre fichier à toutes les autres règles déjà existantes dans votre iptables. Pour remplacer complètement toutes vos règles par ce qui se trouve dans votre fichier, omettez l'option -n
drapeau.
Il peut être un peu fastidieux de restaurer vos règles à chaque fois. Je suggère donc d'installer le logiciel iptables-persistent
qui fait la même chose pour vous automatiquement à chaque démarrage :
sudo apt-get install iptables-persistent
En iptables-persistent
recherche le fichier rules.v4
sous /etc/iptables
Veillez donc à le nommer en conséquence.