Я только что прочитал этот вопрос что по сути говорит о том, что когда я настраиваю DNS для example.com, корневая запись не может быть CNAME, это должна быть запись A.
У меня вопрос, а почему?
Я уверен, что умные люди, разработавшие DNS, не вводили произвольных ограничений без всякой причины, но я не вижу, что мы получаем, требуя, чтобы корневые домены были A-записями. Я хотел бы просто указать мой домен example.com на someserver.somewebhost.example и забыть об этом, но я не могу.
Просвети меня, billpg.
Во-первых, основная причина заключается не в том, что вы должны использовать запись A, а в том, что вы не можете использовать запись CNAME, потому что она не может сосуществовать с другими обычными типами записей ресурсов.
Причина для который ограничение содержится в §3.6.2 RFC 1034:
Если на узле присутствует запись CNAME RR, других данных не должно быть; это гарантирует, что данные для канонического имени и его псевдонимов не могут отличаться. Это правило также гарантирует, что кэшированный CNAME может использоваться без проверки на полномочном сервере других типов RR.
Поскольку в корне (делегированного) домена должны быть записи SOA и NS, срабатывает указанное выше правило, предотвращающее использование CNAME.
Дело не в том, что корень домена не может быть CNAME
- Это что CNAME
не могут сосуществовать с другими типами записей для того же домена.
Проще говоря, это не имело бы смысла для домена с CNAME
иметь любой другой тип записи, потому что CNAME
гарантирует, что их никогда не увидят и не прочитают.
Допустим, мы пытались дать example.net
как CNAME
(указывая на host.example.com) и A
запись (указывающая на другой IP-адрес).
Сначала клиент запросит A
запись из example.net
с серверов имен example.net.
Серверы имен example.net сообщат нам, что нам нужно следовать CNAME
запись, чтобы продолжить. Так и делаем. В CNAME
указывает на host.example.com
.
Клиент запросит A
запись из host.example.com
серверы имён.
Обратите внимание, как у нас не было возможности прочитать A
запись или любой другой тип записи с example.net? В CNAME
имеет приоритет.