Як насправді копати + слід?


19

Переглядаючи сторінку чоловіка для копання, я отримую таке:

+[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.

То як це працює на практиці? Яка була б еквівалентна серія digкоманд (без + сліду), яка була б функціонально еквівалентною?

Відповіді:


37

dig +trace працює, роблячи вигляд, що це сервер імен, і працює на дерево простору імен, використовуючи ітеративні запити, починаючи з кореня дерева, дотримуючись рефералів по цьому шляху.

Перше, що потрібно зробити - це запитати звичайний системний DNS-сервер для записів NS для "."

Після того, як він отримає відповідь, який буде поточним списком серверів імен кореневих імен, він вибере його та запитає запис A для цього імені, якщо він не отримав його в розділі додаткових записів вперше, щоб його отримати IP-адресу, на яку слід відправити наступний запит. Скажімо, він вибирає f.root-servers.net, IP-адреса якого 192.5.5.241.

На даний момент давайте скористаємось dig +trace www.google.co.uk.нашою командою з доменним іменем, для якого ми хочемо простежити шлях до роздільної здатності.

Наступним запитом за лаштунками буде такий:

$ 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

Нічого так, тепер ми знаємо, що існують сервери імен, ukі це єдине, про що знає кореневий сервер. Це направлення , оскільки ми не просили рекурсії ( +norecurseвимикає).

Чудово ми промиваємо і повторюємо. Цього разу ми вибираємо одного з ukсерверів імен і задаємо йому те саме питання .

$ 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

Дивовижно, зараз ми з'ясували, що ukсервер імен вищого рівня знає, що є зона, яка називається, google.co.ukі каже нам піти задати цим серверам імен наше питання. Це ще один реферал.

Промийте, повторіть.

Однак цього разу ми не отримали записів A у розділі додаткових записів відповіді, тому ми вибираємо один, скажімо, ns2.google.com, і нам потрібно шукати його адресу. Ми перезапускаємо запит (знову в корені) і переслідуємо дерево, щоб знайти IP-адресу для ns2.google.com. Я пропущу цю частину для стислості, але ми дізнаємось, що IP для неї - 216.239.34.10.

Отже, наш наступний запит:

$ 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

І ми закінчили! (нарешті) Як ми знаємо, що ми зробили? Ми отримали відповідь на наш запит, який представляв собою записи A для www.google.co.uk. Ви також можете сказати, оскільки це вже не реферал, aaбіт встановлюється в останній відповіді, тобто це авторитетна відповідь на ваш запит.

Отже, це відбувається кожен крок на шляху, коли ви користуєтесь dig +trace.

Зауважте, що якщо у вас є DNSSEC-версія версії dig і ви додасте +dnssecдо команди, ви можете побачити ще багато записів. Те, що ці додаткові записи, залишається читачем як вправа ... але входить в dig +sigchaseроботу.


Одне сумнів: у запиті на @ 192.5.5.241 відповіді в ДОПОМОГАЙНОМУ РОЗДІЛУ, чи так називаються записи клею ?
Хосе Томаш Точіно

Так, оскільки назва записів A існує в зоні або під нею, про яку вказуються записи NS в розділі Орган, тому вони необхідні для продовження процесу вирішення.
мілі

1

Скажімо, ви шукали

www.domain.co.uk

DNS - це герархія, починаючи з кореневих серверів, які знають, які сервери є авторитетними для TLD (остання частина доменного імені). Так рівносильний до

dig subdomain.domain.co.uk

Крок за кроком буде:

dig SOA @g.root-servers.net uk

(тобто запитайте один з кореневих серверів, щоб знайти, хто є авторитетним для .uk)

На це реагує низка авторитетних серверів Великобританії, тому ми запитуємо їх, хто має co.uk

dig SOA @ns6.nic.uk co.uk

І нам кажуть, що SOA (повноваження) є на тих же серверах

Тож давайте запитувати ns1.nic.uk, щоб побачити, хто має domain.co.uk

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

Це повертається і каже, що повноваження для домену є за адресою dns.dns1.de (плюс резервні копії);

Тож тепер ми можемо попросити запис 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

Як я звертаюся до теми делегації? Скажімо, повноваження для domain.co.uk - dns.dns1.de, але members.domain.co.uk було делеговано на dns.dns2.com, і я шукаю joe.members.domain.co.uk. Звідки я можу знати, коли "безпечно" відмовитися від веселого перегляду SOA та запитати інші записи?
Doktor J

Фактичний процес запитує Aзапис весь час. Немає чарівного переходу на SOAзапити. (Цього не могло бути, оскільки вирішальний проксі-сервер не знав, коли потрібно переключитися назад.) У питанні також немає ніякої магічної модифікації доменного імені. Це www.domain.co.uk.все до кінця. Це важливо пам’ятати, оскільки це означає, що будь-який із запитуваних серверів вмісту може дати повну відповідь .
JdeBP

@DoktorJ Так, це моя помилка JdeBP має рацію. Я намагався заробити точку з SOA, але це заплуталося у відповіді. Інша відповідь точніша.
Павло

@Paul дякую за наступні дії; Я відповів на іншу відповідь як на правильну відповідь, щоб допомогти іншим, хто може опинитися тут (не ображати вас!) :)
Doktor J

@doktorj Зовсім не так, саме так і має бути :)
Павло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.