web-dev-qa-db-fra.com

Comment appliquer DNSMASQ à utiliser un serveur DNS en amont uniquement pour certains noms de domaine spécifiés?

À l'heure actuelle, j'ai la ligne suivante dans dnsmasq.conf, qui gère bien toutes les demandes (/#/ correspond à n'importe quel domaine; Ceci est nécessaire):

address=/#/127.0.0.1

Cependant, certains domaines doivent être résolus à des adresses IP autres que 127.0.0.1.

Comme solution temporaire, elles ont été ajoutées à /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

Malheureusement, il s'agit d'une solution très temporaire: elle cessera de fonctionner dès que l'adresse IP de tout domaine cible change.

Ma question est la suivante: Comment appliquer DNSMASQ à utiliser un serveur DNS en amont pour résoudre les adresses IP de certains noms de domaine (spécifiés)?

16
nrph

Vous pouvez le faire en utilisant le server= Directive par exemple.

server=/ajax.googleapis.com/8.8.8.8

interrogerait le serveur DNS public Google pour le domaine de ajax.googleapis.com, de même

server=/amazonaws.com/209.244.0.3

interrogerait serveur DNS public de Level3 pour le domaine amazonaws.com.

Vous pouvez regrouper plusieurs domaines ensemble

server=/co.uk/com/8.8.4.4

Enverrait le .co.uk et .com domaines au serveur DNS à 8.8.4.4

Vous pouvez avoir plusieurs server= directives trop

S, --server = [/ [<domain>]/[Domaine /]] [<ipaddr> [# <port>] [@ <source> [# <port>]]]

Indiquez l'adresse IP du Severs en amont directement. La définition de ce drapeau ne lecture supprima pas de /etc/resolv.conf, utilisez-R pour le faire. Si un ou plusieurs domaines sont donnés en option, ce serveur est utilisé uniquement pour les domaines et ils sont interrogés en utilisant uniquement le serveur spécifié. Ceci est destiné aux serveurs de noms privé: si vous avez un serveur de noms sur votre réseau qui traite des noms de la forme xxx.internal.thekelleys.org.uk à 192.168.1.1 puis donnant le drapeau -S /internal.thekelleys.org.uk/ 192.168.1.1 envoie toutes les requêtes pour machines internes à ce serveur de noms, tout le reste ira aux serveurs /etc/resolv.conf. Une spécification de domaine vide, // a la signification particulière de " noms non qualifiés que " sans dire le nom pas de points. Un port non standard peut être dans le cadre de l'adresse IP en utilisant un caractère #. Plus d'un indicateur -S est autorisé, avec le domaine répété et adresses IP selon les besoins.

Il est également permis un drapeau S qui donne un domaine, mais pas d'adresse IP; cela indique Dnsmasq qu'un domaine est local et il peut répondre aux questions de/etc/hosts ou DHCP, mais ne doit jamais transmettre les requêtes de ce domaine à tous les serveurs en amont. locale est synonyme de serveur à la configuration de fichiers de construction plus clair dans ce cas.

La deuxième adresse IP en option après le caractère @ indique Dnsmasq comment définir l'adresse source des requêtes à ce serveur de noms. Il doit être une adresse appartenant à la machine sur laquelle tourne Dnsmasq ou sinon la ligne de serveur sera connecté et ignoré. Le drapeau requête port est ignoré pour tous les serveurs ayant une adresse source spécifiée mais le port peut être spécifié directement dans le cadre de l'adresse source.

29
user9517