Atvirkštinės zonos delegavimas į potinklius, mažesnius nei /24 BIND. Kaip tai veikia

Vieną dieną susidūriau su užduotimi vienam iš savo klientų suteikti teisę redaguoti jam priskirto /28 potinklio PTR įrašus. Neturiu automatikos BIND nustatymų redagavimui iš išorės. Todėl nusprendžiau pasirinkti kitą kelią – deleguoti klientui dalį /24 potinklio PTR zonos.

Atrodytų – kas gali būti paprasčiau? Tiesiog pagal poreikį užregistruojame potinklį ir nukreipiame jį į norimą NS, kaip tai daroma su subdomenu. Bet ne. Tai nėra taip paprasta (nors iš tikrųjų tai apskritai primityvu, bet intuicija nepadės), todėl ir rašau šį straipsnį.

Kiekvienas, norintis tai išsiaiškinti gali pats RFC
Kas nori paruošto sprendimo, sveiki atvykę į katę.

Kad nevilkintų mėgstantys copy-paste metodą, iš pradžių paskelbsiu praktinę, o po to teorinę dalį.

1. Praktika. Deleguojanti zona /28

Tarkime, kad turime potinklį 7.8.9.0/24. Turime deleguoti potinklį 7.8.9.240/28 dns klientui 7.8.7.8 (ns1.client.domain).

Teikėjo DNS turite rasti failą, aprašantį atvirkštinę šio potinklio zoną. Tebūnie 9.8.7.in-addr.harp.
Komentuojame įrašus nuo 240 iki 255, jei tokių yra. Ir failo pabaigoje rašome taip:

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

nepamirškite padidinti serijos zonos ir padaryti

rndc reload

Tai užbaigia teikėjo dalį. Pereikime prie kliento dns.

Pirmiausia sukurkime failą /etc/bind/master/255-240.9.8.7.in-addr.arpa toks turinys:

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

Ir in pavadintas.konf pridėkite mūsų naujo failo aprašymą:

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

B iš naujo paleiskite susiejimo procesą.

/etc/init.d/named restart

Visi. Dabar galite patikrinti.

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

Atkreipkite dėmesį, kad pateikiamas ne tik PTR įrašas, bet ir CNAME. Taip ir turi būti. Jei įdomu, kodėl, sveiki atvykę į kitą skyrių.

2. Teorija. Kaip tai veikia.

Sunku konfigūruoti ir derinti juodąją dėžę. Daug lengviau, jei supranti, kas vyksta viduje.

Kai domene deleguojame padomenį domenas, tada rašome maždaug taip:

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

Visiems klausiantiems sakome, kad už šią sritį neatsakome ir pasakome, kas atsakingas. Ir visi prašymai klientas.domenas peradresuoti į 7.8.7.8. Tikrindami matome tokį paveikslėlį (praleisime, ką ten turi klientas. Nesvarbu):

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

Tie. buvome informuoti, kad yra toks A įrašas ir jo ip yra 7.8.9.241. Jokios nereikalingos informacijos.

Kaip tą patį galima padaryti su potinkliu?

Nes mūsų DNS serveris yra registruotas RIPE, tada užklausus PTR IP adreso iš mūsų tinklo, pirmoji užklausa vis tiek bus mums. Logika tokia pati kaip ir su domenais. Bet kaip į zonos failą įvesti potinklį?

Pabandykime įvesti taip:

255-240  IN  NS      7.8.7.8

Ir... stebuklas neįvyko. Negauname jokių peradresavimo užklausų. Reikalas tas, kad bind net nežino, kad šie atvirkštinės zonos failo įrašai yra IP adresai, ir juo labiau nesupranta diapazono įrašo. Jam tai tik kažkoks simbolinis subdomenas. Tie. bind nebus skirtumo tarp "255-240"Ir"mūsų superklientas“. O kad užklausa būtų nukreipta ten, kur reikia, adresas užklausoje turėtų atrodyti taip: 241.255-240.9.8.7.in-addr.arpa. Arba taip, jei naudojame simbolių padomenį: 241.mūsųsuperklientas.9.8.7.in-addr.arpa. Tai skiriasi nuo įprastų: 241.9.8.7.in-addr.harp.

Tokį prašymą bus sunku pateikti rankiniu būdu. Ir net jei tai veikia, vis tiek neaišku, kaip tai pritaikyti realiame gyvenime. Juk paprašius 7.8.9.241 Teikėjo DNS vis tiek atsako mums, o ne kliento.

Ir čia jie pradeda žaisti CNAME.

Teikėjo pusėje turite sukurti visų potinklio IP adresų slapyvardį tokiu formatu, kuris perduos užklausą kliento DNS.

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

Tai skirta darbštiems =).

O tinginiams labiau tinka toliau pateiktas dizainas:

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

Dabar teiraukitės informacijos adresu 7.8.9.241241.9.8.7.in-addr.harp teikėjo DNS serveryje bus konvertuojamas į 241.255-240.9.8.7.in-addr.arpa ir eina į dns klientą.

Kliento pusė turės tvarkyti tokius prašymus. Atitinkamai sukuriame zoną 255-240.9.8.7.in-addr.arpa. Jame iš esmės galime dėti atvirkštinius įrašus bet kuriam viso /24 potinklio IP, tačiau jie mūsų klaus tik apie tuos, kuriuos teikėjas mums persiunčia, todėl negalėsime žaisti =).
Norėdami iliustruoti, dar kartą pateiksiu atvirkštinės zonos failo turinio pavyzdį iš kliento pusės:

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

Taip yra todėl, kad tiekėjo pusėje naudojame CNAME, o atsakydami į duomenų užklausą pagal IP adresą gauname du įrašus, o ne vieną.

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

Ir nepamirškite tinkamai sukonfigūruoti ACL. Nes nėra prasmės imti PTR zoną sau ir niekam nereaguoti iš išorės =).

Šaltinis: www.habr.com

Добавить комментарий