Разрешена ли цепочка CNAME to CNAME?


68

Разрешено ли в DNS иметь запись CNAME, которая указывает на другую запись CNAME?

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

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

Ответы:


81

Из RFC 1034 - Доменные имена - понятия и возможности :

Доменные имена в RR, которые указывают на другое имя, должны всегда указывать на основное имя, а не на псевдоним. Это позволяет избежать лишних косвенных указаний при доступе к информации. Например, адрес для имени RR для вышеуказанного хоста должен быть:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

вместо того, чтобы указывать на USC-ISIC.ARPA. Конечно, по принципу надежности, доменное программное обеспечение не должно выходить из строя при представлении цепочек или циклов CNAME; Следует следовать цепочкам CNAME, а петли CNAME сигнализируют об ошибке.

Так что да, это разрешено, и правильно написанное программное обеспечение с этим справится. Однако цепочки CNAME не считаются хорошей практикой и накладывают накладные расходы на инфраструктуру.


3
+1 для ссылки RFC
Alnitak

16
Хотя я делаю это все время, приведенная выше цитата находится вне контекста. Прямо над этим абзацем написано ..Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby

3
Упомянутый специалист по сетевым технологиям Microsoft Azure , цепочка CNAME важна для балансировки нагрузки AnyCast.
Пол Лан

26

Конечно, это возможно.

Однако, как правило, не рекомендуется , по очевидной причине, что он использует больше ресурсов DNS. Например:

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

Запрос 'bar' приведет к тому, что CNAME fooбудет запрошен, а затем someserver.somehost.com.запрошен, что приведет к одному дополнительному запросу.

Для каждого элемента в цепочке, которую вы добавите, потребуется еще один запрос.

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


5

Да, это разрешено и будет работать, но это не считается хорошей практикой. Многократные поиски используют больше ресурсов, и существует риск случайного создания цикла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.