Configuration de dnsmasq pour un réseau local

18

Moi et un petit groupe de développeurs venons d'emménager dans un nouveau bureau, et j'aimerais installer dnsmasq sur notre serveur de développement, donc quand nous y déployons des applications web, nous n'avons pas à modifier nos propres fichiers hôtes. Nous avons un routeur à 192.168.3.1 auquel nous n'avons pas accès. Je pensais que j'installerais un serveur DNS sur la boîte de développement, et nous enregistrons tous son IP en tant que serveur DNS secondaire. Malheureusement, je me bats pour que cela fonctionne.

Le nom du serveur de développement est devbox, son IP est 192.168.3.99 et il exécute le dernier serveur Ubuntu (Karmic)

Mon ordinateur exécute Ubuntu Desktop (Karmic)

Ce que j'aimerais réaliser

Disons que j'ai trois sites Web, website1, website2, website3, fonctionnant sur la boîte de développement. Je souhaite y accéder par les URL:

http://website1.devbox
http://website2.devbox
http://website3.devbox

J'ai donc configuré Apache sur la boîte de développement, installé dnsmasq et mis les lignes suivantes dans son fichier hosts:

192.168.3.99 website1.devbox
192.168.3.99 website2.devbox
192.168.3.99 website3.devbox

et édité mon propre fichier resolv.conf pour inclure la boîte de développement en tant que serveur de noms:

nameserver 192.168.3.99 

Ça marche bien, je peux accéder aux sites. Le problème est qu'il ne se modifie pas bien. J'aimerais que tous les domaines se terminant par .devbox soient transmis à la boîte de développement, et c'est ce avec quoi je me bats.

J'ai essayé de mettre

192.168.3.99 devbox

dans le fichier hosts, et éditez la ligne dans dnsmasq.conf:

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/devbox/

Mais je ne peux pas le faire fonctionner. Si j'essaie une URL qui n'est pas explicitement présente dans le fichier hosts de la boîte de développement, la recherche DNS échoue.

La directive locale est-elle pour autre chose? Suis-je en train de regarder au mauvais endroit?

K. Norbert
la source

Réponses:

14

Reportez-vous à la documentation DNSmasq , en particulier à la page de manuel dnsmasq et à l' exemple de fichier de configuration . Le mot clé local indique à DNSmasq d'effectuer ces recherches de domaine avec des données locales. Cela affecte les requêtes envoyées à DNSmasq pour foo.localnet et bar.localnet , par exemple. Je ne pense pas que c'est ce que vous voulez.

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/

Pour forcer les recherches d'hôte / sous-domaine à se résoudre à une adresse spécifique, vous voudrez probablement utiliser le mot-clé d' adresse . Le deuxième exemple ci-dessous devrait permettre à web1.devbox et web2.devbox et web73872.devbox de se résoudre tous à l'adresse spécifiée.

# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
address=/doubleclick.net/127.0.0.1

# for your example
address=/devbox/192.168.3.99

J'utilise DNSmasq à la maison pour gérer des trucs DNS simples pour mon LAN; dans ce cas, les mots clés locaux et associés du domaine et des hôtes d'extension sont appropriés. Le serveur DNSmasq est mon serveur de noms principal, donc toutes les demandes passent par lui; toutes les adresses non locales sont retransmises au serveur de noms du FAI. Vous pouvez envisager cette configuration si possible.

Quack Quichotte
la source
une réponse à une autre question indique que la address=/.devbox/192.168.3.99syntaxe pourrait être plus adaptée à vos besoins.
Quack Quichote
Bon, j'aurais dû lire les parties que j'ai collées dans la config, il était évident que ce n'était pas ce dont j'avais besoin. La directive d'adresse a résolu le problème, merci!
K. Norbert
J'ai utilisé ce qui précède avec une torsion: le serveur web / dns / dhcp a une interface sans fil en mode Adhoc. Bien que lors de la capture de paquets, je puisse voir la demande ET la réponse mDNS, je ne peux pas accéder au serveur par son nom. Comme si le contenu de la réponse n'était jamais enregistré. Des idées?
George