Dalam DNS dapatkah IN NS menunjuk ke CNAME?

17

Apakah boleh membuat catatan NS menjadi CNAME? Misalnya:

subdomain.example.com.       IN NS  ns1.example.com.
ns1.example.com.             CNAME  foo.example.com.
foo.example.com.             IN A   10.1.1.1

Ini tampaknya tidak berfungsi dalam ikatan meskipun ini (tentu saja) tidak:

subdomain.example.com.       IN NS  foo.example.com.
foo.example.com.             IN A   10.1.1.1

Setiap petunjuk ke RFC yang melarang pengaturan ini akan dihargai.

Mark Wagner
sumber

Jawaban:

20

RFC aktual yang mendefinisikan NS RR ( RFC1035 ) hanya mengatakan bahwa itu adalah nama domain tanpa menentukan tipe RR dari target (meskipun itu membuatnya jelas bahwa itu tidak bisa menjadi IP). Itu mendapatkan disebutkan secara spesifik dalam RFC1912 , bagian 2.4:

Memiliki catatan NS yang mengarah ke CNAME buruk dan dapat bertentangan dengan server BIND saat ini. Bahkan, implementasi BIND saat ini akan mengabaikan catatan tersebut, mungkin mengarah ke delegasi lumpuh. Ada sejumlah pemeriksaan keamanan yang dilakukan dalam BIND untuk mencegah spoofing catatan DNS NS. Selain itu, server BIND yang lebih lama dilaporkan akan terperangkap dalam loop kueri yang tak terbatas mencoba untuk mencari tahu alamat server nama alias, yang menyebabkan aliran terus menerus permintaan DNS untuk dikirim.

Bukan HARUS TIDAK, tapi itu pasti cocok dengan perilaku yang Anda lihat

jj33
sumber
5
Dan RFC1034 mengatakan, "Nama domain dalam RR yang menunjuk pada nama lain harus selalu menunjuk pada nama utama dan bukan alias. Ini menghindari tipuan ekstra dalam mengakses informasi .... Tentu saja, berdasarkan prinsip ketahanan, perangkat lunak domain tidak boleh gagal ketika disajikan dengan rantai atau loop CNAME; Rantai CNAME harus diikuti dan loop CNAME ditandai sebagai kesalahan. "
larsks
10
Saya menemukan bahwa RFC 2181 10.3 dengan jelas mengatakan bahwa itu tidak valid tetapi jawaban Anda cukup baik.
Mark Wagner
1
Untuk kejelasan tambahan: MUST NOTbertele-tele tidak penting di sini karena RFC 1912 bersifat Informasional dan tidak mendefinisikan standar. Mark benar bahwa RFC 2181 adalah referensi yang benar. (RFC 1034 ditulis sebelum standar bahasa dipadatkan, karenanya ketidakjelasan)
Andrew B