Delegasi zona reverse subnet kurang dari / 24 di BIND. Bagaimana cara kerjanya

Suatu kali saya menghadapi tugas memberikan salah satu klien hak untuk mengedit catatan PTR dari subnet yang ditugaskan untuknya / 28. Saya tidak memiliki otomatisasi untuk mengedit pengaturan BIND dari luar. Jadi saya memutuskan untuk pergi ke arah lain - untuk mendelegasikan kepada klien bagian dari zona subnet PTR / 24.

Tampaknya - apa yang bisa lebih mudah? Kami hanya meresepkan subnet dengan cara yang benar dan mengarahkannya ke NS yang diinginkan karena dilakukan dengan subdomain. Tapi tidak. Ini tidak begitu sederhana (walaupun pada kenyataannya itu pada dasarnya primitif, tetapi intuisi tidak akan membantu), itu sebabnya saya menulis artikel ini.

Siapa yang ingin mengetahuinya sendiri dapat membaca RFC
Siapa yang mau solusi yang siap pakai, selamat datang di kucing.

Agar tidak menunda mereka yang suka metode copy-paste, pertama saya akan memposting bagian praktis, dan setelah itu bagian teoretis.

1. Berlatih. Zona pendelegasian / 28

Katakanlah kita memiliki subnet dari 7.8.9.0/24 . Kita perlu mendelegasikan subnet 7.8.9.240/28 ke klien dns 7.8.7.8 ( ns1.client.domain ).

Pada DNS penyedia Anda perlu menemukan file yang menjelaskan zona balik dari subnet ini. Biarkan 9.8.7.in-addr.arpa .
Posting dari 240 hingga 255 dikomentari, jika ada. Dan di akhir file, tulis yang berikut ini:

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

jangan lupa untuk menambah zona serial dan lakukan

 rndc reload 

Tentang ini, bagian penyedia sudah berakhir. Kami beralih ke dns klien.

Pertama, buat file /etc/bind/master/255-240.9.8.7.in-addr.arpa dengan konten berikut:

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

Dan di named.conf, tambahkan deskripsi file baru kami:

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

B restart proses bind.

 /etc/init.d/named restart 

Itu saja. Sekarang kamu bisa memeriksanya.

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

Harap dicatat bahwa tidak hanya catatan PTR yang diberikan, tetapi juga CNAME. Seharusnya begitu. Jika Anda bertanya-tanya mengapa, maka selamat datang di bab berikutnya.

2. Teori. Bagaimana cara kerjanya?

Sulit untuk mengkonfigurasi dan men-debug kotak hitam. Jauh lebih mudah jika Anda memahami apa yang terjadi di dalam.

Ketika kami mendelegasikan subdomain di domain domain , kami menulis sesuatu seperti ini:

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

Kami memberi tahu semua orang yang meminta bahwa kami tidak bertanggung jawab atas situs ini dan kami mengatakan siapa yang bertanggung jawab. Dan semua permintaan ke client.domain dialihkan ke 7.8.7.8. Saat memeriksa, kami melihat gambar berikut (mengabaikan apa yang dimiliki klien di sana. Itu tidak masalah):

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

Yaitu kami diberitahu bahwa ada catatan A dan ip 7.8.9.241. Tidak ada informasi yang tidak perlu.

Tetapi bagaimana hal yang sama dapat dilakukan dengan subnet?

Karena Karena server DNS kami terdaftar di RIPE, ketika meminta alamat IP PTR dari jaringan kami, permintaan pertama masih akan dikirimkan kepada kami. Logikanya sama dengan domain. Tetapi bagaimana cara memasukkan subnet dalam file zona?

Kami mencoba memasukkannya seperti ini:

 255-240 IN NS 7.8.7.8 

Dan ... keajaiban tidak terjadi. Kami tidak menerima pengalihan permintaan apa pun. Masalahnya adalah bahwa bind sama sekali tidak menyadari bahwa entri-entri ini dalam file reverse zone adalah ip-address dan bahkan lebih sehingga mereka tidak memahami entri range. Baginya, ini hanya subdomain simbolis. Yaitu untuk mengikat tidak akan ada perbedaan antara " 255-240 " dan " klien kami ". Dan permintaan permintaan untuk pergi ke tempat seharusnya, alamat dalam permintaan akan terlihat seperti ini: 241.255-240.9.8.7.in-addr.arpa . Atau seperti ini jika kita menggunakan subdomain karakter: 241.oursuperclient.9.8.7.in-addr.arpa . Ini berbeda dari yang biasa: 241.9.8.7.in-addr.arpa .

Permintaan seperti itu akan bermasalah. Dan jika berhasil, masih belum jelas bagaimana menerapkannya dalam kehidupan nyata. Bagaimanapun, atas permintaan 7.8.9.241 , DNS penyedia, dan bukan klien, masih menjawab kami.

Dan di sini CNAME ikut berperan.

Di sisi penyedia, Anda perlu membuat alias untuk semua alamat IP subnet dalam format yang akan meneruskan permintaan ke DNS klien.

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

Ini untuk pekerja keras =).

Dan untuk yang malas, desain di bawah ini lebih cocok:

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

Sekarang, permintaan informasi di 7.8.9.241 dari 241.9.8.7.in-addr.arpa di server penyedia dns akan dikonversi ke 241.255-240.9.8.7.in-addr.arpa dan akan dikirimkan ke klien dns.

Klien perlu memproses permintaan tersebut. Oleh karena itu, kami membuat zona 255-240.9.8.7.in-addr.arpa . Di dalamnya, kami pada dasarnya dapat memposting catatan terbalik untuk semua ip dari seluruh / 24 subnet, tetapi kami hanya akan ditanyai tentang hal-hal yang akan dialihkan oleh penyedia, sehingga Anda tidak akan bisa bermain-main =).
Sebagai ilustrasi, saya akan memberikan contoh konten file zona terbalik di sisi klien:

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

Di sini, karena kami menggunakan CNAME pada bagian dari penyedia, kami menerima dua catatan sebagai tanggapan atas permintaan data berdasarkan alamat ip, dan bukan satu.

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

Dan jangan lupa untuk mengkonfigurasi ACL dengan benar. Karena tidak masuk akal untuk mengambil zona PTR untuk diri sendiri dan tidak menjawab siapa pun dari luar =).

Source: https://habr.com/ru/post/id451890/


All Articles