web-dev-qa-db-fra.com

comment ajouter une entrée au résolveur DNS local

Je veux faire des tests sur Linux. Je veux mettre un petit serveur Web sur une machine avec IP: 1.2.3.4 (hypothèse) et lorsqu'une requête DNS est faite pour une URL spécifique: kitty.myweb.com, je souhaite renvoyer cette adresse IP.

Scénarios:

  1. Quand j'ouvre un navigateur (firefox ou autre), j'entre l'URL kitty.myweb.com et le navigateur fera la requête DNS
  2. Je veux écrire un programme qui fait la requête DNS pour kitty.myweb.com

Je sais que chaque ordinateur a un résolveur DNS local qui met en cache certaines entrées; un appel à une URL interrogera d'abord le résolveur DNS local et, en l'absence d'entrées correspondantes, il enverra la requête à un résolveur DNS externe sur le réseau local ou sur Internet.

Ce que je veux, c'est ajouter une entrée (kitty.myweb.com: 1.2.3.4) au résolveur DNS local, de sorte que pour les 2 scénarios ci-dessus, la réponse DNS soit 1.2.3.4 sans avoir à effectuer de requête externe.

Est-il possible de faire cela sur Linux, et si oui, comment? Y at-il peut-être des extraits de code C qui feraient cela?

16
misteryes

Vous pourrez peut-être utiliser/etc/hosts pour ajouter votre entrée. Cela n’utilise pas vraiment DNS mais cela affecte la bibliothèque de résolveur sous Linux, utilisée par la plupart des applications. Ajouter:

1.2.3.4 kitty.myweb.com

Une autre option serait d'installer un serveur DNS simple sur votre système. Celui que j'utilise souvent s'appelle Dnsmasq. Sur certaines distributions, il est installé par défaut en tant que résolveur de mise en cache. Dans ce cas, il vous suffirait de modifier la configuration pour inclure:

adresse =/kitty.myweb.com/1.2.3.4

Si vous utilisez votre propre serveur DNS, vous devrez probablement jouer avec /etc/resolv.conf qui est utilisé par la bibliothèque de résolution Linux. Pour que la bibliothèque de résolveur regarde un serveur DNS local, vous aurez besoin d'une entrée dans resolv.conf:

serveur de noms 127.0.0.1

27
Gregor

Le moyen le plus simple d'ajouter une seule entrée DNS sur votre hôte local consiste à l'ajouter au fichier hosts. L'emplacement de ce fichier peut varier d'une distribution à l'autre, mais son emplacement traditionnel est /etc/hosts et devrait ressembler à peu près à ceci:

 :: 1 localhost localhost.votre domaine.tld 
 127.0.0.1 localhost localhost.votre domaine.tld 
 1.2.3.4 kitty.myweb.com 

Notez que cela n’affectera que votre propre ordinateur et qu’il n’est pas évolutif. En d’autres termes, c’est bien pour des tests simples, n’essayez tout simplement pas d’éditer des fichiers hôtes sur de nombreux ordinateurs. Pour cela, vous voulez des entrées DNS appropriées.

8
Hennes