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