Ini adalah Pertanyaan Canonical tentang DNS (Layanan Nama Domain).
Jika pemahaman saya tentang sistem DNS benar, registri .com memegang tabel yang memetakan domain (www.example.com) ke server DNS.
Apa keuntungannya? Mengapa tidak memetakan langsung ke alamat IP?
Jika satu-satunya catatan yang perlu diubah ketika saya mengkonfigurasi server DNS untuk menunjuk ke alamat IP yang berbeda, terletak di server DNS, mengapa prosesnya tidak instan?
Jika satu-satunya alasan penundaan adalah cache DNS, apakah mungkin untuk mem-bypassnya, jadi saya bisa melihat apa yang terjadi secara real time?
domain-name-system
sabof
sumber
sumber
You can not able full understand DNS unless you are name Paul Mockapetris, Paul Vixie or Cricket Liu.
twitter.com/DEVOPS_BORAT/status/249006925767909376Jawaban:
Sebenarnya, ini lebih rumit dari itu - daripada satu "registry pusat (yang) memegang tabel yang memetakan domain (www.mysite.com) ke server DNS", ada beberapa lapisan hierarki
Ada registri pusat (Server Akar) yang hanya berisi satu set kecil entri: NS (nameserver) catatan untuk semua domain tingkat atas -
.com
,.net
,.org
,.uk
,.us
,.au
, dan sebagainya.Server-server itu hanya berisi catatan NS untuk tingkat berikutnya turun Untuk memilih salah satu contoh, nameserver untuk
.uk
domain hanya memiliki entri untuk.co.uk
,.ac.uk
dan zona tingkat kedua lainnya digunakan di Inggris.Server-server itu hanya berisi catatan NS untuk tingkat berikutnya turun - untuk melanjutkan contoh, mereka memberi tahu Anda di mana untuk menemukan catatan NS
google.co.uk
. Di server-server itulah akhirnya Anda akan menemukan pemetaan antara nama hostwww.google.co.uk
dan alamat IP.Sebagai kerutan tambahan, setiap lapisan juga akan menyajikan catatan 'rekat'. Setiap catatan NS memetakan domain ke nama host - misalnya, catatan NS untuk
.uk
daftarnsa.nic.uk
sebagai salah satu server. Untuk sampai ke level berikutnya, kita perlu mencari tahu data NS untuknic.uk
are, dan mereka ternyata menyertakannsa.nic.uk
juga. Jadi sekarang kita perlu mengetahui IPnsa.nic.uk
, tetapi untuk mengetahuinya kita perlu membuat querynsa.nic.uk
, tapi kita tidak bisa membuat query sampai kita tahu IP untuknsa.nic.uk
...Untuk mengatasi kesulitan ini, server untuk
.uk
menambahkan catatan Ansa.nic.uk
keADDITIONAL SECTION
dalam respons (respons di bawah ini dipangkas untuk singkatnya):Tanpa catatan lem tambahan ini, kami tidak akan pernah dapat menemukan server nama
nic.uk.
dan karenanya kami tidak akan pernah dapat mencari domain yang di-host di sana.Untuk kembali ke pertanyaan Anda ...
Untuk satu hal, ini memungkinkan pengeditan untuk setiap zona individu untuk didistribusikan. Jika Anda ingin memperbarui entri
www.mydomain.co.uk
, Anda hanya perlu mengedit informasimydomain.co.uk
di server nama Anda. Tidak perlu memberi tahu.co.uk
server pusat , atau.uk
server, atau server nama root. Jika hanya ada satu registry pusat yang memetakan semua level hingga ke hierarki yang harus diberitahukan tentang setiap perubahan satu entri DNS sepanjang rantai, itu akan benar-benar dibanjiri dengan lalu lintas.Sebelum 1982, ini sebenarnya bagaimana resolusi nama terjadi. Satu registry pusat diberitahu tentang semua pembaruan, dan mereka mendistribusikan file yang disebut
hosts.txt
yang berisi nama host dan alamat IP setiap mesin di internet. Versi baru dari file ini diterbitkan setiap beberapa minggu, dan setiap mesin di internet harus mengunduh salinan baru. Jauh sebelum tahun 1982, ini mulai menjadi masalah, dan karena itu DNS diciptakan untuk menyediakan sistem yang lebih terdistribusi.Untuk hal lain, ini akan menjadi Single Point of Failure - jika registri pusat tunggal turun, seluruh internet akan offline. Memiliki sistem terdistribusi berarti bahwa kegagalan hanya memengaruhi bagian kecil dari internet, bukan keseluruhannya.
(Untuk memberikan redundansi tambahan, sebenarnya ada 13 kelompok server terpisah yang melayani zona root. Setiap perubahan pada catatan domain tingkat atas harus didorong ke 13; bayangkan harus mengoordinasikan pembaruan ke-13 dari mereka untuk setiap perubahan tunggal ke nama host mana saja di dunia ...)
Karena DNS menggunakan banyak caching untuk mempercepat dan mengurangi beban di NSes. Tanpa caching, setiap kali Anda mengunjungi
google.co.uk
komputer Anda harus pergi ke jaringan untuk mencari server.uk
, lalu.co.uk
, lalu.google.co.uk
, laluwww.google.co.uk
. Jawaban-jawaban itu sebenarnya tidak banyak berubah, jadi mencari mereka setiap waktu adalah buang-buang waktu dan lalu lintas jaringan. Sebaliknya, ketika NS mengembalikan catatan ke komputer Anda, itu akan mencakup nilai TTL, yang memberitahu komputer Anda untuk men-cache hasil selama beberapa detik.Misalnya, catatan NS untuk
.uk
memiliki TTL 172800 detik - 2 hari. Google bahkan lebih konservatif - catatan NS untukgoogle.co.uk
memiliki TTL 4 hari. Layanan yang mengandalkan kemampuan untuk memperbarui dengan cepat dapat memilih TTL yang jauh lebih rendah - misalnya,telegraph.co.uk
memiliki TTL hanya 600 detik pada catatan NS mereka.Jika Anda ingin pembaruan zona Anda hampir instan, Anda dapat memilih untuk menurunkan TTL Anda sejauh yang Anda inginkan. Semakin rendah pengaturan Anda, semakin banyak lalu lintas yang akan dilihat server Anda, karena klien lebih sering menyegarkan catatan mereka. Setiap kali klien harus menghubungi server Anda untuk melakukan kueri, ini akan menyebabkan beberapa kelambatan karena lebih lambat daripada mencari jawaban pada cache lokal mereka, jadi Anda juga ingin mempertimbangkan pertukaran antara pembaruan cepat dan layanan cepat.
Ya, ini mudah jika Anda menguji secara manual dengan
dig
atau alat serupa - cukup beri tahu server mana yang harus dihubungi.Berikut ini contoh respons yang di-cache:
Bagian flag di sini tidak mengandung
aa
flag, jadi kita dapat melihat bahwa hasil ini berasal dari cache daripada langsung dari sumber yang otoritatif. Faktanya, kita dapat melihat dari97.107.133.4
mana asalnya , yang merupakan salah satu dari DNS resolver lokal Linode. Fakta bahwa jawabannya disajikan dari cache yang sangat dekat dengan saya berarti butuh 0msec bagi saya untuk mendapatkan jawaban; tetapi seperti yang akan kita lihat sebentar lagi, harga yang saya bayar untuk kecepatan itu adalah bahwa jawabannya hampir 5 menit kedaluwarsa.Untuk memintas resolver Linode dan langsung ke sumbernya, cukup pilih salah satu NSes itu dan minta dig untuk menghubungi secara langsung:
Anda dapat melihat bahwa kali ini, hasilnya disajikan langsung dari sumber - perhatikan
aa
benderanya, yang menunjukkan bahwa hasil tersebut berasal dari sumber yang berwenang. Dalam contoh saya sebelumnya, hasilnya berasal dari cache lokal saya, sehingga tidak memilikiaa
flag. Saya dapat melihat bahwa sumber otoritatif untuk domain ini menetapkan TTL 600 detik. Hasil yang saya dapatkan sebelumnya dari cache lokal memiliki TTL hanya 319 detik, yang memberitahu saya bahwa mereka telah duduk di cache selama (600-319) detik - hampir 5 menit - sebelum saya melihatnya.Meskipun TTL di sini hanya 600 detik, beberapa ISP akan berusaha untuk mengurangi lalu lintas mereka lebih jauh dengan memaksa resolver DNS mereka untuk men-cache hasil lebih lama - dalam beberapa kasus, selama 24 jam atau lebih. Itu adalah cara tradisional (dengan cara kita-tidak-tahu-jika-ini-benar-benar-perlu-tapi-mari-aman) untuk mengasumsikan bahwa setiap perubahan DNS yang Anda buat tidak akan terlihat di mana-mana di internet selama 24-48 jam.
sumber
aa
(jawaban otoritatif)flag
dalam respons. Jikaaa
ada, jawabannya datang langsung dari server nama otoritatif. (Jika tidak ada, jawabannya mungkin masih segar; beberapa server nama rekursif menghapusaa
bendera sebelum meneruskan respons ke resolver klien.).uk
server. Saat ini domain tingkat kedua yang dikelola Nominet berada di server yang sama denganuk.
, jadi permintaan untukexample.co.uk
keuk
server akan segera menerima delegasi tanpa harus terlebih dahulu melalui delegasi keco.uk
server.+trace
opsi dig akan meminta server nama yang Anda konfigurasikan untuk server nameserver root, sehingga ia dapat mulai mencari. Jika server nama lokal Andadnsmasq
(seperti pada Ubuntu), itu tidak mendukung ini, jadi Anda akan mendapatkan kesalahan. Gunakandig +trace @8.8.8.8 www.example.com
. 8.8.8.8 adalah layanan DNS publik Google. Gunakan 1.1.1.1 untuk yang setara dengan Cloudflare.a) Jumlah IP -> pemetaan nama host di dunia BENAR-BENAR besar. Sistem ini mendistribusikan tanggung jawab meng-hosting semua subdomain dan data MX dan setiap data DNS lainnya kepada pemilik nama domain. Ini hampir merupakan titik dari nama domain.
.com
dipegang oleh satu registri di mana karena.uk
dapat dipegang oleh yang lain. Demikian jugaexample.com
danotherexample.com
dapat di-host secara terpisah sehingga sumber daya dapat didistribusikan.b) Ini di-cache, yang mengurangi jumlah klik pada host DNS Anda menjadi sebagian kecil dari yang seharusnya. Secara default, catatan tinggal 2 hari di cache sebelum dibuang. Ini dapat diubah dengan mengubah TTL (waktu untuk hidup) dari catatan.
c) Anda dapat secara efektif menghentikan catatan yang di-cache dengan menetapkan TTL yang sangat singkat. Ini TIDAK disarankan kecuali Anda menggunakannya untuk DNS dinamis. Caching menjatuhkan banyak hit pada server DNS. Untuk memilih nomor yang dapat ditebak, kita berbicara tentang menjatuhkan 95% dari permintaan.
sumber
yourdomain.com
adalah subdomain dari.com
. Jika itu hanya satu "file host" besar (seperti sebelum DNS dan elf masih berjalan di tengah bumi) maka ya. Anda hanya memiliki satu file besar dan semua orang akan men-cache itu.local
) mungkin masuk akal dalam jumlah terbatas.Jika Anda menggunakan sistem * nix, unduh salinan djbdns Dan Bernstein dari http://cr.yp.to/djbdns.html dan jalankan program dnstrace untuk melihat bagaimana sistem kueri rekursif bekerja. Sangat informatif.
sumber
a) Jumlah kemungkinan nama domain terlalu besar untuk ditangani oleh satu server. Dan tidak hanya .com; ada .net, .org, .se, .info, dan sejumlah lainnya. Selain itu, Anda dapat mendelegasikan tanggung jawab untuk subdomain (yang memang efektif
com
). DNS yang kurang tersentralisasi membuat semuanya lebih mudah untuk dikelola.b) Mesin sepanjang jalan dari pengguna ke Anda memiliki cache DNS untuk meminimalkan jumlah permintaan yang dibutuhkan. Ini mencegah, misalnya, mengirim spam ke jaringan dengan permintaan alamat "serverfault.com" setiap kali Anda mendapatkan halaman dari SF. Server-server itu bahkan dapat menembolok hasil "domain tidak ada", itulah sebabnya mengapa diperlukan beberapa saat agar domain baru muncul.
c) Meskipun Anda dapat menonaktifkan cache, sering kali ada server DNS lain antara mesin Anda dan server DNS domain.com Anda. Server DNS ISP Anda, misalnya, akan mencoba melakukan cache sebanyak mungkin. Satu-satunya catatan yang diperbarui secara relatif cepat di internet adalah catatan dengan TTL pendek (yang pada dasarnya mengatakan "Saya hanya berlaku selama beberapa detik; setelah itu, tanyakan lagi pada saya untuk info terkini"). Alasan TTL sangat tinggi, adalah agar server yang bertanggung jawab atas domain dapat menurunkan sebagian pekerjaan ke server lain. Jika Anda memiliki semua jaring yang menghubungi satu atau dua server DNS rinky-dink Anda untuk setiap klik ke situs web Anda, mereka akan sangat tidak dapat digunakan ketika seseorang melihat situs Anda di /., Digg, dll.
sumber