Bagaimana cara menemukan server nama otoritatif untuk nama domain?

317

Bagaimana saya bisa menemukan asal-usul catatan DNS yang bertentangan?

Binarytales
sumber

Jawaban:

413

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.

Antti Kissaniemi
sumber
158
nslookup -type = soa stackoverflow.com
Ben Amada
6
Namun di bawah jendela, saya tidak dapat melihat respons "Jawaban resmi". Saya memiliki Windows 8 dan Ubuntu 12 berdampingan dan kemudian perintah yang sama untuk domain yang sama berfungsi dengan baik di Ubuntu tetapi tidak di Windows.
Mario Awad
1
berhati-hatilah karena acara ini tidak selalu menunjukkan perubahan terbaru pada konfigurasi DNS, namun digsepertinya menggunakan untuk saya (lihat jawaban di bawah)
rogerdpack
6
Apa artinya jika tidak ada jawaban otoritatif tetapi jawaban non-otoritatif baik-baik saja?
Overmind
6
Jika Anda menjalankan nslookup -type=soa stackoverflow.comdi linux hari ini (2019-Februari), bagian otoritatif kosong.
Pengguna sederhana
174

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_soaalat 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.

bortzmeyer
sumber
5
menggali + pendek tidak selalu memberikan jawaban yang saya harapkan. Misalnya, situs yang didefinisikan sebagai www.pressero.com, yang merupakan CNAME untuk situs lain - gali + SOA singkat hanya mengembalikan target CNAME.
Ross Presser
Bagaimana Anda membuat NS otoritatif?
Overmind
1
@Lebih dari itu Anda tidak membuat NS "berwibawa". Jika server nama dikonfigurasikan sebagai otoritatif untuk beberapa domain, itu berarti server lokal memiliki file zona (biasanya file teks datar, tetapi juga dapat dilakukan secara berbeda) untuk domain ini dan merespons permintaan untuk domain tersebut. Agar bermanfaat, mereka harus terdaftar sebagai catatan NS di zona induk untuk setiap domain yang mereka otorisasi, jika tidak, tidak ada yang akan meminta mereka secara default.
Patrick Mevzek
@RossPresser jawabannya berbicara tentang catatan NS / SOA dan saya ragu Anda melakukannya untuk www.pressero.com, Anda mungkin berpikir tentang catatan A (yang merupakan tipe catatan default digjika Anda tidak menentukannya). Tetapi jika perlu, tambahkan saja tail -1untuk mengambil hasil akhir.
Patrick Mevzek
@ PatrickMevzek Seperti yang saya nyatakan dalam komentar saya, saya menggunakan dig +short SOA www.pressero.com. Ini hanya mengembalikan target CNAME - bukan catatan SOA untuk pressero.comdomain, yang saya harapkan. tail -1tidak membantu masalah; dig +short SOAhanya memancarkan satu baris.
Ross Presser
40

Pada * nix:

$ dig -t ns <domain name>
aryeh
sumber
3
Dia meminta nama server, bukan alamat IPv4. Jadi jenis (t) harus NS, bukan A.
bortzmeyer
1
mengapa tidak mengetik SOA @bortzmeyer?
Randy L
Uh, karena itu mengembalikan SOA daripada hasil NS?
tripleee
17

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.
David Precious
sumber
@cacho Itu benar; Saya bisa menambahkan itu, jika saya mendapat kesempatan.
David Precious
1
Itu rusak, ini menunjukkan "502 Bad Gateway nginx / 1.14.2"
Marco Demaio
8

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.

Alex
sumber
Catatan jika Anda menjalankan server NS lokal seperti dnsmasq + trace tidak akan mengembalikan apa pun ...
Daniel Sokolowski
Perintah ini menyediakan 53 baris, 3652 byte output, banyak di antaranya adalah nilai acak. Bagaimana seharusnya seseorang mengartikan output untuk menentukan apa nama server otoritatif itu?
theferrit32
Saya membacanya dari bawah ke atas. Catatan SOA adalah apa yang Anda cari. Anda dapat memahami bahwa SOA memiliki lebih sedikit data.
Alex
6

Istilah Anda harus googling adalah "otoritatif," bukan "definitif".

Pada Linux atau Mac Anda dapat menggunakan perintah whois, dig, host, nslookupatau beberapa orang lain. nslookupmungkin 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.


sumber
6
Perintah-perintah ini tidak setara. Tidak ada yang mengatakan bahwa informasi yang diberikan oleh whois adalah yang terbaru. Seringkali, itu bukan karena orang memperbarui catatan NS di file zona tanpa memberitahukan registri atau pendaftar.
bortzmeyer
Saya tidak pernah mengatakan;) Anda dapat mengubah catatan NS di zona Anda semau Anda, selama zona induk tidak diperbarui, tidak ada yang akan berubah. Dan pembaruan zona induk biasanya berjalan seiring dengan pembaruan data whois (setidaknya dengan penyedia saya).
5

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/[email protected]

Nitin Agarwal
sumber
2

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.

Chris de Vries
sumber
2
Tidak ada yang mengatakan bahwa informasi yang diberikan oleh whois adalah yang terbaru. Seringkali, itu bukan karena orang memperbarui catatan NS di file zona tanpa memberitahukan registri atau pendaftar.
bortzmeyer
Meskipun bukan jawaban langsung untuk pertanyaan, "whois" berguna karena memberitahu Anda siapa yang seharusnya menjadi server nama untuk suatu tempat (bahkan jika karena alasan apa pun mereka saat ini tidak).
Seseorang
1

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?


sumber
2
Sederhana. Anggap domainnya adalah example.org. Pertama, Anda perlu menemukan server nama ".org" dengan 'dig + short NS org.'. Kemudian Anda meminta salah satu dari mereka (siapa pun, mereka semua berwibawa) Mari kita pilih d0.org.afilias-nst.org. Anda bertanya dengan 'dig @ d0.org.afilias-nst.org NS example.org.'.
bortzmeyer
Fakta bahwa resolver kembali, secara default, server nama yang terdaftar oleh domain itu sendiri adalah hal yang baik. Itu informasi yang otoritatif. Delegasi di zona induk TIDAK berwibawa.
bortzmeyer
Dan penunjuk ke whois adalah herring merah. Informasi server nama whois sering basi. Sumber daya otoritatif adalah DNS.
tripleee
1
Whois sepenuhnya sewenang-wenang. Nilai yang Anda lihat di daftar whois tidak memiliki ikatan teknis dengan DNS. Itu sering ketinggalan jaman atau salah benar. Saya akan mengatakan lebih jauh bahwa data whois hampir tidak pernah dipercaya. Ada pendaftar 'tipis' dan 'tebal'. Dua pendaftar tebal yang terkenal adalah pendaftar .com dan .net. Registri ini berisi semua data DNS dan melayani respons whois yang mungkin dapat dipercaya. Hampir semua pendaftar lain adalah 'barang' dan menjalankan pendaftar whois mereka sendiri. Data ini sering salah.
Mark
1

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.

Dennis
sumber
0

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
Kyle Cronin
sumber
0

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.

  1. Periksa catatan NS

host -t NS analyticsdcs.ccs.mcafee.com.

  1. Jika tidak ada NS yang ditemukan, periksa catatan SOA

host -t SOA analyticsdcs.ccs.mcafee.com.

  1. Jika bukan NS atau SOA, lakukan rekursif penuh dan ambil NS terakhir yang dikembalikan

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. Uji bahwa server nama yang dikembalikan berfungsi

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

dannyw
sumber