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