BIND da /24 dan kichik bo'lgan pastki tarmoqlarga teskari zona delegatsiyasi. U qanday ishlaydi

Bir kuni men mijozlarimdan biriga unga tayinlangan /28 quyi tarmog'ining PTR yozuvlarini tahrir qilish huquqini berish vazifasiga duch keldim. BIND sozlamalarini tashqaridan tahrirlash uchun menda avtomatizatsiya yo'q. Shuning uchun men boshqa yo'lni tanlashga qaror qildim - mijozga /24 pastki tarmog'ining PTR zonasining bir qismini topshirish.

Ko'rinishidan - nima oddiyroq bo'lishi mumkin? Biz shunchaki quyi tarmoqni kerakli tarzda ro'yxatdan o'tkazamiz va uni subdomen bilan bo'lgani kabi kerakli NS ga yo'naltiramiz. Lekin yoq. Bu unchalik oddiy emas (garchi aslida bu umuman ibtidoiy bo'lsa-da, lekin sezgi yordam bermaydi), shuning uchun men ushbu maqolani yozyapman.

Buni o'zi tushunmoqchi bo'lgan har bir kishi o'qishi mumkin RFC
Kim tayyor yechimni xohlasa, mushukka xush kelibsiz.

Nusxa ko'chirish usulini yoqtirganlarni kechiktirmaslik uchun avval amaliy qismini, keyin esa nazariy qismini e'lon qilaman.

1. Amaliyot. Delegatsiya zonasi /28

Aytaylik, bizda quyi tarmoq bor 7.8.9.0/24. Biz quyi tarmoqni topshirishimiz kerak 7.8.9.240/28 dns mijoziga 7.8.7.8 (ns1.client.domain).

Provayderning DNS-da siz ushbu pastki tarmoqning teskari zonasini tavsiflovchi faylni topishingiz kerak. Tinch qo'y, hamma narsa o'z holidagiday qo'sin; shunday bo'lsin 9.8.7. Qo'shimchasida.
Agar mavjud bo'lsa, biz 240 dan 255 gacha yozuvlarni sharhlaymiz. Va faylning oxirida biz quyidagilarni yozamiz:

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

ketma-ket zonani oshirishni unutmang va qiling

rndc reload

Bu provayder qismini yakunlaydi. Keling, mijozning DNS-ga o'tamiz.

Birinchidan, fayl yarataylik /etc/bind/master/255-240.9.8.7.in-addr.arpa quyidagi tarkib:

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

Va ichkarida nomlangan.conf yangi faylimiz tavsifini qo'shing:

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

B ulanish jarayonini qayta ishga tushiring.

/etc/init.d/named restart

Hammasi. Endi tekshirishingiz mumkin.

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

E'tibor bering, nafaqat PTR yozuvi, balki CNAME ham berilgan. Shunday bo'lishi kerak. Agar nima uchun deb qiziqsangiz, keyingi bobga xush kelibsiz.

2. Nazariya. U qanday ishlaydi.

Qora qutini sozlash va disk raskadrovka qilish qiyin. Ichkarida nima bo'layotganini tushunsangiz, bu juda oson.

Domendagi subdomenni vakolat berganimizda domen, keyin biz shunday yozamiz:

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

Biz so'ragan har bir kishiga bu sayt uchun javobgar emasligimizni aytamiz va kim mas'ul ekanini aytamiz. Va barcha so'rovlar mijoz.domen 7.8.7.8 ga yo'naltirish. Tekshirish paytida biz quyidagi rasmni ko'ramiz (mijozda nima borligini o'tkazib yuboramiz. Bu muhim emas):

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

Bular. Bizga shunday A yozuvi borligi va uning ipi 7.8.9.241 ekanligi haqida xabar berildi. Keraksiz ma'lumotlar yo'q.

Xuddi shu narsani quyi tarmoq bilan qanday qilish mumkin?

Chunki bizning DNS serverimiz RIPE-da ro'yxatdan o'tgan, keyin tarmog'imizdan PTR IP-manzilini so'raganda, birinchi so'rov biz uchun bo'ladi. Mantiq domenlar bilan bir xil. Ammo zona fayliga quyi tarmoqni qanday kiritish mumkin?

Keling, uni quyidagicha kiritishga harakat qilaylik:

255-240  IN  NS      7.8.7.8

Va... mo‘jiza sodir bo‘lmadi. Biz hech qanday soʻrovni yoʻnaltirmayapmiz. Gap shundaki, bind teskari zona faylidagi ushbu yozuvlar IP manzillar ekanligini bilmaydi va hatto diapazondagi yozuvni ham tushunmaydi. Uning uchun bu faqat qandaydir ramziy subdomendir. Bular. bog'lash uchun "o'rtasida hech qanday farq bo'lmaydi"255-240"Va"bizning super mijozimiz". Va so'rov kerakli joyga borishi uchun so'rovdagi manzil quyidagicha ko'rinishi kerak: 241.255-240.9.8.7.in-addr.arpa. Yoki xarakterli subdomendan foydalansak, shunga o'xshash: 241.oursuperclient.9.8.7.in-addr.arpa. Bu odatdagidan farq qiladi: 241.9.8.7. Qo'shimchasida.

Bunday so'rovni qo'lda qilish qiyin bo'ladi. Va agar u ishlayotgan bo'lsa ham, uni haqiqiy hayotda qanday qo'llash hali ham noma'lum. Axir, iltimosiga binoan 7.8.9.241 Provayderning DNS-si mijozning emas, balki bizga javob beradi.

Va bu erda ular o'ynashadi CNAME.

Provayder tomonida siz quyi tarmoqning barcha IP manzillari uchun so'rovni mijoz DNS-ga yo'naltiradigan formatda taxallus qo'yishingiz kerak.

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

Bu mehnatkashlar uchun =).

Va dangasa uchun quyidagi dizayn ko'proq mos keladi:

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

Endi ma'lumotni so'rang 7.8.9.241 dan 241.9.8.7. Qo'shimchasida provayderning DNS serveridagi ga aylantiriladi 241.255-240.9.8.7.in-addr.arpa va dns mijoziga o'tadi.

Mijoz tomoni bunday so'rovlarni ko'rib chiqishi kerak. Shunga ko'ra, biz zonani yaratamiz 255-240.9.8.7.in-addr.arpa. Unda biz, qoida tariqasida, butun /24 pastki tarmoqning istalgan IP-ga teskari yozuvlarni qo'yishimiz mumkin, lekin ular bizdan faqat provayder bizga yuborganlar haqida so'rashadi, shuning uchun biz o'ynay olmaymiz =).
Tasavvur qilish uchun men yana bir bor mijoz tomonidan teskari zona faylining mazmuniga misol keltiraman:

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

Buning sababi, biz CNAME-dan provayder tomonidan foydalanamiz va IP-manzil bo'yicha ma'lumotlar so'roviga javoban biz bitta emas, ikkita yozuvni olamiz.

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

Va ACLni to'g'ri sozlashni unutmang. Chunki o'zingiz uchun PTR zonasini olish va tashqaridan hech kimga javob bermaslik mantiqiy emas =).

Manba: www.habr.com

a Izoh qo'shish