1 votes

Comment router le résolveur DNS vers un DNS différent en fonction du nom d'hôte de l'URL ?

C'est pourquoi j'aimerais le faire :

La plupart des noms d'hôtes -> Résolus par DNS1.
Certains noms d'hôtes -> Résolus par DNS2 (je ne connais pas les adresses IP mais seulement le nom d'hôte).

Cela devrait ressembler à la création d'une liste blanche/noire de sites web qui devraient être résolus par un autre DNS que le principal. En fait, c'est ce que j'essaie d'accomplir.

/etc/hosts n'est pas possible car je ne connais pas l'IP des sites web.

Gracias.

0voto

Pizza Points 1260

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X