Как преодолеть ограничения CNAME корневого домена?



нас таких много веб-приложений для наших клиентов. Как очевидно, они хотят использовать свои собственные домены для ссылки на эти приложения, как правило, они хотят, чтобы любой пользователь, который либо тип http://www.customer1.example или http://customer1.example переходит к их веб-приложению.



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



по сути:



customer1.example IN CNAME customer1.mycompanydomain.example //this is invalid as the RFC
www.customer1.example IN CNAME customer1.mycompanydomain.example //this is valid and will work


мы хотим иметь возможность изменить IP-адрес customer1.mycompanydomain.example или A запись и наши клиенты будут следовать этой записи, которую мы можем контролировать.



в нашем DNS это будет выглядеть так:



customer1.mycompanydomain.example IN A 192.0.2.1


какие идеи?

1154   8  

8 ответов:

причина, по которой этот вопрос все еще часто возникает, заключается в том, что, как вы упомянули, где-то как-то кто-то предположил, что важно написал, что доменные имена RFC без поддомена перед ними недействительны. Однако, если вы внимательно прочтете RFC, вы обнаружите, что это не совсем то, что он говорит. На самом деле,RFC 1912 гласит:

Не переусердствуйте с CNAMEs. Используйте их при переименовании хостов, но план, чтобы избавиться от них (и сообщите своим пользователям).

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

  • псевдоним в DNSimple
  • ANAME в DNS сделал легко
  • АИМЯ на пользуетесь услугами регистратора easydns
  • CNAME в CloudFlare

для каждого поставщика настройка аналогична: укажите псевдоним или запись ANAME для вашего домена apex: example.domain.com так же, как и с записью CNAME. В зависимости от поставщика DNS, пустое значение или @ Name определяет вершину зоны.

псевдоним или имя или @ example.domain.com.

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

Я категорически не согласен с утверждением, что это делается только "любитель админы" или подобные идеи. Это просто "что нужно сделать имя и его служба?"сделка, а затем адаптировать вашу конфигурацию DNS для удовлетворения этих пожеланий; если ваши основные услуги-это веб и электронная почта, я не вижу никаких веских причин, почему удаление CNAMEs для-good будет проблематичным. В конце концов, кто бы предпочел @subdomain.domain.org over @domain.org ? Кому нужен "www", если вы уже настроены с протоколом сам по себе? Нелогично предполагать, что использование имени корневого домена будет недопустимым.

CNAME'ING корневая запись технически не против RFC, но имеет ограничения, означающие, что это практика, которая не рекомендуется.

нормально корневую запись будет иметь несколько записей. Скажем, 3 для ваших серверов имен, а затем один для IP-адреса.

на RFC:

Если CNAME RR присутствует на узле, никакие другие данные не должны быть присутствует;

и за IETF "общие ошибки работы и конфигурации DNS" Документ:

это часто пытаются неопытные администраторы как очевидное способ разрешить ваше доменное имя также быть хостом. Тем не менее, DNS серверы, такие как BIND, увидят CNAME и откажутся добавлять любые другие ресурсы для этого имени. Поскольку никакие другие записи не разрешены сосуществуйте с CNAME, записи NS игнорируются. Поэтому все хозяев в захолустье.XX домен игнорируются как хорошо!

ссылки:

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

вот что Dig показывает мне для этого домена (фактический домен запутан как mydomain.com):

; <<>> DiG 9.8.3-P1 <<>> mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2056
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mydomain.com.          IN  A

;; ANSWER SECTION:
mydomain.com.       394 IN  CNAME   myapp.parseapp.com.
myapp.parseapp.com. 300 IN  CNAME   parseapp.com.
parseapp.com.       60  IN  A   54.243.93.102

вы должны поставить точку в конце внешнего домена, чтобы он не думал, что вы имеете в виду customer1.mycompanydomain.com.localdomain;

Так что просто измените:

customer1.com IN CNAME customer1.mycompanydomain.com

до

customer1.com IN CNAME customer1.mycompanydomain.com.

sipwiz правильно единственный способ сделать это правильно-это гибридный подход HTTP и DNS. Мой регистратор является перепродавцом для Tucows, и они предлагают переадресацию корневого домена в качестве бесплатной услуги с добавленной стоимостью.

Если ваш домен blah.com они спросят вас, куда вы хотите перенаправить домен, и вы введете www.blah.com. они назначают запись A на свой сервер apache и автоматически добавляют blah.com как DNS vhost. Этот хост отвечает ошибка http 302 перенаправления их к правильному URL-адресу. Это просто сценарий / настройка и может быть обработано нижним концом в противном случае будет утилизировано оборудование.

выполните следующую команду для примера: curl-v eclecticengineers.com

моя компания делает то же самое для ряда клиентов, где мы размещаем веб-сайт для них, хотя в нашем случае это xyz.company.com вместо того, чтобы www.company.com. мы действительно заставляем их установить рекорд A xyz.company.com чтобы указать на IP-адрес, мы выделяем их.

Что касается того, как вы могли бы справиться с изменением IP-адреса, я не думаю, что есть идеальное решение. Некоторые идеи:

  • используйте балансировщик нагрузки NAT или IP и дайте вашим клиентам IP адрес, принадлежащий ему. Если IP-адрес веб-сервера необходимо изменить вы можете сделать обновление на NAT или балансировщик нагрузки,

  • также предложите услугу хостинга DNS и попросите своих клиентов разместить свой домен вместе с вами, чтобы вы могли обновить записи A,

  • попросите своих клиентов установить запись A до одного основного веб-сервера и использовать перенаправление HTTP для веб-запросов каждого клиента.

спасибо как sipwiz, так и MrEvil. Мы разработали PHP скрипт, который будет анализировать URL, который пользователь вводит и вставляет www до самого верха. (например, если клиент вводит kiragiannis.com, то он перенаправит на www.kiragiannis.com). так наш клиент указывает их корень (например customer1.com до A запишите, где находится наш веб-редиректор), а затем wwwCNAME реальным A запись управляется нами.

ниже кода в случае, если вы заинтересованы в будущем нас.

<?php
$url = strtolower($_SERVER["HTTP_HOST"]);

if(strpos($url, "//") !== false) { // remove http://
  $url = substr($url, strpos($url, "//") + 2);
}

$urlPagePath = "";
if(strpos($url, "/") !== false) { // store post-domain page path to append later
  $urlPagePath = substr($url, strpos($url, "/"));
  $url = substr($url, 0, strpos($url,"/"));
}


$urlLast = substr($url, strrpos($url, "."));
$url = substr($url, 0, strrpos($url, "."));


if(strpos($url, ".") !== false) { // get rid of subdomain(s)
  $url = substr($url, strrpos($url, ".") + 1);
}


$url = "http://www." . $url . $urlLast . $urlPagePath;

header( "Location:{$url}");
?>

Я вижу readytocloud.com размещается на Apache 2.2.

существует гораздо более простой и эффективный способ перенаправления не-www сайта на сайт www в Apache.

добавьте следующие правила перезаписи в конфигурации Apache (либо внутри виртуального хоста, либо снаружи. Это не имеет значения):

RewriteCond %{HTTP_HOST} ^readytocloud.com [NC]
RewriteRule ^/$ http://www.readytocloud.com/ [R=301,L]

или следующие правила перезаписи, если вы хотите сопоставить URL-адреса от 1 до 1 с сайта, не являющегося www, на сайт www:

RewriteCond %{HTTP_HOST} ^readytocloud.com [NC]
RewriteRule (.*) http://www.readytocloud.com [R=301,L]

отметим, mod_rewrite, с модуль должен быть загружен для этой работы. К счастью readytocloud.com выполняется на поле CentOS, которое по умолчанию загружает mod_rewrite.

у нас есть клиентский сервер под управлением Apache 2.2 с чуть менее 3000 доменов и почти 4000 перенаправляет, однако, нагрузка на сервер наведите около 0.10 - 0.20.

Comments

    Ничего не найдено.