Jika server DNS mencari catatan dan itu hilang, sering kali akan "secara negatif menyimpan" fakta bahwa catatan ini hilang, dan tidak mencoba mencarinya lagi untuk sementara waktu. Saya tidak melihat apa pun di RFC tentang TTL pada caching negatif seharusnya, jadi saya kira itu agak sewenang-wenang. Di dunia nyata, berapa lama catatan negatif ini bertahan?
domain-name-system
Leopd
sumber
sumber
Jawaban:
TTL untuk caching negatif tidak sewenang-wenang. Ini diambil dari catatan SOA di bagian atas zona dimana catatan yang diminta akan menjadi milik, seandainya ada. Sebagai contoh:
Nilai terakhir dalam catatan SOA ("86400") adalah jumlah waktu yang diminta klien untuk menyimpan hasil negatif
example.org.
.Jika klien meminta
doesnotexist.example.org.
, itu akan men-cache hasil selama 86400 detik.sumber
MIN(SOA TTL, SOA.MINIMUM)
, bukan hanyaSOA.MINIMUM
. (Lihat tools.ietf.org/html/rfc2308#section-5 )Ini tergantung pada definisi pasti Anda dari "permintaan negatif", tetapi dalam kedua kasus, ini didokumentasikan dalam rfc2308 «Caching Negatif atas Pertanyaan DNS (DNS NCACHE)» :
NXDOMAIN
NXDOMAIN
, respons akan datang denganSOA
catatan, yang akan berisiNXDOMAIN
TTL (secara tradisional dikenal sebagaiMINIMUM
bidang).rfc2308#section-4
SERVFAIL
Jika resolusi tidak berhasil, dan menghasilkan batas waktu (
SERVFAIL
) , maka itu mungkin juga tidak akan di-cache sama sekali, dan dalam semua keadaan TIDAK HARUS di-cache selama lebih dari 5 menit.rfc2308#section-7.1
Perhatikan bahwa dalam praktiknya, caching hasil seperti itu selama 5 menit penuh yang diijinkan adalah cara yang bagus untuk mengurangi pengalaman klien jika server cache mereka kadang-kadang mengalami masalah konektivitas singkat (dan secara efektif membuatnya mudah rentan terhadap amplifikasi Denial-of-Service, di mana beberapa detik downtime akan mengakibatkan bagian-bagian tertentu dari DNS turun selama lima menit penuh).
Sebelum ke BIND 9.9.6-S1 (dirilis pada 2014), tampaknya,
SERVFAIL
tidak di-cache sama sekali.a878301
(2014-09-04)Misalnya, pada saat pertanyaan Anda dan di semua versi BIND dirilis sebelum 2014, penyelesai rekursif BIND tidak melakukan cache
SERVFAIL
sama sekali, jika komitmen di atas dan dokumentasi tentang pengantar pertama dalam 9,9.6-S1 dapat dipercaya .Dalam BIND terbaru, standarnya
servfail-ttl
adalah1s
, dan pengaturannya dikodekan ke langit-langit30s
(menggantikan langit-langit yang diamanatkan oleh RFC300s
).90174e6
(2015-10-17)Selain itu, berikut adalah beberapa kutipan penting tentang masalah ini:
Singkatnya,
NXDOMAIN
respons akan di-cache seperti ditentukan dalamSOA
zona yang berlaku, sedangkanSERVFAIL
kemungkinan tidak akan di-cache, atau, jika di-cache, paling banyak berupa angka dua digit detik.sumber
Ada RFC yang didedikasikan untuk topik ini: RFC 2308 - Caching Negatif atas Pertanyaan DNS (DNS NCACHE) .
Bagian yang relevan untuk dibaca adalah 5 - Caching Jawaban Negatif yang menyatakan:
Pertama mari kita mengidentifikasi
SOA.MINIMUM
dan SOA TTL yang dijelaskan dalam RFC. TTL adalah angka sebelum tipe catatanIN
(900
detik dalam contoh di bawah). Sedangkan minimum adalah bidang terakhir dalam catatan (86400
detik dalam contoh di bawah).Sekarang mari kita lihat beberapa contoh,
serverfault.com
zona ini ilustratif karena memiliki server otoritatif dari dua penyedia berbeda yang dikonfigurasi secara berbeda.Mari kita menemukan server nama resmi untuk
serverfault.com
zona:Kemudian periksa catatan SOA menggunakan server aws:
Dari ini kita dapat melihat bahwa TTL dari catatan SOA adalah
900
detik sedangkan nilai TTL negatif adalah86400
detik. Nilai SOA TTL900
lebih rendah sehingga kami berharap nilai ini digunakan.Sekarang jika kita meminta server otoritatif untuk domain yang tidak ada, kita harus mendapatkan respons tanpa jawaban dan dengan catatan SOA di bagian otoritas:
Ketika resolver rekursif (caching) menerima jawaban ini, ia akan mengurai catatan SOA di
AUTHORITY SECTION
dan menggunakan TTL catatan ini untuk menentukan berapa lama ia harus menyimpan hasil negatif (dalam kasus ini900
detik).Sekarang mari ikuti prosedur yang sama dengan server nama google:
Anda dapat melihat bahwa server nama google memiliki nilai yang berbeda untuk nilai TTL SOA dan negatif TTL. Dalam hal ini TTL negatif
300
lebih rendah daripada SOA TTL21600
. Karena itu server google harus menggunakan nilai yang lebih rendah dalamAUTHORITY SECTION
catatan SOA ketika mengembalikanNXDOMAIN
respons:Seperti yang diharapkan, TTL dari catatan SOA dalam
NXDOMAIN
respons adalah300
detik.Contoh di atas juga menunjukkan betapa mudahnya mendapatkan jawaban yang berbeda untuk permintaan yang sama. Jawaban yang akhirnya diselesaikan oleh seorang penyelesai caching adalah ke mana namserver otoritatif ditanyai.
Dalam pengujian saya, saya juga telah mengamati bahwa beberapa resolvers (caching) rekursif tidak mengembalikan sebuah
AUTHORITY SECTION
dengan catatan SOA dengan TTL menurun untuk permintaan berikutnya sedangkan yang lain melakukannya.Sebagai contoh, resolver cloudflare tidak (perhatikan nilai TTL yang mengurangi):
Sementara resolver default di AWS VPC akan merespons dengan bagian otoritas hanya pada permintaan pertama:
Catatan: Jawaban ini membahas perilaku
NXDOMAIN
jawaban.Glosarium:
sumber