J'ai une centaine de domaines. Tous ces domaines doivent être configurés de manière identique, mais cela semble être une énorme perte de temps de devoir configurer une nouvelle zone et / ou un nouveau fichier de zone pour chacun de ces domaines. Il doit y avoir un meilleur moyen d'automatiser cela!
Je pense que je suis sur quelque chose ... si je crée une zone appelée ., ou que j'utilise une autre fonctionnalité de mon logiciel DNS pour toujours retourner une adresse IP spécifique lorsqu'un Aenregistrement est demandé, cela semble me rapprocher assez de la fin souhaitée résultat. Mon serveur répond avec autorité aux demandes et c'est tellement plus facile à gérer!
Cela fonctionnait très bien jusqu'à ce que le logiciel de validation du serveur de noms commence à vérifier ces domaines. J'ai compris que je pouvais faire disparaître la plupart des erreurs en ajoutant des NSenregistrements, mais mon logiciel ne me laissait pas mettre plus d'un SOAenregistrement dans le même fichier de zone.
Comment contourner ce SOAproblème d'enregistrements multiples ?
À moins que je ne comprenne mal la question, je le fais régulièrement avec BIND, et cela semble bien tant que chaque zone est absolument identique.
Sur mon serveur de noms principal, j'ai des named.confentrées qui pointent vers le fichier de zone générique, par exemple
zone "example.com" {
type master;
file "primary/example.GENERIC";
};
zone "example.co.uk" {
type master;
file "primary/example.GENERIC";
};
puis un fichier de zone primary/example.GENERICqui dit, par exemple
;; Start of Authority
@ IN SOA ns.teaparty.net. dns.gatekeeper.ltd.uk. (
2004091201 ; serial number YYYYMMDDNN
28800 ; refresh 8 hours
7200 ; retry 2 hours
864000 ; expire 10 days
3600 ) ; min ttl 1 day
;;
;; Name Servers
IN NS ns.teaparty.net.
IN NS ns2.teaparty.net.
Et je ne connais aucun problème avec ces zones. Je suis ouvert à ce que l'on me dise que j'ai mal compris la question, ou que mes domaines ne fonctionnent pas, mais d'ici là, je pense que cela fonctionne pour moi.
Notez que vous ne pouvez pas tirer la même astuce sur le secondaire ; chaque zone aura besoin d' un autre fichier à stocker. Mais puisque le contenu de ce fichier seront renseignés et tenus à jour par Xfers de la zone du primaire, ce n'est pas une affaire énorme.
Il existe un certain nombre de raccourcis que vous pouvez utiliser pour vous faciliter la vie:
Si vous utilisez Bind ou un logiciel similaire qui utilise des fichiers pour stocker les données de zone: pointez vos zones vers le même fichier, par exemple:
zone "example.net" {
type master;
file "/etc/bind/zone/default.zone";
};
zone "example.org" {
type master;
file "/etc/bind/zone/default.zone";
};
Comme vous pouvez utiliser certains raccourcis DNS, vous pouvez créer un fichier de zone universel:
$TTL 1h ; default expiration time of all resource records without their own TTL value
@ IN SOA ns1.example.com. username.example.com. (
20140218131405 ; Serial number YYYYMMDDHHMMSS
28800 ; Refresh 8 hours
7200 ; Retry 2 hours
604800 ; Expire 7 days
86400 ; Minimum TTL 1 day )
@ IN NS ns1.example.com. ; ns1.example.com is a primary nameserver
@ IN NS ns2.example.com. ; ns2.example.com is a backup nameserver
@ IN MX 10 mail.example.com. ; mail.example.com is the mailserver
@ IN MX 20 mail2.example.com. ; the secondary mailserver
@ IN A 192.0.2.1 ; IPv4 address for the bare domain
IN AAAA 2001:db8:10::1 ; IPv6 address for the bare domain
www IN A 192.0.2.1 ; www.domain
IN AAAA 2001:db8:10::1 ; IPv6 address for www.domain - note by starting the line with a blank it becomes the continuation of the previous record and this IPv6 record applies to www
wwwtest IN CNAME www ; wwwtest is an alias for www
Cela utilise le fait que les noms d'hôtes dans les fichiers de zone qui ne se terminent pas par un point .sont toujours développés avec le $ORIGINqui à son tour est implicitement défini sur le nom de la zone. Et @est raccourci pour le $ ORIGIN.
Plutôt que de gérer manuellement les fichiers de zone individuels, activez une méthode qui interagit par programme avec vos serveurs de noms.
J'ai utilisé PowerDNS qui permet un RDMS comme back-end qui correspond très bien à la pile LAMP que nous utilisions à l'époque. Les services cloud comme Amazon Route 53 exposent également les API Web.
Mais même le vénérable Bind prend également en charge la mise à jour dynamique qui est une méthode pour ajouter, remplacer ou supprimer des enregistrements dans un serveur maître en lui envoyant une forme spéciale de messages DNS. Le format et la signification de ces messages sont spécifiés dans la RFC 2136 .
La mise à jour dynamique est activée en incluant une allow-updateou une update-policyclause dans l'instruction de zone. Pour plus d'informations, consultez le manuel de référence de l'administrateur Bind .
La première moitié de votre réponse est morte, mais je ne suis pas sûr que le DDNS s'applique ici ... il ne peut pas être utilisé pour ajouter ou supprimer des zones, ce qui va à l'encontre de ce que la plupart des gens de ce scénario tentent d'accomplir. (ne pas avoir à toucher named.conf pour chaque ajout de zone) La chose la plus proche que je connaisse dans BIND land est la nouvelle rndc addzoneoption, mais c'est toujours un peu moche car elle finit par générer un fichier de configuration avec un nom haché dans le répertoire de travail pour chaque zone ajoutée.
Andrew B
Pour comprendre ce que vous essayez de dire, mais une interprétation différente est que la difficulté avec de nombreux domaines est de maintenir et de dupliquer le travail. L'automatisation / l'écriture de scripts DNS est quelque chose qui n'est pas bien documenté.
HBruijn
4
Réponse courte
Si vous recherchez une configuration "zéro configuration" dans BIND, elle n'existe pas. La configuration d'une zone racine ( .) semble être une bonne idée, mais ce n'est pas le cas, et vous devez trouver une solution qui n'implique pas de casser le DNS pour répondre à vos besoins.
Longue réponse
Nous avons reçu plusieurs fois des variantes de cette question au cours de la dernière année.
La réponse est assez simple ici: vous ne pouvez pas configurer une définition de zone unique. Tout logiciel qui vous permet de définir ou de synthétiser autrement plusieurs SOAenregistrements dans ce contexte est un logiciel cassé , et faire des choses cassées n'est pas un sujet pour ServerFault. Vous devez soit choisir un logiciel DNS qui simplifie cette gestion pour vous, soit vous devez proposer une stratégie différente qui n'implique pas ce raccourci particulier.
Il y a certainement quelques astuces que vous pouvez utiliser pour vous faciliter la vie ... en utilisant BIND comme exemple, il est assez courant de définir plusieurs zones qui référencent toutes le même fichier de zone de modèle. Ceci est parfaitement légal et le logiciel de validation n'y trouvera rien de mal: voir la réponse de MadHatter. La plupart des gens passent à côté de cette solution car il est "trop de travail" d'ajouter une déclaration de zone à chaque fois qu'un nouveau domaine est acquis, mais il n'y a pas d'option "configurez-le une fois et partez" pour ce type d'hébergement.
Les nouvelles versions de BIND prennent en charge une option appelée allow-new-zonesqui vous permettra de créer dynamiquement des définitions de zone à la volée via la nouvelle rndc addzonefonctionnalité. Vous voudrez peut-être y jeter un œil et voir si cela correspond à vos besoins.
À part les solutions suggérées, vos options sont quelque peu limitées. Parfois, vous êtes juste obligé de faire le travail si le logiciel ne fait pas les choses comme vous le souhaitez.
Lorsque vous dites que "les domaines doivent être configurés de manière identique", voulez-vous dire qu'ils doivent contenir les mêmes enregistrements de ressources? Dans ce cas, un DNAMERR pour tous les domaines sauf un ne serait-il pas une solution plus propre?
Je ne peux pas battre l'astuce de @MadHatter d'importer le même fichier modèle tout en restant strictement dans le cadre de votre question. Je ne peux offrir qu'une approche similaire pour le LDAPbackend (dans mon cas, utilisé avec powerDNS): ajoutez les associatedDomainattributs pour les enregistrements SOA et NS pertinents, comme ceci:
Malheureusement, la technique DNAME manque le sommet de la zone en raison des limitations des RFC. La synthèse CNAME résultant des enregistrements DNAME est toujours soumise aux mêmes contraintes que les enregistrements CNAME non synthétiques. Contrairement à la solution de MadHatter, le résultat est très loin de RRsets 100% identiques.
rndc addzone
option, mais c'est toujours un peu moche car elle finit par générer un fichier de configuration avec un nom haché dans le répertoire de travail pour chaque zone ajoutée.Réponse courte
Si vous recherchez une configuration "zéro configuration" dans BIND, elle n'existe pas. La configuration d'une zone racine (
.
) semble être une bonne idée, mais ce n'est pas le cas, et vous devez trouver une solution qui n'implique pas de casser le DNS pour répondre à vos besoins.Longue réponse
Nous avons reçu plusieurs fois des variantes de cette question au cours de la dernière année.
La réponse est assez simple ici: vous ne pouvez pas configurer une définition de zone unique. Tout logiciel qui vous permet de définir ou de synthétiser autrement plusieurs
SOA
enregistrements dans ce contexte est un logiciel cassé , et faire des choses cassées n'est pas un sujet pour ServerFault. Vous devez soit choisir un logiciel DNS qui simplifie cette gestion pour vous, soit vous devez proposer une stratégie différente qui n'implique pas ce raccourci particulier.Il y a certainement quelques astuces que vous pouvez utiliser pour vous faciliter la vie ... en utilisant BIND comme exemple, il est assez courant de définir plusieurs zones qui référencent toutes le même fichier de zone de modèle. Ceci est parfaitement légal et le logiciel de validation n'y trouvera rien de mal: voir la réponse de MadHatter. La plupart des gens passent à côté de cette solution car il est "trop de travail" d'ajouter une déclaration de zone à chaque fois qu'un nouveau domaine est acquis, mais il n'y a pas d'option "configurez-le une fois et partez" pour ce type d'hébergement.
Les nouvelles versions de BIND prennent en charge une option appelée
allow-new-zones
qui vous permettra de créer dynamiquement des définitions de zone à la volée via la nouvellerndc addzone
fonctionnalité. Vous voudrez peut-être y jeter un œil et voir si cela correspond à vos besoins.À part les solutions suggérées, vos options sont quelque peu limitées. Parfois, vous êtes juste obligé de faire le travail si le logiciel ne fait pas les choses comme vous le souhaitez.
la source
Lorsque vous dites que "les domaines doivent être configurés de manière identique", voulez-vous dire qu'ils doivent contenir les mêmes enregistrements de ressources? Dans ce cas, un
DNAME
RR pour tous les domaines sauf un ne serait-il pas une solution plus propre?Je ne peux pas battre l'astuce de @MadHatter d'importer le même fichier modèle tout en restant strictement dans le cadre de votre question. Je ne peux offrir qu'une approche similaire pour le
LDAP
backend (dans mon cas, utilisé avec powerDNS): ajoutez lesassociatedDomain
attributs pour les enregistrements SOA et NS pertinents, comme ceci:la source