DNS - несколько записей А или 1 запись и много CNAME?

29

Допустим, у меня есть веб-сервер, который называется «www». www.example.com разрешает IP-адрес этой машины. Затем я хочу создать несколько виртуальных хостов и DNS-записи для них, например, webmail.example.com.

Для «веб-почты», я должен вставить запись A с IP-адресом www, или я должен сделать CNAME для www?

Что «чище», надежнее? лучше?

Рори
источник

Ответы:

26

Есть два альтернативных взгляда на этот вопрос, и в конечном итоге он будет обсуждаться вечно. Я не собираюсь высказывать свое мнение (потому что я сам себя разрываю), но общие аргументы, как правило, таковы:

  • Вы должны определить записи A для своих физических машин, а затем службы CNAME на этих машинах. Это довольно ясно дает понять, что к чему, и в случае, если вам нужно перенумеровать, не нужно менять много записей - только записи машины. С другой стороны, это несколько увеличивает нагрузку поиска DNS, и «вспомогательные» IP-адреса (думаю, SSL vhosts) не вписываются в эту модель.

  • Буквальное значение «канонического имени» (CNAME) состоит в том, чтобы определить строгие псевдонимы одного и того же имени (think mailand smtp), и если у вас есть несколько служб, работающих на одном компьютере, все они должны иметь записи A, поскольку это уменьшает нагрузку на DNS и некоторые службы (записи NS и, в меньшей степени, записи MX) на самом деле не впечатлены работой с CNAME, поэтому, если вам все равно придется по-разному обращаться с этими службами, мы можем также сделать это для всего.

romble
источник
12
Вы можете серьезно испортить / перегрузить свой DNS-сервер, указав MX на CNAME. Я не могу не объяснить, почему сейчас, но старые почтовые серверы (их там много) увидят MX, указывающий на CNAME, и не будут знать, как с ним работать, и будут продолжать искать и подвергать огромному стрессу на вашем DNS и, в конце концов, электронная почта никуда не денется. НЕ НАПРАВЛЯЙТЕ MX НА CNAME. КОГДА-ЛИБО.
Марк Хендерсон
3
Я согласен с Farseeker, не указывайте MX на CNAME, даже если он может работать. Загляните в Википедию (поиск по MX Record) или RFC 2181 (раздел 10.3), если вы хотите получить полную информацию.
Бенуа
+1 к тряске. Этот ответ также выражает мою точку зрения. +1 к Farseeker. MX-записи являются исключением. Что касается ссылок Beoot, Wikipedia никогда не должна использоваться в качестве технического справочника, поскольку существует слишком много ошибок и неточностей. Хотя почти все любят цитировать RFC, мы должны помнить, что они не являются стандартами, а являются лишь предшественником предложения о стандарте.
Джон Гарденье
Извините за неправильное написание имени Бенуа. Пришло время лежать в кровати.
Джон Гарденье
Я всегда использовал имена. Мой коллега принял подход нескольких записей. Еще одна причина, по которой cname лучше: она позволяет легко решить, какая запись получает запись ptr. Я получил пиво от третьего коллеги на этом.
Дмурати
12

Использование CNAME эффективно удваивает поиск на DNS-сервере. Когда запрос сопоставляется с CNAME, он должен найти запись A для CNAME.

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

Марк Хендерсон
источник
12

Некоторые из них предполагают, что CNAME увеличивают нагрузку на DNS. Это сделало меня любопытным. Я запустил wireshark, проверил запрос на CNAME и, по крайней мере, в нашей среде результат был возвращен в одной записи. Это напоминает афоризм Кнута: «преждевременная оптимизация - корень всего зла».

Мне нравятся CNAME, но в основном за их психологический эффект. Они поощряют людей (таких как я, например) отсоединять имена серверов от имен сервисов.

В нашей среде есть несколько SSL-сертификатов, прикрепленных к непрозрачным именам серверов (что мы прекратили делать). CNAMEs работают здесь намного лучше. В каждом месте, где я работал, миграция сервисов, где имя сервера тесно связано с сервисом, является головной болью. CNAME дают четкую концептуальную линию разделения.

Джо Фортье
источник
Это требует больше голосов. Записи CNAME обычно не увеличивают количество требуемых циклов, поскольку результаты объединяются в один ответ.
Nic
4

По моему мнению, если виртуальные хосты - это www.someotherdomain.com, то я бы относился к ним как к отдельному домену с собственным набором записей DNS (в дальнейшем это будет проще, если их необходимо разделить). Однако, если это просто блог .example.com, я бы использовал CNAME.

Просто мои личные предпочтения.

Сэм
источник
2

Я бы использовал CNAME из-за перспективы DNS, веб-почта - это псевдоним www.

Мартин П. Хельвиг
источник
2

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

Например, используйте записи A для первичных записей с высоким трафиком (@ и www). Используйте CNAME для вторичных записей, которые всегда будут отображаться на один и тот же IP первичной записи. Например, если у вас есть домен "member.site.com", который всегда будет использовать тот же IP-адрес, что и "www.site.com", тогда вы можете использовать CNAME здесь для удобства, но если вы можете использовать запись A , это решило бы быстрее.

TheDigitalOrchard
источник
Спасибо, я нашел ответ ясным, но ваш комментарий еще проще для понимания :)
karni