Назад | Перейти на главную страницу

Кэширует ли клиент IP-адрес DNS-запроса CNAME или другого домена?

Я собираюсь использовать два разных хоста DNS, и мне любопытно, как клиентская система будет кэшировать запись CNAME. Причина, по которой я иду по этому маршруту, заключается в том, что основной домен, который я хотел бы использовать, уже размещен в одной службе DNS, но приложение размещено в другой службе, которая имеет собственную обработку DNS, интегрированную со службами.

В частности, я хочу понять, если friendly.abc.com это запись CNAME, указывающая на long-ugly-url.hosted-service.com который сам размещен (DNS и приложение) в другой службе с IP-адресом 1.2.3.4, будут ли клиенты, обращающиеся к friendly.abc.com кэшировать long-ugly-url.hosted-service.com или 1.2.3.4? Причина, по которой я спрашиваю, заключается в том, что если это первое, то long-ugly-url.hosted-service.com Запись может иметь короткий TTL, и ее можно быстро изменить, пока friendly.abc.com можно установить более высокий TTL, но все же изменения быстро «распространяются». Если это последнее, то у обоих должны быть короткие TTL, чтобы ответственные клиенты могли быстро увидеть изменения.

Я бы сказал и то, и другое. Реализации могут различаться, но, учитывая, что весь смысл кеширования не в том, чтобы получить что-то, что вы уже сделали несколько минут назад, для клиента кажется нелогичным получать CNAME и запись A и отбрасывать одну или другую. Я использую термин `` клиент '' нечетко, поскольку он у вас есть в вашем вопросе, но реализация может варьироваться, говорим ли мы о преобразователе DNS (например, dig, nslookup), кешировании DNS приложений (например, браузерах), кешировании DNS сервер (например, BIND) и т. д. Если вы хотите быть уверенным, вы должны либо полагаться на документацию конкретного клиента, либо проводить собственное тестирование.

В моем случае я тестировал его на BIND9. Я использовал простую технику тестирования: сначала я сбросил все записи DNS в кеше, а затем сделал DNS-запрос и, наконец, сбросил кеш DNS для исследования. Как вы можете видеть ниже, записи CNAME и A были кэшированы. TTL не соответствует фактическому TTL, хранящемуся в файле авторитетной зоны, потому что я получаю свой DNS через пересылку, а это означает, что записи DNS, которые я получаю, также могут поступать из кеша удаленных DNS-серверов.


ns1 bind # rndc flush && dig www.bbc.co.uk +nodnssec && rndc dumpdb
;; ANSWER SECTION:
www.bbc.co.uk.      238 IN  CNAME   www.bbc.net.uk.
www.bbc.net.uk.     166 IN  A   212.58.246.55
www.bbc.net.uk.     166 IN  A   212.58.246.54

ns1 bind # grep www.bbc.co.uk named_dump.db 
www.bbc.co.uk.      234 CNAME   www.bbc.net.uk.
ns1 bind # grep  -P 212.58.246.5[4,5] named_dump.db
www.bbc.net.uk.     166 A   212.58.246.54
            166 A   212.58.246.55

Большинство UNIX-подобных ОС не кэшируют DNS, пока системный администратор не установит для этого программное обеспечение / пакет.

Следовательно, тип кэшируемых записей зависит от установленного программного обеспечения / пакета (широко используемые записи CNAME и A кэша ISC-BIND).

Microsoft Windows также кэширует записи CNAME и A по умолчанию, и ipconfig /displaydns | more команда может их показать.