Ini adalah Pertanyaan Canonical tentang CNAME di apeks (atau akar) zona
Sudah menjadi rahasia umum bahwa CNAME
catatan di puncak domain adalah praktik yang tabu.
Contoh:
example.com. IN CNAME ithurts.example.net.
Dalam kasus terbaik, perangkat lunak nameserver skenario mungkin menolak memuat konfigurasi, dan dalam kasus terburuk mungkin menerima konfigurasi ini dan membatalkan konfigurasi untuk example.com.
Baru-baru ini saya memiliki perusahaan webhosting meneruskan instruksi ke unit bisnis yang kami butuhkan untuk CNAME puncak domain kami ke catatan baru. Mengetahui bahwa ini akan menjadi konfigurasi bunuh diri ketika diumpankan ke BIND, saya menasehati mereka bahwa kami tidak akan dapat mematuhinya dan bahwa ini adalah saran tidur pada umumnya. Perusahaan webhosting mengambil sikap bahwa itu tidak langsung dilarang oleh RFC mendefinisikan standar dan bahwa perangkat lunak mereka mendukungnya. Jika kami tidak dapat CNAME apex, saran mereka adalah tidak memiliki catatan apex sama sekali dan mereka tidak akan menyediakan server web pengarah. ...Apa?
Sebagian besar dari kita tahu bahwa RFC1912 menegaskan hal itu A CNAME record is not allowed to coexist with any other data.
, tetapi mari kita jujur pada diri kita sendiri di sini, bahwa RFC hanyalah informasi. Yang paling dekat yang saya tahu bertele-tele yang melarang praktik ini dari RFC1034 :
Jika CN CNAME hadir di sebuah node, tidak ada data lain yang harus ada; ini memastikan bahwa data untuk nama kanonik dan aliasnya tidak boleh berbeda.
Sayangnya saya sudah cukup lama berkecimpung dalam industri ini untuk mengetahui bahwa "seharusnya tidak" tidak sama dengan "tidak boleh", dan itu adalah tali yang cukup bagi sebagian besar perancang perangkat lunak untuk digantung. Mengetahui bahwa tautan singkat ke slam dunk akan sia-sia, saya akhirnya membiarkan perusahaan itu pergi dengan omelan karena merekomendasikan konfigurasi yang dapat merusak perangkat lunak yang biasa digunakan tanpa pengungkapan yang tepat.
Ini membawa kita ke T&J. Untuk sekali ini saya ingin kita benar-benar teknis tentang kegilaan CNAME puncak, dan tidak membahas masalah seperti yang biasa kita lakukan ketika seseorang memposting subjek. RFC1912 terlarang, seperti halnya RFC Informasi lain yang berlaku di sini yang tidak saya pikirkan. Mari kita matikan bayi ini.
sumber
Jawaban:
CNAME
catatan pada awalnya dibuat untuk memungkinkan beberapa nama yang menyediakan sumber daya yang sama untuk alias "nama kanonik" tunggal untuk sumber daya. Dengan munculnya virtual hosting berbasis nama, itu telah menjadi biasa untuk menggunakannya sebagai bentuk umum dari alamat IP alias. Sayangnya, kebanyakan orang yang berasal dari latar belakang web hosting mengharapkanCNAME
catatan untuk menunjukkan kesetaraan dalam DNS , yang tidak pernah menjadi maksudnya. Apex berisi tipe rekaman yang jelas tidak digunakan dalam identifikasi sumber daya host kanonik (NS
,SOA
), yang tidak dapat di aliasing tanpa melanggar standar di tingkat fundamental. (khususnya dalam hal pemotongan zona )Sayangnya, standar DNS asli ditulis sebelum badan-badan pengatur standar menyadari bahwa kata-kata eksplisit diperlukan untuk mendefinisikan perilaku yang konsisten ( RFC 2119 ). Itu perlu untuk membuat RFC 2181 untuk mengklarifikasi beberapa kasus sudut karena kata-kata yang tidak jelas, dan verbiage diperbarui membuatnya lebih jelas bahwa a
CNAME
tidak dapat digunakan untuk mencapai aliasing puncak tanpa melanggar standar.Ini menetapkan bahwa
SOA
danNS
catatan adalah wajib, tetapi tidak mengatakan tentangA
atau jenis lain yang muncul di sini. Mungkin kelihatannya berlebihan bahwa saya mengutip ini, tetapi itu akan menjadi lebih relevan dalam sekejap.RFC 1034 agak kabur tentang masalah yang dapat muncul ketika
CNAME
ada bersama jenis rekaman lainnya. RFC 2181 menghapus ambiguitas dan secara eksplisit menyatakan jenis rekaman yang diizinkan ada di sampingnya:"alias nama" dalam konteks ini mengacu pada sisi kiri
CNAME
catatan. Daftar bullet membuatnya secara eksplisit jelas bahwaSOA
,NS
, danA
catatan tidak dapat dilihat pada simpul manaCNAME
juga muncul. Ketika kami menggabungkan ini dengan bagian 6.1, tidak mungkin untukCNAME
ada di apex karena harus hidup berdampingan dengan wajibSOA
danNS
catatan.(Ini tampaknya melakukan pekerjaan itu, tetapi jika seseorang memiliki jalan yang lebih pendek untuk membuktikan tolong beri celah padanya.)
Memperbarui:
Tampaknya kebingungan yang lebih baru datang dari keputusan Cloudflare baru-baru ini untuk memungkinkan catatan CNAME ilegal didefinisikan di puncak domain, di mana mereka akan mensintesis catatan A. "Sesuai RFC" seperti yang dijelaskan oleh artikel yang ditautkan mengacu pada fakta bahwa catatan yang disintesis oleh Cloudflare akan bermain dengan baik dengan DNS. Ini tidak mengubah fakta bahwa itu adalah perilaku yang sepenuhnya khusus.
Menurut pendapat saya ini adalah merugikan komunitas DNS yang lebih besar: itu sebenarnya bukan catatan CNAME, dan menyesatkan orang untuk percaya bahwa perangkat lunak lain kurang karena tidak mengizinkannya. (seperti yang ditunjukkan oleh pertanyaan saya)
sumber
SOA
+NS
catatan, 2.CNAME
catatan tidak diizinkan untuk hidup berdampingan dengan data lain)CNAME
arti sebenarnya dari sebuah catatan, karena itu mungkin merupakan tipe catatan yang paling banyak disalahpahami. Meskipun itu agak di luar batas, saya pikir ini menjadi FAQ adalah akibat langsung dari banyak (sebagian besar?) Tidak memiliki pemahaman yang tepatCNAME
.SRV
, yang juga akan membuat ini menjadi tidak masalah. Masalahnya tidak terbatas pada apa yang dibahas di sini;CNAME
adalah, bertentangan dengan kepercayaan populer, bukan pasangan yang cocok untuk apa yang dibutuhkan. Pada akhirnya, karenaCNAME
tidak berfungsi seperti yang diharapkan orang (!) Dan tidak dapat dirancang ulang secara surut dan karena implementasi HTTP tidak digunakanSRV
, tampaknya lebih mungkin bahwa fungsionalitas gaya "alias" menjadi lebih lazim untuk memenuhi HTTP (jenis catatan spesifik aliasing diimplementasikan di belakang layar alih-alih sebagai jenis rekaman yang terlihat)Konsorsium Sistem Internet baru-baru ini memposting tulisan di CNAME di puncak zona , mengapa pembatasan ini ada, dan sejumlah alternatif. Ini tidak akan berubah dalam waktu dekat, sayangnya:
Tapi ada harapan:
sumber
Jika Anda mengarahkan ulang seluruh zona, Anda harus menggunakan DNAME. Menurut RFC 6672 ,
sumber