Reverzné delegovanie zóny na podsiete menšie ako /24 v BIND. Ako to funguje

Jedného dňa som stál pred úlohou dať jednému z mojich klientov právo upravovať záznamy PTR podsiete /28, ktorá mu bola pridelená. Nemám automatizáciu na úpravu nastavení BIND zvonku. Preto som sa rozhodol ísť inou cestou – delegovať klientovi kúsok PTR zóny podsiete /24.

Zdalo by sa - čo môže byť jednoduchšie? Jednoducho zaregistrujeme podsieť podľa potreby a nasmerujeme ju na požadovaný NS, ako sa to robí so subdoménou. Ale nie. Nie je to také jednoduché (aj keď v skutočnosti je to vo všeobecnosti primitívne, ale intuícia nepomôže), preto píšem tento článok.

Čítať môže každý, kto na to chce prísť sám RFC
Kto chce hotové riešenie, vitajte v kat.

Aby som nezdržiaval tých, ktorí majú radi metódu copy-paste, uverejním najskôr praktickú časť a potom teoretickú časť.

1. Prax. Zóna delegovania /28

Povedzme, že máme podsieť 7.8.9.0/24. Musíme delegovať podsieť 7.8.9.240/28 klientovi DNS 7.8.7.8 (doména ns1.client).

Na DNS poskytovateľa musíte nájsť súbor, ktorý popisuje reverznú zónu tejto podsiete. Nechaj to tak 9.8.7.v-addr.arpa.
Komentujeme záznamy od 240 do 255, ak nejaké sú. A na koniec súboru napíšeme nasledovné:

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

nezabudnite zvýšiť sériovú zónu a urobte to

rndc reload

Tým je časť poskytovateľa hotová. Prejdime k dns klienta.

Najprv vytvoríme súbor /etc/bind/master/255-240.9.8.7.in-addr.arpa nasledujúci obsah:

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

A v pomenovaný.konf pridajte popis nášho nového súboru:

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

B reštartujte proces viazania.

/etc/init.d/named restart

Všetky. Teraz môžete skontrolovať.

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

Upozorňujeme, že sa neuvádza len záznam PTR, ale aj CNAME. Tak to má byť. Ak sa pýtate prečo, vitajte pri ďalšej kapitole.

2. Teória. Ako to funguje.

Je ťažké nakonfigurovať a ladiť čiernu skrinku. Je to oveľa jednoduchšie, ak pochopíte, čo sa deje vo vnútri.

Keď delegujeme subdoménu v doméne doména, potom napíšeme niečo takéto:

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

Každému, kto sa pýta, hovoríme, že za túto oblasť nezodpovedáme a kto je zodpovedný. A všetky žiadosti o klient.doména presmerovanie na 7.8.7.8. Pri kontrole vidíme nasledujúci obrázok (vynecháme, čo tam má klient. Nevadí):

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

Tie. boli sme informovaní, že existuje taký záznam A a jeho ip je 7.8.9.241. Žiadne zbytočné informácie.

Ako sa dá urobiť to isté s podsieťou?

Pretože náš server DNS je zaregistrovaný v RIPE, potom pri požiadaní o IP adresu PTR z našej siete bude prvá požiadavka stále na nás. Logika je rovnaká ako pri doménach. Ale ako zadať podsieť do súboru zóny?

Skúsme to zadať takto:

255-240  IN  NS      7.8.7.8

A... zázrak sa nestal. Nedostávame žiadnu požiadavku na presmerovanie. Ide o to, že bind ani nevie, že tieto položky v súbore reverznej zóny sú adresy IP, a ešte viac nerozumie položke rozsahu. Pre neho je to len nejaký druh symbolickej subdomény. Tie. pre bind nebude rozdiel medzi "255-240"A"náš superklient". A aby žiadosť smerovala tam, kam má ísť, adresa v žiadosti by mala vyzerať takto: 241.255-240.9.8.7.in-addr.arpa. Alebo takto, ak použijeme subdoménu postavy: 241.náš superklient.9.8.7.v-addr.arpa. Toto sa líši od bežného: 241.9.8.7.v-addr.arpa.

Manuálne bude ťažké podať takúto žiadosť. A aj keď to funguje, stále nie je jasné, ako to uplatniť v reálnom živote. Predsa na požiadanie 7.8.9.241 Stále nám odpovedá DNS poskytovateľa, nie klienta.

A tu vstupujú do hry CNAME.

Na strane poskytovateľa je potrebné vytvoriť alias pre všetky IP adresy podsiete vo formáte, ktorý prepošle požiadavku klientovi DNS.

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

Toto je pre pracovitých =).

A pre lenivých je nižšie uvedený dizajn vhodnejší:

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

Teraz požiadajte o informácie na 7.8.9.241 z 241.9.8.7.v-addr.arpa na serveri DNS poskytovateľa budú skonvertované na 241.255-240.9.8.7.in-addr.arpa a ide ku klientovi DNS.

Takéto požiadavky bude musieť vybaviť klientska strana. Podľa toho vytvoríme zónu 255-240.9.8.7.in-addr.arpa. V ňom môžeme v zásade umiestniť spätné záznamy pre ľubovoľnú ip celej podsiete /24, ale budú sa nás pýtať len na tie, ktoré nám poskytovateľ prepošle, takže sa nebudeme môcť hrať =).
Pre ilustráciu uvediem ešte raz príklad obsahu súboru reverznej zóny zo strany klienta:

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

Je to preto, že na strane poskytovateľa používame CNAME a ako odpoveď na žiadosť o údaje podľa IP adresy dostávame dva záznamy, nie jeden.

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

A nezabudnite správne nakonfigurovať ACL. Pretože nemá zmysel brať si PTR zónu pre seba a neodpovedať nikomu zvonku =).

Zdroj: hab.com

Pridať komentár