Membalikkan delegasi zona ke subnet kurang dari /24 di BIND. Bagaimana itu bekerja

Suatu hari saya dihadapkan pada tugas untuk memberikan salah satu klien saya hak untuk mengedit catatan PTR dari subnet /28 yang ditugaskan kepadanya. Saya tidak memiliki otomatisasi untuk mengedit pengaturan BIND dari luar. Oleh karena itu, saya memutuskan untuk mengambil rute yang berbeda - untuk mendelegasikan kepada klien sebagian dari zona PTR dari subnet /24.

Tampaknya - apa yang lebih sederhana? Kita cukup mendaftarkan subnet sesuai kebutuhan dan mengarahkannya ke NS yang diinginkan, seperti yang dilakukan dengan subdomain. Tapi tidak. Tidak sesederhana itu (walaupun pada kenyataannya umumnya primitif, tetapi intuisi tidak membantu), itulah sebabnya saya menulis artikel ini.

Siapa pun yang ingin mengetahuinya sendiri dapat membaca RFC
Siapa yang menginginkan solusi siap pakai, selamat datang di cat.

Agar tidak menunda bagi yang menyukai metode copy-paste, saya akan memposting bagian praktiknya terlebih dahulu, baru bagian teorinya.

1. Latihan. Mendelegasikan zona /28

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

Pada DNS penyedia Anda perlu menemukan file yang menjelaskan zona kebalikan dari subnet ini. Biarlah 9.8.7.in-addr.harp.
Kami mengomentari entri dari 240 hingga 255, jika ada. Dan di akhir file kami menulis yang berikut:

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

jangan lupa untuk meningkatkan zona serial dan lakukan

rndc reload

Ini melengkapi bagian penyedia. Mari beralih ke dns klien.

Pertama, mari kita buat file /etc/bind/master/255-240.9.8.7.in-addr.arpa 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 masuk bernama.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 memulai kembali proses pengikatan.

/etc/init.d/named restart

Semua. Sekarang Anda dapat 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 data PTR yang diberikan, tetapi juga CNAME. Begitulah seharusnya. Jika Anda bertanya-tanya mengapa, selamat datang di bab berikutnya.

2. Teori. Bagaimana itu bekerja.

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

Saat kami mendelegasikan subdomain dalam sebuah domain domain, lalu kita tulis seperti ini:

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

Kami memberi tahu semua orang yang bertanya bahwa kami tidak bertanggung jawab atas area ini dan memberi tahu siapa yang bertanggung jawab. Dan semua permintaan untuk klien.domain dialihkan ke 7.8.7.8. Saat memeriksa, kami melihat gambar berikut (kami akan menghilangkan apa yang dimiliki klien di sana. Tidak masalah):

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

Itu. kami diberitahu bahwa ada catatan A dan ipnya adalah 7.8.9.241. Tidak ada informasi yang tidak perlu.

Bagaimana hal yang sama dapat dilakukan dengan subnet?

Karena server DNS kita terdaftar di RIPE, maka ketika meminta alamat IP PTR dari jaringan kita, permintaan pertama akan tetap ke kita. Logikanya sama dengan domain. Tapi bagaimana Anda memasukkan subnet ke dalam file zona?

Mari kita coba memasukkannya seperti ini:

255-240  IN  NS      7.8.7.8

Dan... keajaiban itu tidak terjadi. Kami tidak menerima pengalihan permintaan apa pun. Masalahnya adalah bind bahkan tidak mengetahui bahwa entri dalam file zona terbalik ini adalah alamat IP, dan tentu saja tidak memahami entri rentang tersebut. Baginya, ini hanyalah semacam subdomain simbolis. Itu. untuk mengikat tidak akan ada perbedaan antara "255-240"Dan"klien super kami". Dan agar permintaan dapat dikirim ke tempat yang dituju, 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.klien super kami.9.8.7.di-addr.arpa. Ini berbeda dari biasanya: 241.9.8.7.in-addr.harp.

Akan sulit untuk membuat permintaan seperti itu secara manual. Dan meskipun berhasil, masih belum jelas bagaimana menerapkannya dalam kehidupan nyata. Lagi pula, berdasarkan permintaan 7.8.9.241 DNS penyedia masih menjawab kami, bukan klien.

Dan di sinilah mereka berperan CNAME.

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 bagi yang malas, desain di bawah ini lebih cocok:

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

Sekarang minta informasi di 7.8.9.241 dari 241.9.8.7.in-addr.harp di server DNS penyedia akan dikonversi menjadi 241.255-240.9.8.7.in-addr.arpa dan pergi ke klien dns.

Sisi klien perlu menangani permintaan tersebut. Oleh karena itu, kami membuat zona 255-240.9.8.7.in-addr.arpa. Di dalamnya, pada prinsipnya, kita dapat menempatkan entri terbalik untuk ip mana pun dari seluruh subnet /24, tetapi mereka hanya akan menanyakan kepada kita tentang yang diteruskan oleh penyedia kepada kita, jadi kita tidak akan bisa bermain-main =).
Sebagai ilustrasi, sekali lagi saya akan memberikan contoh isi file zona 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.

Itu karena kami menggunakan CNAME di sisi penyedia, dan sebagai respons terhadap permintaan data berdasarkan alamat IP, kami menerima dua catatan, 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 mengambil zona PTR untuk diri sendiri dan tidak merespon siapapun dari luar =).

Sumber: www.habr.com

Tambah komentar