Obrnuti delegiranje zone na podmreže manje od /24 u BIND-u. Kako radi

Jednog sam se dana suočio sa zadatkom da jednom od svojih klijenata dam pravo na uređivanje PTR zapisa /28 podmreže koja mu je dodijeljena. Nemam automatizaciju za uređivanje BIND postavki izvana. Stoga sam odlučio krenuti drugim putem - delegirati klijentu dio PTR zone podmreže /24.

Čini se - što bi moglo biti jednostavnije? Jednostavno registriramo podmrežu prema potrebi i usmjerimo je na željeni NS, kao što se radi s poddomenom. Ali ne. Nije tako jednostavno (iako je u stvarnosti općenito primitivno, ali intuicija neće pomoći), zato pišem ovaj članak.

Svatko tko to želi sam shvatiti može pročitati RFC
Tko želi gotovo rješenje, dobrodošao u cat.

Kako ne bih odgađao one koji vole copy-paste metodu, prvo ću postaviti praktični dio, a zatim teoretski.

1. Vježbajte. Zona delegiranja /28

Recimo da imamo subnet 7.8.9.0/24. Moramo delegirati podmrežu 7.8.9.240/28 na dns klijent 7.8.7.8 (ns1.klijent.domena).

Na DNS-u davatelja usluga morate pronaći datoteku koja opisuje obrnutu zonu ove podmreže. Neka bude 9.8.7.u-addr.arpa.
Komentiramo unose od 240 do 255, ako ih ima. I na kraju datoteke pišemo sljedeće:

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

ne zaboravite povećati serijsku zonu i učiniti

rndc reload

Ovo dovršava dio pružatelja usluga. Prijeđimo na dns klijenta.

Prvo, napravimo datoteku /etc/bind/master/255-240.9.8.7.in-addr.arpa sljedeći sadržaj:

$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 u imenovan.konf dodajte opis naše nove datoteke:

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

B ponovno pokrenite proces vezanja.

/etc/init.d/named restart

Svi. Sada možete provjeriti.

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

Imajte na umu da se ne daje samo PTR zapis, već i CNAME. Tako i treba biti. Ako se pitate zašto, onda dobrodošli u sljedeće poglavlje.

2. Teorija. Kako radi.

Teško je konfigurirati i otkloniti pogreške crne kutije. Mnogo je lakše ako razumijete što se događa unutra.

Kada delegiramo poddomenu u domeni domena, tada pišemo nešto poput ovoga:

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

Svima koji pitaju kažemo da nismo odgovorni za ovu stranicu i kažemo tko je odgovoran. I svi zahtjevi za klijent.domena preusmjeriti na 7.8.7.8. Prilikom provjere vidimo sljedeću sliku (izostavit ćemo ono što klijent tamo ima, nije bitno):

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

Oni. obaviješteni smo da postoji takav A zapis i da mu je ip 7.8.9.241. Nema nepotrebnih informacija.

Kako se ista stvar može učiniti s podmrežom?

Jer naš DNS poslužitelj je registriran u RIPE-u, tada kada zatražite PTR IP adresu od naše mreže, prvi zahtjev će i dalje biti nama. Logika je ista kao i kod domena. Ali kako unijeti podmrežu u datoteku zone?

Pokušajmo to unijeti ovako:

255-240  IN  NS      7.8.7.8

I... čudo se nije dogodilo. Ne primamo nikakav zahtjev za preusmjeravanje. Stvar je u tome što bind uopće ne zna da su ovi unosi u datoteci obrnute zone IP adrese, a još više ne razumije unos raspona. Za njega je to samo neka vrsta simbolične poddomene. Oni. za vezanje neće biti razlike između "255-240"A"naš superklijent". A da bi zahtjev stigao tamo gdje treba, adresa u zahtjevu bi trebala izgledati ovako: 241.255-240.9.8.7.in-addr.arpa. Ili ovako ako koristimo poddomenu znakova: 241.oursuperclient.9.8.7.in-addr.arpa. Ovo se razlikuje od uobičajenog: 241.9.8.7.u-addr.arpa.

Bit će teško napraviti takav zahtjev ručno. Čak i ako radi, još uvijek nije jasno kako to primijeniti u stvarnom životu. Uostalom, na upit 7.8.9.241 DNS pružatelja još uvijek odgovara nama, a ne klijentov.

I tu oni stupaju na scenu CNAME.

Na strani provajdera morate napraviti alias za sve IP adrese podmreže u formatu koji će proslijediti zahtjev DNS-u klijenta.

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

Ovo je za marljive =).

A za lijene, dizajn u nastavku je prikladniji:

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

Sada zatražite informacije na 7.8.9.241 od 241.9.8.7.u-addr.arpa na DNS poslužitelju pružatelja će se pretvoriti u 241.255-240.9.8.7.in-addr.arpa i ide na dns klijent.

Klijentska strana će morati obraditi takve zahtjeve. U skladu s tim stvaramo zonu 255-240.9.8.7.in-addr.arpa. U njemu možemo, u principu, postaviti reverse unose za bilo koji ip cijele /24 podmreže, ali će nas pitati samo za one koje nam provajder proslijedi, pa se nećemo moći zajebavati =).
Za ilustraciju, još jednom ću dati primjer sadržaja datoteke obrnute zone sa strane klijenta:

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

To je zato što koristimo CNAME na strani davatelja, a kao odgovor na zahtjev za podacima prema IP adresi primamo dva zapisa, a ne jedan.

#>  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 ne zaboravite ispravno konfigurirati ACL. Jer nema smisla uzeti PTR zonu za sebe i ne odgovarati nikome izvana =).

Izvor: www.habr.com

Dodajte komentar