Почему мы используем каноническое имя хоста в системе DNS?

Я прочитал документ, в котором говорится, что хост со сложным именем хоста может иметь один или несколько псевдонимов. Например, relay1.west-coast.media.com — это каноническое имя хоста, а media.com — псевдоним. Они оба связаны друг с другом записью 'A' и записью 'CNAME' в системе DNS следующим образом:

media.com CNAME  relay1.west-coast.media.com  
relay1.west-coast.media.com A 210.23.25.32

Что заставляет нас использовать сложное каноническое имя хоста? Разве мы не можем просто связать псевдоним с IP-адресом, добавив запись 'A' в систему DNS следующим образом:

media.com A 210.23.25.32

person user1543750    schedule 08.02.2018    source источник
comment
Вы уверены, что примеры записей верны? Не может быть такой записи media.com CNAME relay1.west-coast.media.com, может это запись A а другая запись CNAME? Однако ответ Криса Мерера правильный.   -  person Lanexbg    schedule 08.02.2018


Ответы (2)


Записи CNAME полезны при запуске нескольких служб на одном сервере. Например, вы можете указать www.media.com, ftp.media.com и Mud.media.com на relay1.west-coast.media.com.

Таким образом, если IP-адрес relay1... когда-либо потребуется изменить, это будет одно обновление записи A, а не несколько.

person Chris Meurer    schedule 08.02.2018
comment
Просто добавлю, что в вашем примере это нормально, но не совсем нормально, если есть только одно имя хоста, на которое указывает CNAME, потому что таким образом будут сделаны два запроса вместо одного. Быстрее использовать записи A, в тех случаях, когда нет проблем с редактированием IP записей при его изменении. - person Lanexbg; 08.02.2018
comment
@Lanexbg это огромное упрощение. У DNS есть кеши, и время, затрачиваемое на DNS-запросы, часто является менее проблематичным (когда все в порядке) среди всех времен, затрачиваемых данным обменом. - person Patrick Mevzek; 10.02.2018

Да, ты можешь.

Во-первых, как объяснил Lanexbg, ваш конкретный пример неверен, поскольку вы не можете иметь CNAME в вершине (корне) зоны, потому что по определению запись CNAME не может сосуществовать ни с чем другим (здесь мы забудем об исключениях) и на вершине вы должны иметь записи SOA и NS для правильной работы вашей зоны.

Поэтому давайте вместо этого просто используем соответствующие имена для нужд конфигурации/документации и обсудим разницу между www.example.com A и www.example.com CNAME www.example.net + www.example.net A.

Конечный результат разрешения www.example.com A будет одинаковым для конечного пользователя, за исключением различных моментов, которыми можно пренебречь при первом подходе (например, проблемы с производительностью).

Если вы поддерживаете оба авторитетных сервера имен для example.com и example.net, вы можете выбирать между двумя вариантами. Как заметил Крис Мейер, большая разница заключается в том, когда вам нужно изменить данные (IPv4-адрес) записи A. В первом случае вам нужно будет изменить его столько раз, сколько у вас есть записей для него, а во втором случае вам нужно будет изменить его только один раз, а все остальные записи, имеющие CNAME, указывающее на www.example.net, будут автоматически обновлены.

CNAME тоже имеют свои недостатки: они могут влиять на производительность, нужно избегать их цепочек и тем более циклов, их нельзя везде использовать так же, как имя в записи А и т.д.

Так что это компромисс.

Но есть еще один случай, который нужно учитывать: если вы являетесь администратором example.com, но не example.net. ExampleNET Inc. может быть крупной хостинговой компанией или CDN. Вы хотите использовать их услуги для своего www.example.com веб-сайта. Если они дадут вам запись A для размещения в вашей зоне, у них будет проблема, что они в основном никогда не смогут изменить ее, если им нужно, потому что все их клиенты будут иметь ее текущее значение, жестко закодированное во всех их файлах зон, так что это большая проблема. против ловкости, а иногда нужно уметь быстро ренумерировать, например, во время DDOS-атаки. Вместо этого, если они посоветуют вам сделать CNAME, они смогут свободно изменить свою запись A без каких-либо других действий, и результаты «немедленно» будут применены ко всем.

Это очень распространенный случай, особенно для CDN.

Среди многих других см. этот живой пример при запросе www.microsoft.com:

;; ANSWER SECTION:
www.microsoft.com.  3600    IN  CNAME   www.microsoft.com-c-3.edgekey.net.
www.microsoft.com-c-3.edgekey.net. 20499 IN CNAME www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net.
www.microsoft.com-c-3.edgekey.net.globalredir.akadns.net. 3600 IN CNAME e13678.dspb.akamaiedge.net.
e13678.dspb.akamaiedge.net. 3600 IN A   23.67.120.106

(конечно, расширенные настройки также могут быть включены для балансировки нагрузки и/или аварийного переключения и/или изменения результата в зависимости от географии источника).

Это не единственный способ сделать это (например, вместо этого они могли бы попросить вас изменить авторитетные серверы имен для вашей зоны example.com, чтобы они могли ее контролировать), и у него тоже есть ограничения (самый важный из них обрисовано в общих чертах в начале: вы не можете поместить CNAME в вершину, поэтому, если вы хотите также веб-сайт на http://example.com/ (обратите внимание на отсутствие www), вам понадобятся другие решения).

person Patrick Mevzek    schedule 10.02.2018