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

DNS-имя хоста больше не разрешается, если было определено вспомогательное имя хоста

Мне трудно понять конкретный эффект разрешения имен DNS для имен поддоменов, который обнаружился при включении функции шифрования.

Контекст моего вопроса:

У меня есть домен (basjes.nl), и я установил для всех имен хостов в этом домене один и тот же IP-адрес.

В пользовательском интерфейсе моего DNS-провайдера (Transip) я вижу что-то вроде этого:

@                      A      x.x.x.x
*                      CNAME  @

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

dig blurp.basjes.nl

Недавно я развернул Инструмент ACME-DNS и настройте соответствующие записи DNS (т.е. делегируйте auth.basjes.nl моему собственному серверу ACME-DNS), чтобы позволить Lets Encrypt проверить, что я владею указанным именем хоста через DNS.

Для этого конкретного имени хоста я хочу иметь сертификат HTTPS с полным именем (то есть не подстановочный знак), поэтому я добавил что-то вроде этого:

_acme-challenge.blurp  CNAME  something.auth.basjes.nl.

После добавления этой записи я обнаружил, что dig blurp.basjes.nl больше не работает. Странно то, что я не получаю сообщение об ошибке (значит нет NXDOMAIN), я либо ничего не получаю, либо просто

;; AUTHORITY SECTION:
basjes.nl.      300 IN  SOA ns0.transip.net. hostmaster.transip.nl. 2018041107 14400 1800 2419200 300

Итак, на данный момент у меня есть что-то вроде этого:

@                      A      x.x.x.x
*                      CNAME  @
_acme-challenge.blurp  CNAME  something.auth.basjes.nl.

Я обнаружил, что если я добавлю явную запись DNS для этого имени хоста, то внезапно он снова ДЕЙСТВУЕТ:

@                      A      x.x.x.x
*                      CNAME  @
blurp                  CNAME  @
_acme-challenge.blurp  CNAME  something.auth.basjes.nl.

Эффекты, которые я хотел бы понять:

P.S. Я связался со службой поддержки Transip перед тем, как опубликовать этот вопрос. Они не знали, что здесь пошло не так и / или почему это происходит.

DNS является иерархическим. Когда вы добавили имя _acme-challenge.blurp.basjes.nl, это означало, что blurp.basjes.nl также был добавлен неявно. Здесь может быть удивительно то, что имя может существовать без какого-либо содержания. Когда вы использовали dig просить blurp.basjes.nl, вы получили совершенно правильный и точный ответ: имя существует, но не содержит записей. Этот случай, когда имя существует только потому, что под ним в дереве DNS есть другие имена, называется пустой нетерминальный. Вы можете погуглить этот термин, если хотите узнать больше.

Это первая часть вашего сбивающего с толку поведения. Вторая часть заключается в следующем: запись с подстановочными знаками используется для генерации ответа тогда и только тогда, когда запрошенное имя еще не существует. Итак, сначала вы попросили blurp.basjes.nl и получил ответ, сгенерированный подстановочным знаком. Затем вы добавили _acme-challenge.blurp.basjes.nl. Когда вы спросили снова после этого, имя blurp.basjes.nl действительно существует (как описано выше), поэтому подстановочный знак не использовался. Но с тех пор blurp.basjes.nl в нем не было записей, все, что вы получили, - это пустой ответ. После этого вы добавили CNAME запись для blurp.basjes.nl, поэтому, когда вы спросили еще раз, это то, что вы получили обратно.

Это проясняет ситуацию?