Bagaimana cara dig + trace bekerja?

19

Ketika saya melihat halaman manual untuk menggali, saya mendapatkan yang berikut:

+[no]trace
  Toggle tracing of the delegation path from the root name servers for the name
  being looked up. Tracing is disabled by default. When tracing is enabled, dig
  makes iterative queries to resolve the name being looked up. It will follow
  referrals from the root servers, showing the answer from each server that was
  used to resolve the lookup.

Jadi bagaimana cara kerjanya, dalam praktiknya? Apa yang akan menjadi rangkaian digperintah yang setara (tanpa + jejak) yang secara fungsional setara?

Doktor J
sumber

Jawaban:

37

dig +trace bekerja dengan berpura-pura itu adalah server nama dan bekerja di pohon namespace menggunakan kueri iteratif mulai dari akar pohon, mengikuti rujukan di sepanjang jalan.

Hal pertama yang dilakukannya adalah meminta catatan DNS sistem server normal untuk "."

Setelah mendapat respons, yang akan menjadi daftar server nama root saat ini, itu akan memilih satu dan kemudian meminta catatan A untuk nama itu jika tidak mendapatkannya di bagian catatan tambahan pertama kali jadi itu punya alamat IP untuk mengirim permintaan berikutnya. Katakanlah mengambil f.root-servers.net yang alamat IP-nya adalah 192.5.5.241.

Pada titik ini, mari kita gunakan dig +trace www.google.co.uk.sebagai perintah kami dengan nama domain yang ingin kita lacak jalur resolusi.

Kueri di belakang layar berikutnya adalah ini:

$ dig +norecurse @192.5.5.241 www.google.co.uk

   ; <<>> DiG 9.9.4 <<>> +norecurse @192.5.5.241 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8962
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 11, ADDITIONAL: 15

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.uk.              IN      A

;; AUTHORITY SECTION:
uk.                     172800  IN      NS      ns5.nic.uk.
uk.                     172800  IN      NS      ns6.nic.uk.
uk.                     172800  IN      NS      ns4.nic.uk.
uk.                     172800  IN      NS      nsc.nic.uk.
uk.                     172800  IN      NS      ns2.nic.uk.
uk.                     172800  IN      NS      ns3.nic.uk.
uk.                     172800  IN      NS      nsd.nic.uk.
uk.                     172800  IN      NS      nsa.nic.uk.
uk.                     172800  IN      NS      ns7.nic.uk.
uk.                     172800  IN      NS      nsb.nic.uk.
uk.                     172800  IN      NS      ns1.nic.uk.

;; ADDITIONAL SECTION:
ns1.nic.uk.             172800  IN      A       195.66.240.130
ns2.nic.uk.             172800  IN      A       217.79.164.131
ns3.nic.uk.             172800  IN      A       213.219.13.131
ns4.nic.uk.             172800  IN      A       194.83.244.131
ns5.nic.uk.             172800  IN      A       213.246.167.131
ns6.nic.uk.             172800  IN      A       213.248.254.130
ns7.nic.uk.             172800  IN      A       212.121.40.130
nsa.nic.uk.             172800  IN      A       156.154.100.3
nsb.nic.uk.             172800  IN      A       156.154.101.3
nsc.nic.uk.             172800  IN      A       156.154.102.3
nsd.nic.uk.             172800  IN      A       156.154.103.3
ns1.nic.uk.             172800  IN      AAAA    2a01:40:1001:35::2
ns4.nic.uk.             172800  IN      AAAA    2001:630:181:35::83
nsa.nic.uk.             172800  IN      AAAA    2001:502:ad09::3

;; Query time: 45 msec
;; SERVER: 192.5.5.241#53(192.5.5.241)
;; WHEN: Tue Feb 11 19:19:14 MST 2014
;; MSG SIZE  rcvd: 507

Wow, jadi sekarang kita tahu bahwa ada server nama untuk ukdan itulah satu-satunya hal yang diketahui oleh server root. Ini adalah rujukan , karena kami tidak meminta rekursi ( +norecursemematikannya).

Bagus, kita bilas dan ulangi. Kali ini kami memilih salah satu ukserver nama dan mengajukan pertanyaan yang sama .

$ dig +norecurse @195.66.240.130 www.google.co.uk

; <<>> DiG 9.9.4 <<>> +norecurse @195.66.240.130 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 618
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.uk.              IN      A

;; AUTHORITY SECTION:
google.co.uk.           172800  IN      NS      ns1.google.com.
google.co.uk.           172800  IN      NS      ns3.google.com.
google.co.uk.           172800  IN      NS      ns2.google.com.
google.co.uk.           172800  IN      NS      ns4.google.com.

;; Query time: 354 msec
;; SERVER: 195.66.240.130#53(195.66.240.130)
;; WHEN: Tue Feb 11 19:22:47 MST 2014
;; MSG SIZE  rcvd: 127

Luar biasa, sekarang kami telah menemukan bahwa ukserver nama tingkat atas tahu ada zona yang dipanggil google.co.ukdan memberitahu kami untuk bertanya pada server nama itu dengan pertanyaan kami. Ini adalah rujukan lain.

Bilas, ulangi.

Namun, kali ini, kami tidak mendapatkan catatan A di bagian catatan tambahan dari respons, jadi kami memilih satu, katakanlah ns2.google.com, dan kami harus mencari alamatnya. Kami memulai kembali kueri (di root lagi) dan mengejar pohon untuk menemukan alamat IP untuk ns2.google.com. Saya akan melewati bagian itu untuk singkatnya, tetapi kita belajar bahwa IP untuk itu adalah 216.239.34.10.

Jadi pertanyaan kami selanjutnya adalah:

$ dig +norecurse @216.239.34.10 www.google.co.uk

; <<>> DiG 9.9.4 <<>> +norecurse @216.239.34.10 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33404
;; flags: qr aa; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.co.uk.              IN      A

;; ANSWER SECTION:
www.google.co.uk.       300     IN      A       74.125.225.216
www.google.co.uk.       300     IN      A       74.125.225.223
www.google.co.uk.       300     IN      A       74.125.225.215

;; Query time: 207 msec
;; SERVER: 216.239.34.10#53(216.239.34.10)
;; WHEN: Tue Feb 11 19:26:43 MST 2014
;; MSG SIZE  rcvd: 82

Dan kita sudah selesai! (akhirnya) Bagaimana kita tahu kita sudah selesai? Kami mendapat jawaban untuk pertanyaan kami, yang merupakan catatan A untuk www.google.co.uk. Anda juga dapat mengetahui karena ini bukan rujukan lagi, aabit tersebut diatur dalam respons terakhir yang berarti ini adalah jawaban resmi untuk permintaan Anda.

Jadi itulah yang terjadi setiap langkah di sepanjang jalan saat Anda menggunakannya dig +trace.

Perhatikan bahwa jika Anda memiliki versi menggali DNSSEC-sadar dan Anda menambah +dnssecperintah, Anda mungkin melihat banyak catatan. Apa catatan tambahan itu dibiarkan sebagai latihan untuk pembaca ... tapi masuk ke cara dig +sigchasekerjanya.

mili
sumber
Satu keraguan: dalam permintaan ke @ 192.5.5.241, jawaban dalam BAGIAN TAMBAHAN, apakah itu yang disebut catatan lem ?
José Tomás Tocino
Ya, karena nama catatan A ada di dalam atau di bawah zona yang dirujuk catatan NS di bagian Otoritas, sehingga mereka diperlukan untuk melanjutkan proses resolusi.
mili
1

Katakanlah Anda melihat ke atas

www.domain.co.uk

DNS adalah hirarki, dimulai dengan root server yang tahu server mana yang otoritatif untuk TLD (bagian terakhir dari nama domain). Jadi setara dengan

dig subdomain.domain.co.uk

Langkah demi langkah akan menjadi:

dig SOA @g.root-servers.net uk

(yaitu, kueri salah satu server root untuk menemukan siapa yang berwenang untuk .uk)

Ini merespons dengan serangkaian server uk yang resmi, jadi kami bertanya kepada mereka yang memiliki co.uk

dig SOA @ns6.nic.uk co.uk

Dan kita diberitahu bahwa SOA (otoritas) berada di server yang sama

Jadi mari kita query ns1.nic.uk untuk melihat siapa yang memiliki domain.co.uk

dig SOA @ns1.nic.uk domain.co.uk

Ini muncul kembali dan mengatakan otoritas untuk domain ada di dns.dns1.de (plus cadangan);

Jadi sekarang kita bisa meminta catatan A:

dig  A @dns.dns2.de www.domain.co.uk

;; QUESTION SECTION:
;www.domain.co.uk.              IN      A

;; ANSWER SECTION:
www.domain.co.uk.       86400   IN      CNAME   domain.co.uk.
domain.co.uk.           86400   IN      A       95.130.17.36
Paul
sumber
Bagaimana saya membahas topik delegasi? Katakanlah otoritas untuk domain.co.uk adalah dns.dns1.de, tetapi members.domain.co.uk telah didelegasikan ke dns.dns2.com dan saya mencari joe.members.domain.co.uk. Bagaimana saya tahu kapan "aman" untuk keluar dari putaran koma SOA dan meminta catatan lain?
Doktor J
Proses yang sebenarnya meminta Acatatan selama ini. Tidak ada keajaiban beralih ke SOApermintaan. (Tidak mungkin ada, karena proxy penyelesaian tidak akan tahu kapan harus beralih kembali.) Tidak ada modifikasi ajaib dari nama domain dalam pertanyaan, juga. Ini www.domain.co.uk.semua jalan melalui. Ini penting untuk diingat, karena itu berarti bahwa salah satu server konten yang ditanyakan dapat memberikan jawaban lengkap .
JdeBP
@DoktorJ Yap, ini kesalahan saya JdeBP benar. Saya mencoba untuk memahami suatu titik dengan SOA, tetapi terjerat dalam jawaban. Jawaban lainnya lebih akurat.
Paul
@ Paul, terima kasih atas tindak lanjutnya; Saya telah menandai jawaban lain sebagai jawaban yang tepat untuk membantu orang lain yang mungkin berakhir di sini (jangan tersinggung!) :)
Doktor J
@doktorj Tidak sama sekali, itu memang sudah seharusnya :)
Paul