Действительна ли DNS-запись CNAME с подстановочным знаком?


87

Я знаю, что допустимо иметь запись DNS A, которая является подстановочным знаком (например, * .mysite.com). Возможно ли / допустимо / рекомендовано иметь подстановочную запись CNAME?


Кроме того: это не дает вам возможности сделать сам MySite.com CNAME.
reinierpost

Ответы:


60

Это возможно сделать. В какой-то момент он немного поднялся в воздух, пока 4592 не уточнил, что его следует поддерживать.

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

С точки зрения того, целесообразно или нет, это зависит от вашего использования. Обычно CNAMES используются для удобства, когда вы указываете на «внешнее» доменное имя, на котором вы не контролируете DNS.

Например, допустим, вы настроили систему CMS, которая позволяет вам использовать * .mycms.com в качестве имени сайта (в нем используются заголовки хоста). Вы хотите, чтобы клиенты могли легко настроить * .cms.customer.com, не беспокоясь о том, что в какой-то момент вы можете изменить свой IP-адрес. В этом случае вы можете посоветовать им настроить подстановочный знак CNAME с именем * .cms.customer.com для www.mycms.com.

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


8
На самом деле вы можете установить подстановочный DNS с GoDaddy. Просто установите Хост на «**».
Крис Питчманн

2
Я вижу, что ** принимается инструментом DNS-менеджера GoDaddy, но работает ли он как подстановочный знак? Похоже, недокументированная особенность.
dunxd

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

3
@mltsy: один из наших основных сайтов использует подстановочные знаки dns вместе с GoDaddy. У нас уже несколько лет и мы не используем их Премиум DNS. Кроме того, это *не так **.
NotMe

2
@DaveKanter О, ты прав. В заявлениях статьи упоминаются только записи А. Тем не менее в *феврале этого года я успешно установил запись CNAME с подстановочными знаками для клиента. Использование панели инструментов GoDaddy. И я подтверждаю, что это работает, как и следовало ожидать.
e1v

20

Я добавил строку

*.www        IN CNAME        my_webserver

к моему файлу зоны в моем конфиге bind, и это сработало идеально (т.е. whatever.www.domain.comи whatever2.www.domain.comвсе указали my_webserver.

Также было возможно добавить исключения к этому, добавив строку

exception.www        IN CNAME        another_server

так что exception.www.domain.comуказал на another_server.



4

Мы постоянно используем подстановочные знаки, и у нас не было никаких проблем. Если вы указываете на ipaddres, используйте:

*.mysite.com     Host (A)    Default     xxx.xxx.xxx.xxx

Если вы хотите использовать псевдоним, выполните:

*.mysite.com.   IN CNAME mysite.com.

Первая установка сработала хорошо для нас, когда мы использовали с подстановочным знаком ssl (ssl.com), где мы хотели, чтобы у каждого пользователя был username.mysite.com
Yogi

4

Насколько я помню, вы можете (иш) сделать это, но тогда этот CNAME не может использоваться никаким другим типом записи, таким как NS или MX.

Не совсем уверен, что вы пытаетесь достичь с помощью символа подстановки, поэтому я должен дать общий ответ :)

Чтобы уточнить, CNAME aserver.domain означает, что у вас не может быть другого имени.aserver.domain

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


Спасибо за это предупреждение о совместном использовании CNAMEзаписи с другим типом записи для того же домена. У меня была похожая проблема, и мой DNS-сервер обычно предупреждает меня о конфликтах, но в этом случае это не так, потому что CNAME был для, *.example.comа дополнительная запись ( TXTзапись) была для определенного субдомена subdomain1.example.com. Так что это не уловило столкновение! Упс.
Поль д'Ауст

2

когда вы создаете запись CNAME, заканчивайте указанный сервер точкой, например: * .mydomain.com. Обратите внимание на последнюю точку


1

Вот результаты моего теста. Я удалил записи A для mysite.com и www.mysite.com и добавил запись CNAME для * .mysite.com. Тест не сработал. mysite.com не разрешит. Просто чтобы прояснить, я использую OpenDNS для своих DNS-серверов. Возможно, он отлично работает с другими DNS-серверами, но я, очевидно, хочу, чтобы он работал универсально. Основываясь на этих результатах, я собираюсь придерживаться стандартных записей А.


Разве это не ожидаемое поведение? Насколько я вижу, * .mysite.com не будет соответствовать mysite.com, независимо от типа RR. Это работает с записями A?
Маркдрейтон

Нет, « » соответствует одному или нескольким ярлыкам, поэтому « .example.com» не соответствует «example.com»
Альнитак,

Я этого не знал, но это имеет смысл. Поэтому мне кажется, что мне нужна хотя бы одна запись A для имени корневого домена, а затем я мог бы использовать запись CNAME с подстановочными знаками, чтобы покрыть все остальное. Это не то решение, которое я хотел, но, по крайней мере, я знаю.
Бен Миллс

1

Это работает сейчас.

Просто используйте «*» в разделе cname редактора файлов зон или менеджера DNS от Godaddy и укажите IP-адрес или DNS-имя.

В моем случае я использовал его с DNS-именем, указывающим на облачный сервис Microsoft Azure, и он отлично работал. Это работает для bla.domain.ext, но также и для bla.bla.domain.ext. Может работать по-другому для другого поставщика.


1
Записи CNAME в DNS не указывают на URL-адреса или IP-адреса, но на одно DNS-имя, которому эквивалентно имя с записью CNAME.
Сокол Момот

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