Alamissubneti tagasilöögi delegatsioon BIND-is vähem kui /24. Kuidas see töötab

Üks kord seisin silmitsi ülesandega anda ühe kliendi õigused redigeerida PTR-kirjeid tema antud /28 alamvõrgus. Mul ei olnud automatiseerimist BIND-i seadete välispidiselt muutmiseks. Seetõttu otsustasin minna teist teed — delegeerida kliendile PTR-tsooni osa /24 alamvõrgust.

Tundub, et mis võiks olla lihtsam? Lihtsalt kirjutame alamvõrgu õigesti ja suuname vajaliku NS-i poole, nagu seda tehakse alamdomeeniga. Kuid ei. Kõik ei ole nii lihtne (kuigi tegelikult on see primitiivne, kuid intuitsioon ei aita), seega kirjutangi ma selle artikli.

Kes soovib ise asja välja selgitada, võib lugeda RFC
Kes soovib valmis lahendust, on teretulnud edasi lugema.

Kuna ma ei soovi viivitada nendega, kes armastavad kopeerida ja kleepida, esitan kõigepealt praktilise osa ja seejärel teoreetilise.

1. Praktika. Delegeerime tsooni /28

Oletame, et meil on alamvõrk 7.8.9.0/24. Peame delegeerima alamvõrgu 7.8.9.240/28 DNS-klientile 7.8.7.8 (ns1.client.domain).

Teenusepakkuja DNS-is peate leidma faili, mis kirjeldab tagasikutsumise tsooni selle alamvõrgu jaoks. Olgu see 9.8.7.in-addr.arpa.
Märgi eemaldage kõik kirjed vahemikus 240 kuni 255, kui need on olemas. Ja faili lõppu kirjutame järgmist:

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

Ärge unustage suurendada tsooni seriali ja tehke

rndc reload

Sellega on teenusepakkuja osa lõpetatud. Liigume kliendi DNS-i juurde.

Alustame faili loomisega /etc/bind/master/255-240.9.8.7.in-addr.arpa järgnevate sisu:

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

Ja named.conf lisame kirjelduse meie uuele failile:

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

B taaskäivitage bind protsess.

/etc/init.d/named restart

Kõik. Nüüd saab kontrollida.

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

Pange tähele, et tagastatakse mitte ainult PTR-kirje, vaid ka CNAME. Nii peab olema. Kui see huvitab, siis teretulemast järgmisesse peatükki.

2. Teooria. Kuidas see töötab.

Must kasti seadistamine ja tõrkeotsing on keeruline. Palju lihtsam on, kui mõistad, mis seal sees toimub.

Kui me käsitleme alamdomeeni domeenis domain, siis kirjutame midagi sellist:

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

Kellelegi, kes küsib, ütleme, et selle osa eest ei vastuta ja nemad ütlevad, kes vastutab. Kõik päringud suunatakse client.domain aadressile 7.8.7.8. Kontrollimisel näeme järgmist pilti (jätame kliendi olukorra kõrvale, see pole oluline):

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

See tähendab, et meile teatatakse, et selline A-kirje on olemas ja selle IP 7.8.9.241. Ühtegi liigset teavet.

Kuidas sama teha alamvõrguga?

Kuna meie DNS-server on registreeritud RIPE's, siis PTR päringu puhul meie võrgu IP-aadressist läheb esimene päring siiski meie poole. Loogika on sama, mis domeenide puhul. Ainult küsimus on, kuidas kirjutada alamvõrk tsoonifaili?

Proovime kirjutada nii:

255-240  IN  NS      7.8.7.8

Ja... imet ei juhtunud. Me ei saa mingit päringu suunamist. Kõik on selles, et bind ei tea üldse, et need kirjed tagasipööratud tsoonifailis on IP-aadressid ja veel vähem mõistab ta vahemiku kirjet. Tema jaoks on see lihtsalt mingi sümboolne alamdomeen. Seega bindile ei tee vahet «255-240» ja «oursuperclient«. Ja päringu suunamiseks sinna, kuhu vaja, peab aadress päringus välja nägema nii: 241.255-240.9.8.7.in-addr.arpa. Või nii, kui me kasutame sümboolset alamdomeeni: 241.oursuperclient.9.8.7.in-addr.arpa. See erineb tavalisest: 241.9.8.7.in-addr.arpa.

Sellise päringu täitmine kätega on keeruline. Isegi kui see õnnestub, ei ole selge, kuidas seda reaalses elus rakendada. Sest päringu järgi 7.8.9.241 vastab endiselt teenusepakkuja DNS, mitte kliendi.

Siin astub mängu CNAME.

Teenusepakkuja poolel tuleb kõikide alamvõrgu IP-aadresside jaoks luua alias, mis suunab päringu kliendi DNS-ile.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
jne.

See on tööka jaoks =).

Aga laisematele sobib rohkem allolev konstruktsioon:

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

Nüüd muudetakse päring teabe saamiseks aadressil 7.8.9.241 kohast 241.9.8.7.in-addr.arpa teenusepakkuja DNS-serveris 241.255-240.9.8.7.in-addr.arpa ja saadetakse kliendi DNS-ile.

Kliendi poolel tuleb selliseid päringuid töödelda. Seetõttu loome tsooni 255-240.9.8.7.in-addr.arpa. Selles saame põhimõtteliselt paigutada pöördwrite'e kõikide alamvõrgu /24 IP-de jaoks, kuid meilt küsitakse ainult nende kohta, mida teenusepakkuja meie poole suunab, seega ei saa siin naljatleda =).
Illustratsioonina tuletan veel kord meelde kliendi poole pöördwrite-faili sisu näidet:

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

Kuna kasutame pakkuja poolt CNAME'i, saame vastuseks andmepäringu kohta IP-aadressi kahe kirje, mitte ühte.

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

Ärge unustage ACL-i õigesti seadistada. Pole mõtet võtta endale PTR-ala ja mitte vastata välistele päringutele =).

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster