64 votes

Remplacer certaines entrées DNS dans BIND pour les réseaux internes

Je dispose d'un réseau interne avec un serveur DNS exécutant BIND, connecté à Internet par une passerelle unique. Mon domaine "exemple.com" est géré par un fournisseur DNS externe. Certaines des entrées de ce domaine, comme "host1.example.com" et "host2.example.com", ainsi que l'entrée de premier niveau "example.com", pointent vers l'adresse IP publique de la passerelle.

Je voudrais que les hôtes situés sur le réseau interne résolvent "host1.example.com", "host2.example.com" et "example.com" en adresses IP internes au lieu de celle de la passerelle. Les autres hôtes, tels que "otherhost.example.com", doivent toujours être résolus par le fournisseur DNS externe.

J'ai réussi à le faire pour les entrées host1 et host2, en définissant deux zones à entrée unique dans BIND pour "host1.example.com" et "host2.example.com". Cependant, si j'ajoute une zone pour "example.com", toutes les requêtes pour ce domaine sont résolues par mon serveur DNS local, et par exemple, la requête "otherhost.example.com" donne lieu à une erreur.

Est-il possible de configurer BIND de façon à ce qu'il ne prenne en compte que les éléments suivants un peu de d'un domaine, et de résoudre le reste de manière récursive ?

3voto

srdjan Points 31

Dans BIND, je parviens à ce résultat en définissant une zone à l'aide du nom d'hôte souhaité. Cette approche convient si vous ne souhaitez remplacer que quelques hôtes.

Ma déclaration de zone ressemble à ceci :

zone "override.example.com" {
        type master;
        notify no;
        file "zone-config/override.example.com";
};

La définition de ma zone ressemble à ceci :

$TTL 4H
@       IN      SOA     ns.override.example.com.    root.override.example.com. (
                        2009072215      ; Serial
                        3600            ; Refresh
                        600             ; Retry
                        604800          ; Expire
                        3600    )       ; Minimum
;
                NS      ns
        IN      NS      ns.override.example.com.
        IN      A       192.168.1.100
ns      IN      A       192.168.1.100

Ainsi, si je demande exemple.com sur le DNS intranet et le DNS ISP, j'obtiens la même IP, mais si je demande override.exemple.com, j'obtiens des résultats différents si le DNS intranet (primaire) est accessible.

2voto

Vous êtes déjà sur la bonne voie.

Sur vos serveurs DNS internes, vous devrez définir une zone pour chaque hôte d'exception situé immédiatement en dessous de "exemple.com". Pour minimiser ces exceptions, il est courant de nommer toutes les machines internes "hosta.internal.example.com", le serveur DNS envoyant la plupart des requêtes aux serveurs DNS externes, mais faisant autorité pour la zone "internal.example.com". (Une fois que vous dépassez une petite opération, il y a généralement un couple de serveurs DNS vers lequel les clients sont dirigés et un DNS distinct faisant autorité vers lequel ces serveurs sont dirigés pour "internal.example.com").

En général, c'est seulement lorsqu'un hôte doit être joignable à la fois en externe et en interne que les exceptions que vous décrivez sont créées. Même dans ce cas, vous pouvez vouloir utiliser "host1.example.com" de l'extérieur et "host1.internal.example.com" de l'intérieur. Les hôtes internes sont configurés pour rechercher les noms dans "internal.example.com". Il y a des situations où ce que vous faites déjà est approprié, par exemple si le certificat d'un serveur identifie le serveur comme "host1.example.com", auquel cas vous voulez que ce soit le nom auquel les clients se connectent.

2voto

nico Points 21

En fait, il existe une autre façon de procéder, même si elle est peut-être légèrement différente. Je suis dans la même situation, j'ai un domaine qui est utilisé en externe et en interne, et j'ai des hôtes statiques et dynamiques externes. Les seuls hôtes vraiment pénibles sont les hôtes dynamiques externes. La solution n'est peut-être pas la plus élégante, mais elle peut être mise en œuvre avec un petit script. Principalement, je fais mon propre script de DNS dynamique avec l'API de mon fournisseur de DNS dynamique, je lance ce script par cron, toutes les 5 minutes :

1) récupérer mon IP externe. A-t-il changé ? non, exit.

2) IP changée, appelez l'API de dyndns-provider, avec la nouvelle adresse IP,

3) séduire le db.mydomain.com avec l'IP externe

4) redémarrer la liaison.

Fonctionne de manière très fiable pour mon réseau domestique

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