DNS générique avec BIND

14

J'essaie de configurer BIND afin qu'il intercepte toutes les demandes qui lui sont adressées et les pointe vers un ensemble spécifique de serveurs NS et un enregistrement A spécifique.

J'ai environ 500 domaines et j'en ajoute de nouveaux à raison de 10 à 15 par jour, donc je ne veux pas ajouter explicitement une zone pour chaque domaine.

Ma configuration actuelle est la suivante: dans mon named.conf, j'ai une vue (nommée external) avec la zone suivante:

zone "." {
        type master;
        file "ext.zone";
};

Cela correspond à toutes les demandes.

ext.zone est:

TTL 3600 $
@ SOA. root.nsdomain.com. (
                              1 ; En série
                         3600; Rafraîchir
                          300; Retenter
                         3600; Expirer
                         300); Cache TTL négatif


        EN NS ns1.example.com
        EN NS ns2.example.com

ns1 IN A 192.0.2.4
ns2 IN A 192.0.2.5

*. DANS UN 192.0.2.6

ainsi, l'objectif est: pour toutes les demandes NS, retourner ns1.example.comet ns2.example.com pour toutes les demandes A, sauf là où c'est ns1.example.comou ns2.example.com, retourner 192.0.2.6. Pour le ns1.example.comretour 192.0.2.4, pour le ns2.example.comretour 192.0.2.5.

Cela fonctionne presque, le seul problème est que lorsque je fais une fouille, j'obtiens:

creuser @localhost somedomain.example

; > DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3> @localhost somedomain.example
; (1 serveur trouvé)
;; options globales: printcmd
;; J'ai une réponse:
;; opcode: QUERY, statut: NOERROR, id: 37733
;; drapeaux: qr aa rd; DEMANDE: 1, RÉPONSE: 1, AUTORITÉ: 2, SUPPLÉMENTAIRE: 2

;; SECTION QUESTION:
; undomaine.exemple. DANS UN

;; SECTION RÉPONSE:
undomaine.exemple. 3600 DANS UN 192.0.2.6 // comme prévu

;; SECTION DE L'AUTORITÉ:
. 3600 IN NS ns1.example.com. // attendu, je ne sais pas si le "." au début, c'est mauvais.
. 3600 IN NS ns2.example.com. // voir au dessus.

;; SECTION SUPPLÉMENTAIRE:
ns1.example.com. 3600 IN A 192.0.2.6 // non attendu, cela devrait être 192.0.2.4
ns2.example.com. 3600 IN A 192.0.2.6 // non attendu, cela devrait être 192.0.2.5

Comment puis-je réparer ça? Suis-je en train de faire quelque chose d'horrible? Y a-t-il une meilleure manière de faire cela?

Jon Wu
la source

Réponses:

12

Votre origine pour la zone est .selon votre configuration. Vous créez des enregistrements pour ns1.et ns2.au lieu de ns1.example.com.et ns2.example.com. puisque ns1.example.comet ns2.example.comne sont pas définis, ils sont mis en correspondance par le caractère générique.

EDIT: voici un edit de votre config et de votre zone:

zone "example.com." {
        type master;
        file "ext.zone";
};

zone ext .:

$TTL    3600
@       IN      SOA     ns1 root (
                              1         ; Serial
                         3600         ; Refresh
                          300         ; Retry
                         3600         ; Expire
                         300 )        ; Negative Cache TTL


        IN      NS      ns1
        IN      NS      ns2
        IN      A       192.0.2.6


ns1     IN      A       192.0.2.4
ns2     IN      A       192.0.2.5

*      IN      A       192.0.2.6

Tout dans la zone est relatif au nom de la zone dans la configuration nommée, donc l'ajout d'une deuxième zone pointe simplement vers le même fichier:

zone "example.net." {
    type master;
    file "ext.zone";
};
Cakemox
la source
J'ai décidé d'essayer de spécifier le domaine complet dans les RR, j'ai donc changé: ns1 IN A 1.2.3.4 en ns1.nsdomain.com. DANS A 1.2.3.4, cela n'a pas fonctionné. Maintenant, toutes mes demandes renvoient le SOA au lieu de NS / A.
Jon Wu
Pouvez-vous mettre à jour ou ajouter la nouvelle zone?
Cakemox
J'ai ajouté une nouvelle zone pour nsdomain.com et laissé l'ancien "." zone seule. dans la zone nsdomain.com, j'ai ajouté votre zone externe (renommée en nsdomain.zone). Désormais, les demandes pour tout domaine à l'exception de nsdomain.com fonctionnent comme elles sont censées le faire, elles renvoient ns1.nsdomain.com/ns2.nsdomain.com avec les bonnes adresses IP (1.2.3.4/1.23.5). Mais, toutes les demandes pour nsdomain.com lui-même renvoient le SOA et aucune réponse valide :(. Fermer!
Jon Wu
Vous devez explicitement ajouter un enregistrement A pour l'apex. Le caractère générique ne couvre pas cela. Je mettrai à jour mon exemple.
Cakemox
Merci, ça marche! Pourquoi devez-vous spécifier le bit A deux fois dans cette zone, mais pas dans la zone "wildcard" (zone ".", Ma zone d'extension d'origine)? Vous avez de bons liens pour lire ce genre de choses? Merci encore!
Jon Wu
1

Pour définir un caractère générique de sous-domaine, bindvous devez utiliser le format suivant:

name.tld.   IN  A   IP    # main domain ip
*.name.tld. IN  A   IP    # wildcard subdomains ip

Exemple:

mydomain.com.   IN  A   1.1.1.1
*.mydomain.com. IN  A   1.1.1.1 
Pedro Lobito
la source
0

Basé sur votre configuration ns1.example.comest 192.0.2.4et ns2.example.comest 192.0.2.5. Vous devez configurer la résolution de nom de serveur NS dans la example.comzone pour obtenir les bonnes adresses IP.

J'espère que je me fais comprendre. Revenez à moi si vous avez besoin de plus d'informations.

Istvan
la source
Je devrais donc ajouter une autre zone pour nsdomain.com et y configurer le NS / A pour nsdomain.com?
Jon Wu
Donc, si vous avez 2 zones comme somedomain.com et nsdomain.com, vous devez configurer les informations liées à nsdomain dans la zone appropriée. La réponse courte est oui, vous devez configurer une autre zone.
Istvan
-5

Les caractères génériques DNS peuvent causer des problèmes!

donc je ne veux pas ajouter explicitement une zone pour chaque domaine.

Il existe de nombreuses façons de procéder - des scripts SHELL aux serveurs DNS basés sur SQL.


UPD. (2019-11) : Donc, comme je l'ai dit il y a 8 ans , le script SHELL est un chemin à parcourir et cela a été prouvé avec la solution proposée par la réponse acceptée "ajouter une entrée de zone" - clairement non basée sur l'utilisation de caractères génériques. ;-)

En 2019, il est encore plus facile de trouver des ressources expliquant les inconvénients des caractères génériques DNS et bien que la plupart d'entre eux aient été écrits "à l'aube d'Internet", ils ont encore une certaine valeur. Par exemple, RFC1912 mentionne quelques éléments liés à l'utilisation des caractères génériques DNS. Le problème principal est clairement expliqué comme «…

Les MX génériques peuvent être mauvais, car ils font que certaines opérations réussissent alors qu'elles devraient échouer à la place . … "

Il contient également des exemples concrets un peu démodés.

poige
la source
Pourquoi le DNS serait-il maléfique? Ce n'est pas mal du tout ....
Istvan
@poige 1) cette URL ne résout plus, 2) vous citez un document âgé de 8 ans au moment de votre réponse, maintenant supposément âgé de 16 ans qui est comme l'éternité sur Internet, et 3) son instantané sur web.archive.org /web/20030922093331/https://www.iab.org/… cela se résume principalement à "En particulier, nous recommandons que les caractères génériques DNS ne soient pas utilisés dans une zone à moins que l'exploitant de la zone n'ait une compréhension claire des risques, et qu'ils ne devraient pas être utilisés sans le consentement éclairé des entités qui ont été déléguées au-dessous de la zone. "
Patrick Mevzek
J'ai écrit cela il y a 8 ans +. Vous lisez et répondez toujours. :)
poige