Delegarea zonei inverse către subrețele mai mici de /24 în BIND. Cum functioneaza

Într-o zi, m-am confruntat cu sarcina de a da unuia dintre clienții mei dreptul de a edita înregistrările PTR ale subrețelei /28 alocate lui. Nu am automatizare pentru editarea setărilor BIND din exterior. Prin urmare, am decis să iau o altă cale - să deleg clientului o bucată din zona PTR a subrețelei /24.

S-ar părea - ce ar putea fi mai simplu? Pur și simplu înregistrăm subrețeaua după cum este necesar și o direcționăm către NS-ul dorit, așa cum se face cu un subdomeniu. Dar nu. Nu este atât de simplu (deși în realitate este în general primitiv, dar intuiția nu va ajuta), de aceea scriu acest articol.

Oricine vrea să-și dea seama singur poate citi RFC
Cine vrea o soluție gata făcută, bine ați venit la cat.

Pentru a nu-i întârzia pe cei cărora le place metoda copy-paste, voi posta mai întâi partea practică, apoi partea teoretică.

1. Practică. Zona de delegare /28

Să presupunem că avem o subrețea 7.8.9.0/24. Trebuie să delegăm subrețeaua 7.8.9.240/28 către clientul dns 7.8.7.8 (ns1.client.domeniu).

Pe DNS-ul furnizorului trebuie să găsiți un fișier care descrie zona inversă a acestei subrețele. Lăsați-l să fie 9.8.7.in-addr.harp.
Comentăm intrările de la 240 la 255, dacă există. Și la sfârșitul fișierului scriem următoarele:

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

nu uitați să măriți zona serială și faceți

rndc reload

Aceasta completează partea furnizorului. Să trecem la client dns.

Mai întâi, să creăm un fișier /etc/bind/master/255-240.9.8.7.in-addr.arpa urmatorul continut:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        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.

Și în numit.conf adăugați o descriere a noului nostru fișier:

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

B reporniți procesul de legare.

/etc/init.d/named restart

Toate. Acum poți verifica.

#>  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.

Vă rugăm să rețineți că nu se oferă doar înregistrarea PTR, ci și CNAME. Așa ar trebui să fie. Dacă vă întrebați de ce, atunci bine ați venit la următorul capitol.

2. Teorie. Cum functioneaza.

Este dificil să configurați și să depanați o cutie neagră. Este mult mai ușor dacă înțelegi ce se întâmplă înăuntru.

Când delegăm un subdomeniu într-un domeniu domeniu, apoi scriem ceva de genul:

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

Le spunem tuturor celor care solicită că nu suntem responsabili pentru acest site și spunem cine este responsabil. Și toate cererile pentru client.domeniu redirecționează către 7.8.7.8. Când verificăm, vedem următoarea imagine (vom omite ceea ce are clientul acolo. Nu contează):

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

Acestea. am fost informați că există o astfel de înregistrare A și ip-ul său este 7.8.9.241. Fără informații inutile.

Cum se poate face același lucru cu o subrețea?

Deoarece serverul nostru DNS este înregistrat în RIPE, apoi atunci când se solicită o adresă IP PTR din rețeaua noastră, prima solicitare va fi în continuare către noi. Logica este aceeași ca și în cazul domeniilor. Dar cum introduceți o subrețea într-un fișier de zonă?

Să încercăm să o introducem astfel:

255-240  IN  NS      7.8.7.8

Și... miracolul nu s-a întâmplat. Nu primim nicio solicitare de redirecționare. Chestia este că bind nici măcar nu știe că aceste intrări din fișierul zonei inverse sunt adrese IP și, cu atât mai mult, nu înțelege intrarea în interval. Pentru el, acesta este doar un fel de subdomeniu simbolic. Acestea. pentru bind nu va fi nicio diferență între "255-240"Și"superclientul nostru". Și pentru ca cererea să ajungă acolo unde trebuie, adresa din cerere ar trebui să arate astfel: 241.255-240.9.8.7.in-addr.arpa. Sau cam așa dacă folosim un subdomeniu de caractere: 241.oursuperclient.9.8.7.in-addr.arpa. Acesta este diferit de cel obișnuit: 241.9.8.7.in-addr.harp.

Va fi dificil să faci o astfel de solicitare manual. Și chiar dacă funcționează, încă nu este clar cum să o aplici în viața reală. La urma urmei, la cerere 7.8.9.241 DNS-ul furnizorului încă răspunde la noi, nu al clientului.

Și aici intră în joc CNAME.

Din partea furnizorului, trebuie să creați un alias pentru toate adresele IP ale subrețelei într-un format care va transmite cererea către DNS-ul clientului.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
и т.д.

Asta e pentru cei harnici =).

Și pentru leneși, designul de mai jos este mai potrivit:

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

Acum solicitați informații la 7.8.9.241 de 241.9.8.7.in-addr.harp pe serverul DNS al furnizorului va fi convertit în 241.255-240.9.8.7.in-addr.arpa și merge la clientul dns.

Partea client va trebui să se ocupe de astfel de solicitări. În consecință, creăm o zonă 255-240.9.8.7.in-addr.arpa. În ea, putem, în principiu, să plasăm intrări inverse pentru orice ip din întreaga subrețea /24, dar ne vor întreba doar despre cele pe care furnizorul ni le transmite, așa că nu ne vom putea juca =).
Pentru a ilustra, voi da din nou un exemplu de conținut al unui fișier de zonă inversă din partea clientului:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        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.

Se datorează faptului că folosim CNAME de partea furnizorului și, ca răspuns la o solicitare de date prin adresa IP, primim două înregistrări, nu una.

#>  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.

Și nu uitați să configurați corect ACL-ul. Pentru că nu are sens să iei o zonă PTR pentru tine și să nu răspunzi nimănui din afară =).

Sursa: www.habr.com

Adauga un comentariu