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

DNS - несколько записей A или 1 запись и множество CNAME?

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

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

Что чище? Надежнее? лучше?

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

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

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

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

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

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

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

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

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

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

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

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

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