En gĂ„ng stod jag inför uppgiften att ge en av mina kunder rĂ€tt att redigera PTR-poster för den tilldelade subnetten /28. Jag har ingen automatisering för att redigera BIND-instĂ€llningar externt. DĂ€rför beslutade jag mig för att gĂ„ en annan vĂ€g â att delegera en del av PTR-zonen av subnettet /24 till kunden.
Det verkar som om det skulle kunna vara enklare? Vi specificerar helt enkelt subnettet pÄ rÀtt sÀtt och pekar mot rÀtt NS, precis som man gör med en underdomÀn. Men nej. Det Àr inte sÄ enkelt (Àven om det i praktiken Àr vÀldigt grundlÀggande, men intuitionen hjÀlper inte ), och dÀrför skriver jag den hÀr artikeln.
Den som vill ta reda pÄ detta sjÀlv kan lÀsa.
De som vill ha en fÀrdig lösning Àr vÀlkomna under artikeln.
För att inte hÄlla dem som Àlskar att kopiera och klistra in, kommer jag först att lÀgga upp den praktiska delen, följt av den teoretiska.
1. Praktik. Delegerar zonen /28.
Anta att vi har en subnet. 7.8.9.0/24. Vi mÄste delegera subnet. 7.8.9.240/28 till dns-klienten. 7.8.7.8 (ns1.client.domain.).
PÄ leverantörens DNS behöver vi hitta filen som beskriver den omvÀnda zonen för denna subnet. LÄt oss kalla den. 9.8.7.in-addr.arpa..
Kommentera posterna frÄn 240 till 255, om det finns nÄgra. Och i slutet av filen skriver vi följande:
255-240 IN NS 7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240kom ihÄg att öka zonens serial och kör
rndc reload.Detta avslutar leverantörsdelen. LÄt oss gÄ vidare till klientens DNS.
Först skapar vi filen. /etc/bind/master/255-240.9.8.7.in-addr.arpa med följande innehÄll:
$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.
Och i named.conf lÀgger vi till beskrivningen av vÄr nya fil:
zone "255-240.9.8.7.in-addr.arpa." IN {
type master;
file "master/255-240.9.8.7.in-addr.arpa";
};B startar vi om bind-processen.
/etc/init.d/named restartDet Àr klart. Nu kan vi börja kontrollera.
#> 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.Observera att det inte bara returneras PTR-poster utan Àven CNAME. SÄ ska det vara. Om du Àr nyfiken pÄ varför, sÄ vÀlkommen till nÀsta kapitel.
2. Teori. Hur fungerar det.
Det Àr svÄrt att konfigurera och debugga en svart lÄda. Mycket enklare om man förstÄr vad som hÀnder inuti.
NÀr vi delegerar en underdomÀn i domÀnen domain, sÄ skriver vi nÄgot liknande detta:
client.domain. NS ns1.client.domain.
ns1.client.domain. A 7.8.7.8Vi sÀger till alla som frÄgar att vi inte ansvarar för denna zon och berÀttar vem som gör det. Och alla förfrÄgningar om client.domain redirigeras till 7.8.7.8. Vid kontroll ser vi följande bild (lÄt oss utelÀmna vad som finns hos klienten. Det spelar ingen roll):
# host test.client.domain
test.client.domain has address 7.8.9.241Det vill sÀga, vi fick veta att det finns en sÄdan A-post och dess ip 7.8.9.241. Ingen överflödig information.
Hur kan man göra samma sak med ett subnet?
Eftersom vÄr DNS-server Àr registrerad i RIPE, sÄ vid en PTR-förfrÄgan om en ip-adress frÄn vÄrt nÀtverk kommer den första förfrÄgan att vara till oss. Logiken Àr densamma som med domÀner. Men hur skriver man in subnet i zonfilen?
Vi försöker skriva in det sÄ hÀr:
255-240 IN NS 7.8.7.8Och⊠inget mirakel intrÀffade. Vi fÄr ingen omdirigering av förfrÄgan. Problemet Àr att bind i princip inte Àr medveten om att dessa poster i filen för omvÀnd zon Àr ip-adresser och absolut inte förstÄr intervallposten. För den Àr det bara en slags symbolisk subdomÀn. Det vill sÀga, för bind spelar det ingen roll mellan "255-240" och "oursuperclient". Och för att förfrÄgan ska gÄ dit den ska, mÄste adressen i förfrÄgan se ut sÄ hÀr: 241.255-240.9.8.7.in-addr.arpa. Eller sÄ hÀr, om vi anvÀnder en symbolisk subdomÀn: 241.oursuperclient.9.8.7.in-addr.arpa. Detta skiljer sig frÄn det vanliga: 241.9.8.7.in-addr.arpa.
Att göra en sÄdan förfrÄgan för hand kommer att vara problematiskt. Och om det ens lyckas, Àr det fortfarande oklart hur detta ska tillÀmpas i verkligheten. Eftersom pÄ förfrÄgan 7.8.9.241 fÄr vi fortfarande svar frÄn leverantörens DNS, inte frÄn klientens.
Och hÀr kommer CNAME.
Inom leverantörens sida mÄste man göra ett alias för alla ip-adresser i subnetet i ett format som dirigerar förfrÄgningar till klientens DNS.
255-240 IN NS ns1.client.domain.
241 IN CNAME 241.255-240
242 IN CNAME 242.255-240
och sÄ vidare.
Detta Àr för flitiga =).
Och för lata passar konstruktionen nedan bÀttre:
255-240 IN NS ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240Nu kommer en förfrÄgan om information frÄn 7.8.9.241 frÄn 241.9.8.7.in-addr.arpa till leverantörens dns-server att omvandlas till 241.255-240.9.8.7.in-addr.arpa och skickas till dns-klienten.
FrÄn klientens sida behöver vi hantera sÄdana förfrÄgningar. DÀrför skapar vi en zon 255-240.9.8.7.in-addr.arpa. I den kan vi i princip placera omvÀnda poster för alla ip i hela subnetet /24, men de som vi kommer att frÄga om Àr endast de som leverantören vidarebefordrar till oss, sÄ vi kan inte leka för mycket =).
För illustration kommer jag Äterigen att ge ett exempel pÄ innehÄllet i zonfilen för omvÀnd zon frÄn klientens sida:
$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.
Det Àr just för att vi frÄn leverantörens sida anvÀnder CNAME, som vi ocksÄ fÄr tvÄ svarsalternativ pÄ begÀran av data via IP-adressen , inte ett.
#> 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. Och glöm inte att konfigurera ACL korrekt. Det Àr meningslöst att ta PTR-zonen för sig sjÀlv och inte svara nÄgra externa =).
KĂ€lla: habr.com
