Я пытаюсь добиться следующего:
- Публичный сервер имен для моего домена, который указывает
example.com
на публичный IP-адрес. - Частный сервер имен для того же домена, работающий в локальной сети, который вместо этого направляет клиентов на частный IP-адрес в той же локальной сети.
- DNSSEC включен.
Конечно, достичь первого и последнего пунктов одновременно сравнительно легко, поэтому проблема в том, как заставить работать частный компонент.
Что касается моей фактической настройки:
- Я использую DNS-сервис Cloudflare, где у меня есть запись A для моего домена, указывающая на публичный IP-адрес, и включен DNSSEC.
- У моего регистратора я добавил запись DS на основе того, что мне дает Cloudflare, и настроил серверы имен Cloudflare. Все это работает отлично, как и ожидалось.
- Внутри я использую Pi-Hole (настроенный как DNS-сервер для клиентов в моей локальной сети), который настроен с включенным DNSSEC и указывает на локальный экземпляр CoreDNS в качестве вышестоящего резолвера.
- В CoreDNS у меня настроена зона, для
example.com
которой подписано ключами, сгенерированнымиcoredns-keygen
. У нее есть запись A, указывающая на внутренний IP-адрес. - У меня есть вторая запись DS у регистратора, созданная на основе внутреннего ключа CoreDNS.
Что происходит:
- Общая настройка работает для разрешения доменов, которые мне не принадлежат.
- Pi-Hole отвечает
SERVFAIL
и регистрирует,ABANDONED
когда я пытаюсь разрешить свой домен. - Но если я направлю клиента напрямую в CoreDNS (например, с помощью
dig
), я получу ожидаемый ответ с IP-адресом локальной сети. - Кроме того, если я отключу DNSSEC в Pi-Hole, то все будет работать нормально.
Итак, мои вопросы:
- Возможно ли вообще то, чего я пытаюсь достичь?
- Я начинаю задумываться, не является ли наличие отдельных записей DS у моего регистратора ошибкой, но я не думаю, что смогу получить закрытый ключ, который использует Cloudflare, и не смогу загрузить пользовательские ключи, поэтому я не уверен, как я могу использовать одни и те же ключи для открытых и закрытых.
- Есть ли причина, по которой все работает, если я напрямую направляю своих клиентов на CoreDNS, но Pi-Hole отказывается сотрудничать?
Спасибо!