Чи призводять записи CNAME до другого пошуку DNS?


19

Скажімо, у нас є субдомен під назвою www.foo.com, який має запис CNAME, що вказує на foo.bar.cc. Foo.bar.cc, в свою чергу, має запис A, що вказує на IP-адресу 1.2.3.4.

Тепер, якщо я буду шукати DNS на www.foo.com, я отримаю відповідь приблизно так:

www.foo.com. IN CNAME foo.bar.cc.
foo.bar.cc. IN A 1.2.3.4

Моє запитання, на якому етапі вирішується foo.bar.cc? Це робиться рекурсивним сервером DNS до того, як відповідь буде відправлена ​​назад клієнту? Або клієнт надсилає другий запит на DNS-сервер, на цей раз для foo.bar.cc? Або це залежить від того, чи має сервер DNS вже кешований запис для foo.bar.cc?

Я запитую, оскільки один конкретний рекурсивний DNS-сервер повертає лише перший рядок, тобто він не вирішує CNAME. Однак через 20 секунд наступні запити на той самий хост включатимуть обидва рядки.

Відповіді:


16

Дві записи повертаються разом в одному запиті. Ви можете дізнатися це за допомогою наступної команди

dig +trace www.foo.com

Наприклад, мій домен photoblog.com має ім'я для www, тому останні два запити від сервера імен фотоблогу для мене виглядають як

photoblog.com.      172800  IN  NS  ns1.photoblog.com.
photoblog.com.      172800  IN  NS  ns2.photoblog.com.
;; Received 103 bytes from 192.43.172.30#53(i.gtld-servers.net) in 196 ms

www.photoblog.com.  600 IN  CNAME   photoblog.com.
photoblog.com.      600 IN  A   74.52.128.18
photoblog.com.      60  IN  NS  ns2.photoblog.com.
photoblog.com.      60  IN  NS  ns1.photoblog.com.
;; Received 133 bytes from 74.52.128.18#53(ns2.photoblog.com) in 59 ms

Як ви бачите, запит ns1 / ns2 запитує, що таке ip для www.photoblog.com, і він добре повертається, це ім'я до photoblog.com, а ось ip для цього запису A.


У ОП, у вашому прикладі, коли він повернув лише CNAME назад, DNS-сервер, ймовірно, мав труднощі слідувати CNAME і таким чином дав клієнтові будь-яку інформацію, яку він мав. Врешті-решт, він закінчив слідувати за CNAME і тому зміг дати повну відповідь.
Девід Шварц

Так - якщо DNS-сервер має більше інформації, він поверне його у ADDITIONALрозділі відповіді. Випадки, коли він не повертається, означають, що рекурсор не мав його у своєму кеші - можливо, тому що CNAMEта Aзапис, який він вказує, має різні авторитетні сервери (тому початковий запит рекурсора не отримав CNAMEдодаткового додаткового Aвідповіді, просто CNAME).
Шейн Медден

@Mike: так який висновок? Чи призводить запис CNAME до другого пошуку DNS чи ні? Якщо ні, то чому багато хто пропонує збільшити запис CNAME TTL?
Марко Демайо

10
доки запис A знаходиться на тому ж авторитетному сервері, що і CNAME, це той самий пошук
Майк,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.