Рейтинг:0

Возможно ли иметь разные внутренние и общедоступные DNS с помощью DNSSEC?

флаг in

Я пытаюсь добиться следующего:

  • Общедоступный сервер имен для моего домена, который указывает пример.com на общедоступный IP-адрес.
  • Частный сервер имен для того же домена, работающий в локальной сети, который вместо этого указывает клиентам частный IP-адрес в той же локальной сети.
  • DNSSEC включен.

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

С точки зрения моей фактической установки:

  • Я использую службу DNS Cloudflare, где у меня есть запись A для моего домена, указывающая на общедоступный IP-адрес и включенный DNSSEC.
  • В моем регистраторе я добавил запись DS на основе того, что дал мне Cloudflare, и настроил серверы имен Cloudflare. Все это прекрасно работает, как и следовало ожидать.
  • Внутри я запускаю Pi-Hole (установленный в качестве DNS-сервера для клиентов в моей локальной сети), который настроен с включенным DNSSEC и указывает на локальный экземпляр CoreDNS в качестве восходящего преобразователя.
  • В CoreDNS у меня настроена зона для пример.com который подписан ключами, сгенерированными coredns-keygen. У него есть запись A, указывающая на внутренний IP-адрес.
  • У меня есть вторая запись DS у моего регистратора на основе ключа, используемого внутри CoreDNS.

Что происходит:

  • Общая настройка работает для разрешения доменов, которые не принадлежат мне.
  • Пи-Хоул отвечает SERVFAIL и журналы ЗАБРОШЕННЫЙ когда я пытаюсь разрешить свой домен.
  • Но если я укажу клиенту напрямую на CoreDNS (например, с помощью копать землю), я получаю ожидаемый ответ с IP-адресом локальной сети.
  • Кроме того, если я отключу DNSSEC в Pi-Hole, он будет работать нормально.

Итак, мои вопросы:

  • Возможно ли то, чего я пытаюсь достичь?
  • Я начинаю задаваться вопросом, неправильно ли иметь отдельные записи DS у моего регистратора, но я не думаю, что смогу получить закрытый ключ, который использует Cloudflare, и не могу загрузить пользовательские ключи, поэтому я не уверен, как я могу использовать одинаковые ключи для открытых и закрытых.
  • Есть ли причина, по которой все работает, если я напрямую указываю своим клиентам на CoreDNS, но Pi-Hole отказывается сотрудничать?

Спасибо!

Patrick Mevzek avatar
флаг cn
Может помочь следующий вопрос в столбце «Связанные»: https://serverfault.com/questions/745270/using-dnssec-with-private-tld?rq=1
Patrick Mevzek avatar
флаг cn
«Я начинаю задаваться вопросом, неправильно ли иметь отдельные записи DS в моем регистраторе». DNSSEC ожидает, что существует ОДИН действительный путь для подтверждения цепочки доверия. Не все. Так что это «нормально» иметь дополнительный DS. Вы можете найти различные TLD/домены, используя настройку «предварительно опубликованной DS», при которой DS публикуется в родительском домене, а соответствующий DNSKEY не публикуется в дочернем. Это работает до тех пор, пока существует ДРУГАЯ запись DS с соответствующим DNSKEY. Возможно, вы захотите от Pi-Hole продолжить отладку SERVFAIL. Это может быть связано с DNSSEC или нет. Если у вас есть EDE, это поможет, но в противном случае попробуйте копать с `+cd` и без него.
Patrick Mevzek avatar
флаг cn
Настоящее имя помогло бы. Я предполагаю, что проблема больше связана с вашими записями `NS`. «В CoreDNS у меня есть зона, настроенная для example.com, которая подписана ключами, сгенерированными coredns-keygen». Но, вероятно, с другими NS-записями, чем публичная версия зоны? Что может вызвать ошибки в подписях, поскольку NS rrset больше не будет совпадать.
флаг in
Спасибо, я видел этот вопрос, но, к сожалению, ссылки в ответе мертвы. Кроме того, я владею своим настоящим доменом, так что, по-видимому, это упрощает задачу. Итак, наличие нескольких записей DS — это нормально? Но когда вы говорите, что DNSSEC ожидает один путь, по-видимому, это означает не ТОЛЬКО один путь. Если я попытаюсь копать с помощью `+cd`, я получу `NOERROR`, так что эта проблема определенно связана с проверкой. «Но, вероятно, с другими NS-записями, чем общедоступная версия зоны?» - О да.Я только что попытался установить SOA и NS внутренней зоны так же, как и общедоступную, пока без изменений.
флаг in
Также собираюсь попробовать получить что-то более полезное для ошибок от Pi-Hole. Собираюсь посмотреть, смогу ли я как-то включить EDE.
Patrick Mevzek avatar
флаг cn
«Но когда вы говорите, что DNSSEC ожидает один путь, по-видимому, это означает не ТОЛЬКО один путь». Резолвер берет все DS, которые он видит, и все DNSKEY, которые он видит, и если он находит одно совпадение (плюс все крипто и даты становятся в порядке), тогда хорошо утверждать, что цепочка доверия проверена (и это продолжается). со следующим уровнем делегирования и так далее). Как только правильный путь найден, другие DS/DNSKEY на том же уровне не имеют значения, даже если они тоже работают.
Patrick Mevzek avatar
флаг cn
См. §5.3.3 RFC4035, если это понятнее, чем мое объяснение: «Обратите внимание, что несколько записей DNSKEY RR могут совпадать с условия в Разделе 5.3.1. В этом случае валидатор может только определить, какая запись DNSKEY RR является правильной, попробовав каждую совпадающую общедоступную key до тех пор, пока валидатору не удастся проверить подпись или закончатся ключи, чтобы попробовать». Таким образом, одного совпадения достаточно, чтобы иметь значение, какое именно (при наличии нескольких DNSKEY/DS; помните также, что данный DNSKEY, даже сам по себе, может иметь несколько записей DS для разных дайджестов)
флаг in
Спасибо, это имеет смысл. Я все еще застрял на этом, к сожалению. Все, что я вижу из журналов, это то, что Pi-Hole перенаправляет запрос в CoreDNS, который отвечает записью A. Затем Pi-hole запрашивает запись DS, CoreDNS регистрирует ответ «NOERROR», но затем Pi-Hole регистрирует «проверка mydomain.com ЗАБРОШЕНА».Пробуя вещи с `dig` и `drill`, запрашивая сервер CoreDNS напрямую, все, что я могу сказать, это то, что, насколько я понимаю, ответы выглядят правильно. Так что я понятия не имею, почему Pi-Hole отказывается от проверки.

Ответить или комментировать

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