Délégation de la zone inverse d'un sous-réseau de moins de /24 dans BIND. Comment cela fonctionne

Un jour, j'ai Ă©tĂ© confrontĂ© Ă  la tĂąche de donner Ă  un de mes clients le droit d'Ă©diter les enregistrements PTR de son sous-rĂ©seau /28. Je n'ai pas d'automatisation pour modifier les paramĂštres de BIND de l'extĂ©rieur. J'ai donc dĂ©cidĂ© d'aborder le problĂšme d'une autre maniĂšre — dĂ©lĂ©guer un morceau de la zone PTR du sous-rĂ©seau /24 au client.

À premiĂšre vue — rien de plus simple ? Il suffit de spĂ©cifier le sous-rĂ©seau et de le diriger vers le bon NS comme on le fait avec un sous-domaine. Mais non. Ce n'est pas si simple (bien que cela soit en rĂ©alitĂ© assez primaire, mais l'intuition ne sera pas d'une grande aide), c'est pourquoi j'Ă©cris cet article.

Pour ceux qui souhaitent approfondir, vous pouvez lire. RFC
Pour ceux qui veulent une solution toute prĂȘte, bienvenue sous le cat.

Pour ne pas faire attendre ceux qui aiment la méthode du copier-coller, je vais d'abord publier la partie pratique, suivi de la théorique.

1. Pratique. Délégation de la zone /28

Supposons que nous avons un sous-réseau 7.8.9.0/24. Nous devons déléguer le sous-réseau 7.8.9.240/28 au client DNS 7.8.7.8 (ns1.client.domain).

Sur le DNS du fournisseur, il faut trouver le fichier décrivant la zone inverse de ce sous-réseau. Appelons-le 9.8.7.in-addr.arpa.
Nous commentons les enregistrements de 240 à 255, si présents. Et à la fin du fichier, nous écrivons ce qui suit :

255-240  IN  NS      7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240

n'oublions pas d'augmenter le numéro de série de la zone et faisons

rndc reload

C'est lĂ  que la partie fournisseur se termine. Passons au DNS client.

Tout d'abord, créons le fichier /etc/bind/master/255-240.9.8.7.in-addr.arpa avec le contenu suivant :

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; numéro de série
                        3H              ; rafraĂźchissement
                        15M             ; essai
                        1W              ; expiration
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Et dans named.conf nous ajoutons la description de notre nouveau fichier :

zone "255-240.9.8.7.in-addr.arpa." IN {
        type master;
        file "master/255-240.9-8.7.in-addr.arpa";
};

Nous redémarrons le processus bind.

/etc/init.d/named restart

Voilà. Maintenant, nous pouvons vérifier.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Notez que non seulement l'enregistrement PTR est retournĂ© mais aussi le CNAME. C'est normal. Si vous ĂȘtes curieux de savoir pourquoi, bienvenue dans le prochain chapitre.

2. Théorie. Comment cela fonctionne.

Il est difficile de configurer et de déboguer une boßte noire. C'est beaucoup plus simple quand on comprend ce qui se passe à l'intérieur.

Lorsque nous déléguons un sous-domaine dans le domaine domain, nous écrivons quelque chose comme cela :

client.domain.	NS	ns1.client.domain.
ns1.client.domain.	A	7.8.7.8

Nous informons tous ceux qui demandent que nous ne sommes pas responsables de cette zone et disons qui est responsable. Et toutes les demandes pour client.domain sont redirigées vers 7.8.7.8. En vérifiant, nous voyons la situation suivante (omettons ce que le client a, ce n'est pas important) :

# host test.client.domain
test.client.domain has address 7.8.9.241

C'est-à-dire que l'on nous a informés qu'il y a un enregistrement A et que son IP est 7.8.9.241. Pas d'informations superflues.

Et comment faire la mĂȘme chose avec une sous-rĂ©seau ?

Étant donnĂ© que notre serveur DNS est inscrit dans RIPE, la premiĂšre requĂȘte PTR de l'adresse IP de notre rĂ©seau sera toujours adressĂ©e Ă  nous. La logique est la mĂȘme que pour les domaines. Mais comment inscrire un sous-rĂ©seau dans le fichier de zone ?

Nous essayons de l'inscrire ainsi :

255-240  IN  NS      7.8.7.8

Et
 le miracle ne s'est pas produit. Nous ne recevons aucune redirection de la requĂȘte. Le problĂšme est que bind n'est pas du tout au courant que ces enregistrements dans le fichier de zone inverse sont des adresses IP et ne comprend pas non plus l'enregistrement de plage. Pour lui, c'est simplement un sous-domaine symbolique. C'est-Ă -dire qu'il n'y aura pas de diffĂ©rence pour bind entre «255-240» et «oursuperclient« . Et pour que la requĂȘte soit envoyĂ©e oĂč il faut, l'adresse dans la requĂȘte doit apparaĂźtre comme suit : 241.255-240.9.8.7.in-addr.arpa. Ou ainsi, si nous utilisons un sous-domaine symbolique : 241.oursuperclient.9.8.7.in-addr.arpa. Cela se distingue de l'ordinaire : 241.9.8.7.in-addr.arpa.

Il sera problĂ©matique d'exĂ©cuter une telle requĂȘte manuellement. Et mĂȘme si cela fonctionne, il reste Ă  savoir comment l'appliquer dans la vie rĂ©elle. En effet, lors de la requĂȘte 7.8.9.241 c'est toujours le DNS du fournisseur qui rĂ©pond, et non celui du client.

Et c'est ici qu'interviennent CNAME.

Du cĂŽtĂ© du fournisseur, il faut crĂ©er un alias pour toutes les adresses IP du sous-rĂ©seau dans un format qui redirigera la requĂȘte vers le DNS client.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
et ainsi de suite.

C'est pour les travailleurs =).

Pour les paresseux, la construction ci-dessous sera plus appropriée :

255-240  IN  NS      ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240

Maintenant, la requĂȘte d'informations Ă  l'adresse 7.8.9.241 de 241.9.8.7.in-addr.arpa sur le serveur DNS du fournisseur sera transformĂ©e en 241.255-240.9.8.7.in-addr.arpa et sera envoyĂ©e au client DNS.

Du cĂŽtĂ© du client, il faudra traiter de telles requĂȘtes. En consĂ©quence, nous crĂ©ons une zone 255-240.9.8.7.in-addr.arpa. Dans celle-ci, nous pouvons en principe placer des enregistrements inverses pour n'importe quelle IP de tout le sous-rĂ©seau /24, mais on ne nous interrogera que sur celles que le fournisseur nous redirige, donc pas de distractions =).
Pour illustrer, je donne encore une fois un exemple du contenu du fichier de zone inverse du cÎté client :

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; numéro de série
                        3H              ; rafraĂźchissement
                        15M             ; essai
                        1W              ; expiration
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

C'est en raison de l'utilisation du CNAME de notre cÎté en tant que fournisseur que nous recevons en réponse à la demande de données par adresse IP deux enregistrements au lieu d'un.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Et n'oubliez pas de configurer correctement les ACL. Car il est inutile de récupérer la zone PTR sans répondre à quiconque de l'extérieur =).

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster