Bagaimana saya bisa menemukan asal-usul catatan DNS yang bertentangan?
Bagaimana saya bisa menemukan asal-usul catatan DNS yang bertentangan?
Jawaban:
Anda akan menginginkan catatan SOA (Start of Authority) untuk nama domain yang diberikan, dan ini adalah bagaimana Anda menyelesaikannya menggunakan alat baris perintah nslookup yang tersedia secara universal :
command line> nslookup
> set querytype=soa
> stackoverflow.com
Server: 217.30.180.230
Address: 217.30.180.230#53
Non-authoritative answer:
stackoverflow.com
origin = ns51.domaincontrol.com # ("primary name server" on Windows)
mail addr = dns.jomax.net # ("responsible mail addr" on Windows)
serial = 2008041300
refresh = 28800
retry = 7200
expire = 604800
minimum = 86400
Authoritative answers can be found from:
stackoverflow.com nameserver = ns52.domaincontrol.com.
stackoverflow.com nameserver = ns51.domaincontrol.com.
Baris asal (atau server nama primer pada Windows) memberi tahu Anda bahwa ns51.domaincontrol adalah server nama utama untuk stackoverflow.com .
Pada akhir output, semua server otoritatif, termasuk server cadangan untuk domain yang diberikan, terdaftar.
dig
sepertinya menggunakan untuk saya (lihat jawaban di bawah)
nslookup -type=soa stackoverflow.com
di linux hari ini (2019-Februari), bagian otoritatif kosong.
Anda menggunakan bentuk tunggal dalam pertanyaan Anda tetapi biasanya ada beberapa server nama yang resmi, RFC 1034 merekomendasikan setidaknya dua.
Kecuali jika Anda berarti "server nama primer" dan bukan "server nama otoritatif". Server nama sekunder adalah otoritatif.
Untuk mengetahui server nama domain di Unix:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
Untuk mengetahui server yang terdaftar sebagai primer (gagasan "primer" cukup kabur saat ini dan biasanya tidak memiliki jawaban yang baik):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
Untuk memeriksa perbedaan antara server nama, preferensi saya mengarah ke check_soa
alat lama , yang dijelaskan dalam buku "DNS & BIND" Liu & Albitz (editor O'Reilly). Kode sumber tersedia di http://examples.oreilly.com/dns5/
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
Di sini, dua server nama otoritatif memiliki nomor seri yang sama. Baik.
www.pressero.com
, yang merupakan CNAME untuk situs lain - gali + SOA singkat hanya mengembalikan target CNAME.
www.pressero.com
, Anda mungkin berpikir tentang catatan A (yang merupakan tipe catatan default dig
jika Anda tidak menentukannya). Tetapi jika perlu, tambahkan saja tail -1
untuk mengambil hasil akhir.
dig +short SOA www.pressero.com
. Ini hanya mengembalikan target CNAME - bukan catatan SOA untuk pressero.com
domain, yang saya harapkan. tail -1
tidak membantu masalah; dig +short SOA
hanya memancarkan satu baris.
Pada * nix:
$ dig -t ns <domain name>
Saya memiliki alat propagasi DNS yang dirancang untuk menjawab pertanyaan-pertanyaan semacam ini.
Sumber dirilis di bawah AGPLv3.
(Ya, antarmuka agak mendasar saat ini :))
Anda juga bisa mengetahui server nama untuk domain dengan perintah "host":
[davidp @ supernova: ~] $ host -t ns stackoverflow.com stackoverflow.com name server ns51.domaincontrol.com. stackoverflow.com name server ns52.domaincontrol.com.
Saya menemukan bahwa cara terbaik untuk selalu menambahkan opsi + trace:
dig SOA +trace stackoverflow.com
Ini juga berfungsi dengan CNAME rekursif yang dihosting di penyedia berbeda. + jejak jejak menyiratkan + norecurse sehingga hasilnya hanya untuk domain yang Anda tentukan.
Istilah Anda harus googling adalah "otoritatif," bukan "definitif".
Pada Linux atau Mac Anda dapat menggunakan perintah whois
, dig
, host
, nslookup
atau beberapa orang lain. nslookup
mungkin juga berfungsi di Windows.
Sebuah contoh:
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Adapun kredit tambahan: Ya, itu mungkin.
aryeh jelas salah, karena sarannya biasanya hanya akan memberi Anda alamat IP untuk nama host. Jika Anda menggunakan dig
, Anda harus mencari catatan NS, seperti:
dig ns stackoverflow.com
Perlu diingat bahwa ini mungkin meminta server DNS lokal Anda dan karenanya dapat memberikan jawaban yang salah atau kedaluwarsa yang ada di cache.
Kami telah membangun alat pencarian dns yang memberi Anda nameserver otoritatif domain dan catatan dns umum dalam satu permintaan.
Contoh: https://www.misk.com/tools/#dns/stackoverflow.com
Alat kami menemukan nameserver otoritatif dengan melakukan pencarian real-time (tidak terputus) dns di nameserver root dan kemudian mengikuti referensi nameserver sampai kami mencapai nameserver otoritatif. Ini adalah logika yang sama yang digunakan resolver dns untuk mendapatkan jawaban otoritatif. Nameserver acak otoritatif dipilih (dan diidentifikasi) pada setiap permintaan yang memungkinkan Anda untuk menemukan catatan dns yang bertentangan dengan melakukan beberapa permintaan.
Anda juga dapat melihat jalur delegasi server nama dengan mengklik "Server Nama Resmi" di bagian bawah hasil pencarian dns dari contoh di atas.
Contoh: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net
Anda dapat menggunakan layanan whois. Pada sistem operasi mirip UNIX Anda akan menjalankan perintah berikut. Atau Anda dapat melakukannya di web di http://www.internic.net/whois.html .
whois stackoverflow.com
Anda akan mendapatkan respons berikut.
... teks dihapus di sini ...
Server domain dalam urutan yang tercantum: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
Anda dapat menggunakan nslookup atau menggali untuk menemukan informasi lebih lanjut tentang catatan untuk domain yang diberikan. Ini mungkin membantu Anda menyelesaikan konflik yang telah Anda uraikan.
Sayangnya, sebagian besar alat ini hanya mengembalikan catatan NS seperti yang disediakan oleh server nama sebenarnya. Agar lebih akurat dalam menentukan server nama mana yang sebenarnya bertanggung jawab atas suatu domain, Anda harus menggunakan "whois" dan memeriksa domain yang terdaftar di sana ATAU menggunakan "gali [domain] NS @ [root name server]" dan jalankan secara rekursif sampai Anda mendapatkan daftar server nama ...
Saya berharap ada baris perintah sederhana yang dapat Anda jalankan untuk mendapatkan hasil yang andal dan dalam format yang konsisten, bukan hanya hasil yang diberikan dari server nama itu sendiri. Tujuan dari ini bagi saya adalah untuk dapat menanyakan sekitar 330 nama domain yang saya kelola sehingga saya dapat menentukan dengan tepat server nama yang ditunjuk oleh setiap domain (sesuai pengaturan pendaftar mereka).
Adakah yang tahu perintah menggunakan "dig" atau "host" atau sesuatu yang lain di * nix?
Catatan SOA hadir di semua server lebih jauh ke atas hierarki, di mana pemilik domain tidak memiliki kontrol, dan mereka semua pada dasarnya menunjuk ke satu server nama otoritatif di bawah kendali pemilik domain.
Catatan SOA pada server otoritatif itu sendiri, di sisi lain, tidak sepenuhnya diperlukan untuk menyelesaikan domain itu, dan dapat berisi info palsu (atau server tersembunyi, atau server lain yang dibatasi) dan tidak boleh diandalkan untuk menentukan server nama otoritatif untuk domain tertentu.
Anda perlu menanyakan server yang otoritatif untuk domain tingkat atas untuk mendapatkan informasi SOA yang andal untuk domain anak tertentu.
(Informasi tentang server mana yang otoritatif untuk TLD yang dapat di-query dari server nama root).
Ketika Anda memiliki informasi yang dapat dipercaya tentang SOA dari server otoritatif TLD, Anda kemudian dapat meminta server nama primer itu sendiri berwibawa (yang ada di catatan SOA pada server nama gTLD!) Untuk catatan NS lainnya, dan kemudian melanjutkan dengan memeriksa semua server nama yang Anda dapatkan dari meminta catatan NS, untuk melihat apakah ada inkonsistensi untuk catatan tertentu lainnya, di salah satu server tersebut.
Ini semua bekerja jauh lebih baik / dapat diandalkan dengan linux dan menggali daripada dengan nslookup / windows.
Cara mudah adalah dengan menggunakan alat domain online. Favorit saya adalah Alat Domain (sebelumnya whois.sc). Saya tidak yakin apakah mereka dapat menyelesaikan catatan DNS yang saling bertentangan. Sebagai contoh, server DNS untuk stackoverflow.com adalah
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Saya menemukan bahwa untuk beberapa domain, jawaban di atas tidak berfungsi. Cara tercepat yang saya temukan adalah pertama-tama memeriksa catatan NS. Jika itu tidak ada, periksa catatan SOA. Jika itu tidak ada, selesaikan secara berulang nama menggunakan dig dan ambil kembali catatan NS terakhir. Contoh yang cocok untuk ini adalahanalyticsdcs.ccs.mcafee.com.
host -t NS analyticsdcs.ccs.mcafee.com.
host -t SOA analyticsdcs.ccs.mcafee.com.
dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1
host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.