Вопрос или проблема
Я пытаюсь использовать бесплатный сервис поддоменов, чтобы я мог использовать SSL-сертификат lets encrypt на собственном экземпляре vaultwarden, который работает локально в контейнере docker на raspberry pi. Я пытался следовать этому руководству, которое использует duckdns и Caddy для управления сертификатами, но у меня не получается. Я опубликовал этот вопрос на форумах vaultwarden. Однако, похоже, проблема заключается либо в настройках DNS моего роутера pfsense, либо в самом duckdns.
Я настроил настройки TLS DNS роутера pfsense, следуя следующему руководству точно.
Я провел следующие тесты как на duckdns, так и на провайдере бесплатных поддоменов freedns.afraid.org. Оба провайдера имеют поддомен, настроенный на указание на локальный IP-адрес моего raspberry pi. (Тот, который я использую для SSH-доступа к raspberry pi в локальной сети). Поскольку именно так указано в руководстве vaultwarden, так как доступ к vaultwarden должен быть возможен только в локальной сети.
Я использовал nslookup на компьютере с Linux, который находится в той же локальной сети, что и мой raspberry pi. У него также установлен в качестве шлюза по умолчанию и DNS частный IP-адрес моего роутера pfsense.
Обратите внимание, что я вставил заполнитель для поддомена, чтобы не раскрывать свои фактические поддомены, но эти поддомены действительно существуют, и вывод ниже является реальным для моих фактических поддоменов.
duckdns с использованием настроек DNS по умолчанию pfsense (TLS quad 9)
nslookup placeholder.duckdns.org
;; Получен ответ SERVFAIL от 127.0.0.53
Сервер: 127.0.0.53
Адрес: 127.0.0.53#53
** сервер не может найти placeholder.duckdns.org: SERVFAIL
duckdns с явным указанием DNS (quad 9)
nslookup placeholder.duckdns.org 9.9.9.9
Сервер: 9.9.9.9
Адрес: 9.9.9.9#53
Неавторитетный ответ:
Имя: placeholder.duckdns.org
Адрес: <частный IP raspberry pi>
freedns.afraid.org с использованием настроек DNS по умолчанию pfsense (TLS quad 9)
nslookup placeholder.crabdance.com
;; Получен ответ SERVFAIL от 127.0.0.53
Сервер: 127.0.0.53
Адрес: 127.0.0.53#53
** сервер не может найти placeholder.crabdance.com: SERVFAIL
freedns.afraid.org с явным указанием DNS (quad 9)
nslookup placeholder.crabdance.com 9.9.9.9
Сервер: 9.9.9.9
Адрес: 9.9.9.9#53
Неавторитетный ответ:
Имя: placeholder.crabdance.com
Адрес: <частный IP raspberry pi>
google.com с использованием настроек DNS по умолчанию pfsense (TLS quad 9)
nslookup google.com
Сервер: 127.0.0.53
Адрес: 127.0.0.53#53
Неавторитетный ответ:
Имя: google.com
Адрес: 142.250.187.206
Имя: google.com
Адрес: 2a00:1450:4009:820::200e
Как видите, я могу разрешать google.com и все другие установленные домены, используя настройки DNS моего pfsense, и использую интернет без проблем уже несколько месяцев. Однако это не так для duckdns и freedns.afraid.org. Я могу разрешать их только в том случае, если указываю quad 9 или других провайдеров DNS в команде nslookup.
Я не уверен, в чем проблема, либо что-то не так с моими настройками pfsense, либо же проблема в двух провайдерах бесплатных поддоменов. Я также думаю, что эта проблема и является причиной, по которой я не могу получить доступ к моему локально размещенному экземпляру vaultwarden через мой домен duckdns с SSL.
Буду признателен за любую помощь.
Ответ или решение
К сожалению, у вас возникли проблемы с разрешением поддоменов DuckDNS и Freedns.afraid.org при использовании DNS-форвардера Unbound на маршрутизаторе pfSense. Давайте рассмотрим, что может быть не так и как это исправить.
Проблема
Вы пытаетесь использовать бесплатный сервис поддоменов для получения SSL-сертификата Let’s Encrypt для вашего самохостинг решением Vaultwarden на Raspberry Pi. Однако, при попытке разрешить поддомены через ваш маршрутизатор pfSense вы получаете ошибку SERVFAIL, что указывает на проблемы с разрешением DNS.
Диагностика
-
Настройки DNS на pfSense: Вы указали, что используете TLS-серверы от Quad9, но печально, что ваши локальные поддомены разрешаются только с использованием внешнего DNS-сервера. Это говорит о том, что ваш pfSense, возможно, неправильно настроен для обработки запросов на поддомены, которые указывают на локальные IP-адреса.
-
Запрос через nslookup: Вы указали, что ваши запросы к поддоменам через nslookup на локальном компьютере возвращают SERVFAIL, но работают нормально при обращении к Quad9 напрямую. Это подтверждает, что проблема кроется именно в конфигурации вашего pfSense.
Решение
1. Настройка Unbound на pfSense
Вам нужно убедиться, что DNS-форвардер Unbound правильно настроен для управления локальными поддоменами:
-
Перейдите в Services > DNS Forwarder и убедитесь, что DNS Forwarder включен. Вы также можете рассмотреть использование DNS Resolver (Unbound), так как он более гибкий и мощный.
-
Если вы используете Unbound, перейдите в Services > DNS Resolver. Проверьте, чтобы опция "Enable Forwarding Mode" была выключена. Это позволит Unbound разрешать локальные адреса самостоятельно.
2. Добавление локального DNS-записи
Чтобы обеспечить правильное разрешение ваших поддоменов на pfSense, вы можете добавить локальные DNS-записи для ваших поддоменов:
- Перейдите в Services > DNS Resolver.
- Найдите секцию Host Overrides и добавьте новые записи для ваших поддоменов:
- В поле Host укажите только часть поддомена (например,
placeholder
дляplaceholder.duckdns.org
). - В поле Domain указать домен (например,
duckdns.org
). - В поле IP Address укажите локальный IP-адрес вашего Raspberry Pi.
- В поле Host укажите только часть поддомена (например,
Это позволит вашему pfSense самостоятельно разрешать запрашиваемые поддомены, без необходимости обращения к внешним DNS-серверам.
3. Очистка кэша DNS
После внесения изменений в настройки DNS рекомендуется очистить кеш DNS на pfSense:
- Перейдите в Diagnostics > DNS Lookup и выполните поиск по вашему поддомену после настройки.
4. Проверка конфигурации
После настроек вы можете снова использовать nslookup
для проверки того, правильно ли разрешается ваш поддомен:
nslookup placeholder.duckdns.org
Убедитесь, что ответ показывает локальный IP-адрес вашего Raspberry Pi.
Заключение
Следуя этим шагам, вы должны иметь возможность разрешать поддомены, указывающие на локальные IP-адреса через pfSense. Убедитесь также, что ваш Raspberry Pi может связываться с внешними DNS-серверами для получения обновлений SSL-сертификатов через Let’s Encrypt. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.