Reverse sône delegaasje nei subnetten minder as /24 yn BIND. Hoe't it wurket

Op in dei waard ik konfrontearre mei de taak om ien fan myn kliïnten it rjocht te jaan om PTR-records te bewurkjen fan it /28 subnet dat him tawiisd is. Ik haw gjin automatisearring foar it bewurkjen fan BIND-ynstellingen fan bûten. Dêrom besleat ik in oare rûte te nimmen - om in stik fan 'e PTR-sône fan it /24-subnet oan de kliïnt te delegearjen.

It soe lykje - wat koe wêze ienfâldiger? Wy registrearje it subnet gewoan as nedich en rjochtsje it nei de winske NS, lykas dien wurdt mei in subdomein. Mar nee. It is net sa ienfâldich (hoewol't it yn 'e realiteit oer it algemien primityf is, mar yntuysje sil net helpe), dêrom skriuw ik dit artikel.

Elkenien dy't it sels útfine wol, kin lêze RFC
Wa wol in klearebare oplossing, wolkom by kat.

Om dejingen dy't fan 'e copy-paste-metoade hâlde net te fertrage, sil ik earst it praktyske diel pleatse, en dan it teoretyske diel.

1. Oefenje. Delegearjende sône /28

Litte wy sizze dat wy in subnet hawwe 7.8.9.0/24. Wy moatte it subnet delegearje 7.8.9.240/28 oan dns kliïnt 7.8.7.8 (ns1.client.domain).

Op de DNS fan de provider moatte jo in bestân fine dat de omkearsône fan dit subnet beskriuwt. Lit it wêze 9.8.7.in-addr.harp.
Wy kommentearje op ynstjoerings fan 240 oant 255, as der ien binne. En oan 'e ein fan it bestân skriuwe wy it folgjende:

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

ferjit net te fergrutsjen de serial sône en dwaan

rndc reload

Dit foltôget de provider diel. Lit ús gean nei de client dns.

Litte wy earst in bestân oanmeitsje /etc/bind/master/255-240.9.8.7.in-addr.arpa de folgjende ynhâld:

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

En yn neamd.konf foegje in beskriuwing ta fan ús nije triem:

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

B werstart it bineproses.

/etc/init.d/named restart

Alle. No kinne jo kontrolearje.

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

Tink derom dat net allinich it PTR-record wurdt jûn, mar ek de CNAME. Sa moat it wêze. As jo ​​jo ôffreegje wêrom, dan wolkom by it folgjende haadstik.

2. Teory. Hoe't it wurket.

It is lestich om in swarte doaze te konfigurearjen en te debuggen. It is folle makliker as jo begripe wat der binnen bart.

As wy delegearje in subdomain yn in domein domein, dan skriuwe wy sa'n ding:

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

Wy fertelle elkenien dy't freget dat wy net ferantwurdlik binne foar dit gebiet en fertelle wa't ferantwurdlik is. En alle oanfragen foar client.domain trochferwize nei 7.8.7.8. By it kontrolearjen sjogge wy de folgjende ôfbylding (wy sille wegerje wat de kliïnt dêr hat. It makket neat út):

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

Dy. wy waarden op 'e hichte dat der sa'n A-record is en syn ip is 7.8.9.241. Gjin ûnnedige ynformaasje.

Hoe kin itselde ding dien wurde mei in subnet?

Omdat ús DNS-tsjinner is registrearre yn RIPE, dan by it oanfreegjen fan in PTR IP-adres fan ús netwurk, sil it earste fersyk noch oan ús wêze. De logika is itselde as mei domeinen. Mar hoe fiere jo in subnet yn in sône triem?

Litte wy besykje it sa yn te fieren:

255-240  IN  NS      7.8.7.8

En... it wûnder barde net. Wy ûntfange gjin fersyk trochferwizing. It ding is dat bind net iens wit dat dizze yngongen yn 'e omkearde sône-bestân IP-adressen binne, en noch mear begrypt de berikyngong net. Foar him is dit gewoan in soarte fan symboalysk subdomein. Dy. foar bine sil d'r gjin ferskil wêze tusken "255-240"En"ús superclient". En foar it fersyk om te gean wêr't it moat, moat it adres yn it fersyk der sa útsjen: 241.255-240.9.8.7.in-addr.arpa. Of sa as wy in karakter subdomein brûke: 241.oursuperclient.9.8.7.in-addr.arpa. Dit is oars as de gewoane: 241.9.8.7.in-addr.harp.

It sil lestich wêze om sa'n fersyk manuell te meitsjen. En sels as it wurket, is it noch ûndúdlik hoe't it yn it echte libben tapasse moat. Ommers op oanfraach 7.8.9.241 De DNS fan de provider antwurdet ús noch, net dy fan de klant.

En dit is wêr't se yn spiel komme CNAME.

Oan 'e kant fan' e provider moatte jo in alias meitsje foar alle IP-adressen fan it subnet yn in formaat dat it fersyk trochstjoert nei de DNS fan 'e kliïnt.

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

Dit is foar de hurdwurkjende =).

En foar de lui is it ûndersteande ûntwerp mear geskikt:

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

No freegje ynformaasje by 7.8.9.241 fan 241.9.8.7.in-addr.harp op de DNS-tsjinner fan de provider wurdt omboud ta 241.255-240.9.8.7.in-addr.arpa en giet nei de dns client.

De klantkant sil sokke oanfragen moatte behannelje. Dêrtroch meitsje wy in sône 255-240.9.8.7.in-addr.arpa. Dêryn kinne wy ​​​​yn prinsipe omkearde yngongen pleatse foar elke ip fan it heule /24-subnet, mar se sille ús allinich freegje oer dyjingen dy't de provider nei ús trochstjoert, dus wy kinne net omgean =).
Om te yllustrearjen sil ik nochris in foarbyld jaan fan 'e ynhâld fan in omkearde sônebestân fan' e kliïntside:

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

It is om't wy CNAME brûke oan 'e kant fan' e provider, en as antwurd op in fersyk foar gegevens troch IP-adres krije wy twa records, net ien.

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

En ferjit net om de ACL goed te konfigurearjen. Om't it gjin sin hat om in PTR-sône foar josels te nimmen en net op ien fan bûten te reagearjen =).

Boarne: www.habr.com

Add a comment