Balikkan perwakilan zon kepada subnet kurang daripada /24 dalam BIND. Bagaimana ia berfungsi

Pada suatu hari saya berhadapan dengan tugas untuk memberi hak kepada salah seorang pelanggan saya untuk mengedit rekod PTR subnet /28 yang diberikan kepadanya. Saya tidak mempunyai automasi untuk mengedit tetapan BIND dari luar. Oleh itu, saya memutuskan untuk mengambil laluan yang berbeza - untuk mewakilkan kepada pelanggan sekeping zon PTR subnet /24.

Nampaknya - apa yang lebih mudah? Kami hanya mendaftarkan subnet seperti yang diperlukan dan mengarahkannya ke NS yang dikehendaki, seperti yang dilakukan dengan subdomain. Tetapi tidak. Ia tidak begitu mudah (walaupun pada hakikatnya ia umumnya primitif, tetapi gerak hati tidak akan membantu), itulah sebabnya saya menulis artikel ini.

Sesiapa yang ingin memikirkannya sendiri boleh membaca RFC
Siapa mahu penyelesaian siap, selamat datang ke kucing.

Untuk tidak melengahkan mereka yang suka kaedah copy-paste, saya akan siarkan bahagian praktikal dahulu, barulah bahagian teori.

1. Berlatih. Mewakilkan zon /28

Katakan kita mempunyai subnet 7.8.9.0/24. Kita perlu mewakilkan subnet 7.8.9.240/28 kepada pelanggan dns 7.8.7.8 (ns1.client.domain).

Pada DNS pembekal anda perlu mencari fail yang menerangkan zon songsang subnet ini. Biarkanlah 9.8.7.dalam-addr.harp.
Kami mengulas penyertaan dari 240 hingga 255, jika ada. Dan pada akhir fail kami menulis yang berikut:

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

jangan lupa untuk meningkatkan zon bersiri dan lakukan

rndc reload

Ini melengkapkan bahagian penyedia. Mari kita beralih kepada dns pelanggan.

Mula-mula, mari buat fail /etc/bind/master/255-240.9.8.7.in-addr.arpa kandungan 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 dalam bernama.conf tambahkan perihalan fail baharu kami:

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

B mulakan semula proses ikatan.

/etc/init.d/named restart

Semua. Sekarang anda boleh menyemak.

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

Sila ambil perhatian bahawa bukan sahaja rekod PTR diberikan, tetapi juga CNAME. Begitulah sepatutnya. Jika anda tertanya-tanya mengapa, maka selamat datang ke bab seterusnya.

2. Teori. Bagaimana ia berfungsi.

Sukar untuk mengkonfigurasi dan menyahpepijat kotak hitam. Ia lebih mudah jika anda memahami apa yang berlaku di dalam.

Apabila kita mewakilkan subdomain dalam domain domain, kemudian kita menulis sesuatu seperti ini:

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

Kami memberitahu semua orang yang bertanya bahawa kami tidak bertanggungjawab ke atas tapak ini dan memberitahu siapa yang bertanggungjawab. Dan semua permintaan untuk klien.domain ubah hala ke 7.8.7.8. Apabila menyemak, kami melihat gambar berikut (kami akan meninggalkan apa yang pelanggan ada di sana. Tidak mengapa):

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

Itu. kami dimaklumkan bahawa terdapat rekod A sedemikian dan ipnya ialah 7.8.9.241. Tiada maklumat yang tidak perlu.

Bagaimanakah perkara yang sama boleh dilakukan dengan subnet?

Kerana pelayan DNS kami didaftarkan dalam RIPE, maka apabila meminta alamat IP PTR dari rangkaian kami, permintaan pertama masih kepada kami. Logiknya adalah sama seperti dengan domain. Tetapi bagaimana anda memasukkan subnet ke dalam fail zon?

Mari cuba masukkannya seperti ini:

255-240  IN  NS      7.8.7.8

Dan... keajaiban itu tidak berlaku. Kami tidak menerima sebarang pengalihan permintaan. Masalahnya ialah bind tidak tahu bahawa entri ini dalam fail zon terbalik adalah alamat IP, dan lebih-lebih lagi tidak memahami entri julat. Baginya, ini hanyalah sejenis subdomain simbolik. Itu. untuk mengikat tidak akan ada perbezaan antara "255-240"Dan"superclient kami". Dan untuk permintaan untuk pergi ke tempat yang perlu dituju, alamat dalam permintaan harus kelihatan seperti ini: 241.255-240.9.8.7.in-addr.arpa. Atau seperti ini jika kita menggunakan subdomain aksara: 241.oursuperclient.9.8.7.in-addr.arpa. Ini berbeza dari biasa: 241.9.8.7.dalam-addr.harp.

Sukar untuk membuat permintaan sedemikian secara manual. Dan walaupun ia berfungsi, ia masih tidak jelas cara menerapkannya dalam kehidupan sebenar. Lagipun, atas permintaan 7.8.9.241 DNS pembekal masih menjawab kami, bukan pelanggan.

Dan di sinilah mereka mula bermain CNAME.

Di pihak penyedia, anda perlu membuat alias untuk semua alamat IP subnet dalam format yang akan memajukan permintaan kepada DNS klien.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
ΠΈ Ρ‚.Π΄.

Ini untuk yang rajin =).

Dan untuk yang malas, reka bentuk di bawah lebih sesuai:

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

Sekarang minta maklumat di 7.8.9.241 daripada 241.9.8.7.dalam-addr.harp pada pelayan DNS pembekal akan ditukar kepada 241.255-240.9.8.7.in-addr.arpa dan pergi ke pelanggan dns.

Pihak pelanggan perlu mengendalikan permintaan sedemikian. Sehubungan itu, kami mewujudkan zon 255-240.9.8.7.in-addr.arpa. Di dalamnya, kami boleh, pada dasarnya, meletakkan entri terbalik untuk mana-mana ip keseluruhan /24 subnet, tetapi mereka hanya akan bertanya kepada kami tentang perkara yang dikemukakan oleh pembekal kepada kami, jadi kami tidak akan dapat bermain-main =).
Untuk menggambarkan, saya sekali lagi akan memberikan contoh kandungan fail zon terbalik dari 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.

Ini kerana kami menggunakan CNAME di pihak penyedia, dan sebagai tindak balas kepada permintaan data melalui alamat IP, kami menerima dua rekod, 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 betul. Kerana tidak masuk akal untuk mengambil zon PTR untuk diri sendiri dan tidak bertindak balas kepada sesiapa dari luar =).

Sumber: www.habr.com

Tambah komen