O dată, am avut de rezolvat sarcina de a oferi unui client dreptul de a edita înregistrările PTR ale subrețelei /28. Nu am automatizare pentru a edita setările BIND din exterior. De aceea, am decis să urmez o altă cale — să deleg clientului o parte din zona PTR a subrețelei /24.
Ar părea — ce poate fi mai simplu? Pur și simplu definim subrețeaua corespunzătoare și o direcționăm către NS-ul dorit, așa cum se face cu un subdomeniu. Dar nu este deloc așa. Lucrurile nu sunt chiar atât de simple (deși, în realitate, sunt foarte elementare, dar intuiția nu ajută), motiv pentru care scriu acest articol.
Cine dorește să se descurce singur, poate citi.
Cine vrea o soluție gata făcută, bun venit mai departe.
Pentru a nu întârzia pe cei care iubesc metoda copierea și lipirea, voi prezenta mai întâi partea practică, iar după aceea teoria.
1. Practică. Delegăm zona /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.domain.).
Pe DNS-ul furnizorului, trebuie să găsim fișierul care descrie zona inversă a acestei subrețele. Să fie. 9.8.7.in-addr.arpa..
Comentăm înregistrările de la 240 la 255, dacă există. Și la finalul fișierului scriem următoarele:
255-240 IN NS 7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240nu uităm să creștem serialul zonei și facem
rndc reload.Aici se termină partea furnizorului. Trecem la DNS-ul clientului.
În primul rând, creăm fișierul. /etc/bind/master/255-240.9.8.7.in-addr.arpa users.module.ts
$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 named.conf, adăugăm descrierea 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, repornim procesul bind.
/etc/init.d/named restartTotul. Acum putem 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.Rețineți că nu se returnează doar înregistrarea PTR, ci și CNAME. Așa trebuie să fie. Dacă sunteți curios de ce, bine ați venit în următorul capitol.
2. Teorie. Cum funcționează aceasta.
Este dificil de configurat și depanat o cutie neagră. Este mult mai simplu dacă înțelegi ce se întâmplă în interior.
Când delegăm un subdomeniu în domeniu, domain, scriem ceva de genul acesta:
client.domain. NS ns1.client.domain.
ns1.client.domain. A 7.8.7.8Spunem tuturor celor care întreabă că pentru acest domeniu nu răspundem și indicăm cine răspunde. Și toate cererile la client.domain sunt redirecționate către 7.8.7.8. La verificare, vedem următoarea situație (să lăsăm deoparte ce are clientul, nu este relevant):
# host test.client.domain
test.client.domain has address 7.8.9.241Adică, ni s-a comunicat că există un astfel de înregistrare A și IP-ul ei este 7.8.9.241. Nicio informație suplimentară.
Dar cum poate fi realizat același lucru cu un subnet?
Deoarece serverul nostru DNS este înregistrat în RIPE, atunci când solicităm înregistrarea PTR a unei adrese IP din rețeaua noastră, prima solicitare va fi oricum către noi. Logica este aceeași ca și pentru domenii. Dar cum se poate introduce subnetul în fișierul zonei?
Încercăm să-l introducem astfel:
255-240 IN NS 7.8.7.8Și… nu s-a întâmplat nicio minune. Nu primim nicio redirecționare a cererii. Totul se datorează faptului că bind nu știe deloc că aceste înregistrări din fișierul zonei inverse sunt adrese IP și cu atât mai puțin înțelege înregistrarea intervalului. Pentru el, acesta este doar un subdomeniu simbolic. Adică, pentru bind nu va exista nicio diferență între „255-240” și „oursuperclient“. Și pentru ca cererea să ajungă unde trebuie, adresa din cerere trebuie să arate astfel: 241.255-240.9.8.7.in-addr.arpa. Sau astfel, dacă folosim un subdomeniu simbolic: 241.oursuperclient.9.8.7.in-addr.arpa. Aceasta diferă de obiceiul: 241.9.8.7.in-addr.arpa.
Este problematic să realizăm o astfel de cerere manual. Iar dacă o vom reuși, tot nu este clar cum poate fi aplicată în viața reală. Ca urmare a cererii 7.8.9.241 încă ne răspunde DNS-ul furnizorului, nu cel al clientului.
Aici, încep să își facă simțită prezența CNAME.
Pe partea furnizorului, trebuie să fie creat un alias pentru toate adresele IP ale subnetului într-un format care va redirecționa 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
și așa mai departe.
Acestea sunt pentru cei harnici =).
Iar pentru cei mai leneși, constructul de mai jos se potrivește mai bine:
255-240 IN NS ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240Acum, cererea de informații pentru adresa 7.8.9.241 din 241.9.8.7.in-addr.arpa pe serverul DNS al furnizorului va fi transformată în 241.255-240.9.8.7.in-addr.arpa și se va direcționa către DNS-ul clientului.
Din partea clientului, va trebui să gestionăm astfel de cereri. Prin urmare, creăm zona 255-240.9.8.7.in-addr.arpa. În ea, în principiu, putem plasa înregistrări inverse pentru orice IP din întreaga subnetă /24, dar ne vor întreba doar despre cele pe care furnizorul ni le va redirecționa, așa că nu ne putem juca =).
Pentru a ilustra, voi aduce din nou un exemplu al conținutului fișierului zonei inverse 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.
Deoarece folosim CNAME din partea furnizorului, primim ca răspuns datele pentru adresă IP 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. Este inutil să preluați zona PTR și să nu răspundeți nimănui din exterior =).
Sursa: habr.com
