Возможности v0.5.2
- Согласованные записи серверов имён и репликация проверочных данных DNS-01 между узлами с аутентификацией.
- Работа в частных сетях с локальным центром сертификации и явным списком разрешённых CIDR для бэкендов.
- Экспорт сертификата и ключа для сервисов, которые сами обрабатывают TLS, включая ocserv.
Обновляетесь с v0.4.x? Прежде чем заменять существующую установку, прочитайте руководство по миграции. Руководство по миграции
Используйте публичный сервис
Учётная запись и регистрация домена не нужны. Бэкенд должен иметь разрешённый публичный IP-адрес и HTTP-сервис на порту 80, доступный со стороны DNSBox.
Замените 198.51.100.20 публичным IPv4-адресом своего сервера:
https://198-51-100-20.dnsbox.io
DNS возвращает для имени хоста адрес прокси DNSBox. Прокси принимает HTTPS-соединение и отправляет HTTP-запросы на IP-адрес, закодированный в имени хоста. Сертификат на ваш сервер он не устанавливает.
Let's Encrypt проверяет имя хоста через DNS-01. Сертификат выдаётся для этого имени, а не для самого IP-адреса. Первое TLS-соединение может занять больше времени из-за выпуска сертификата.
Соединение между браузером и DNSBox использует HTTPS. Между DNSBox и бэкендом используется HTTP. Поддерживается переключение соединения на WebSocket.
IPv6-адрес бэкенда можно записать как 2a01-4f8-c17-b8f--1.dnsbox.io. Один дефис заменяет двоеточие, два дефиса — ::.
Сначала проверьте разрешение имени в DNS, затем HTTPS. Для проверки используйте собственный доступный HTTP-бэкенд:
dig +short 198-51-100-20.dnsbox.io
curl -v https://198-51-100-20.dnsbox.io/
В DNS-ответе возвращается адрес прокси. Успешное TLS-соединение и успешный HTTP-ответ бэкенда — две отдельные проверки.
Запустите DNSBox в частной сети
Локальный режим TLS работает без публичного DNS, проброса портов и доступа в Интернет. DNSBox создаёт собственный центр сертификации. Клиенты должны доверять этому центру.
Пример: DNSBox на 192.168.1.2, HTTP-бэкенды в сети 192.168.1.0/24:
./dnsboxd --domain=home.arpa --ip=192.168.1.2 \
--tls-mode=local --allowed-cidrs=192.168.1.0/24 \
--dns-listen=192.168.1.2:53 --https-listen=192.168.1.2:443 \
--data-dir=/var/lib/dnsbox
Настройте DNS-резолвер локальной сети так, чтобы он перенаправлял на 192.168.1.2 только запросы к зоне home.arpa. DNSBox авторитетен для своей зоны; он не является универсальным рекурсивным DNS-резолвером.
Выпустите один локальный сертификат, чтобы создать центр сертификации, затем добавьте /var/lib/dnsbox/ca/root.crt в хранилище доверенных центров сертификации каждого клиента. Не раскрывайте root.pem. Команда первоначальной настройки приведена в руководстве по развёртыванию.
Для бэкенда на 192.168.1.50 откройте https://192-168-1-50.home.arpa. Клиентам локальной сети нужен доступ к портам DNS и HTTPS сервера DNSBox, а DNSBox — к HTTP-порту бэкенда.
Разверните собственный сервер с Let's Encrypt
Используйте домен или поддомен, которым вы управляете, и делегируйте его DNS-зону серверу имён DNSBox. Зону может обслуживать один узел; несколько узлов обеспечивают резервирование.
Для публичной проверки DNS-01 разрешите входящие соединения на UDP 53 и TCP 53, исходящие HTTPS-соединения и разрешение имён DNS. Входящий порт 80 не требуется. Порт 443 должен быть доступен только тем клиентам, для которых предназначен сервис.
HTTP-бэкенды в частной сети могут использовать сертификаты для имён хостов от общедоверенного центра сертификации, если проверка DNS-01 доступна публично. Явно разрешите эти бэкенды через --allowed-cidrs и настройте DNS и маршрутизацию для клиентов.
При использовании нескольких узлов настройте на каждом одинаковые список серверов имён и записи, а также взаимную аутентификацию TLS для репликации проверочных данных. Выпуск сертификата начнётся только после подтверждения этих данных всеми настроенными узлами.
Доступны архивы релиза для Linux, macOS и Windows. Установщик поддерживает --no-systemd для ручного запуска или использования другого менеджера процессов. Он не отключает системный DNS-резолвер.
Сертификаты для ocserv и других сервисов
Публичный сервис не экспортирует свои закрытые ключи. Если вашему сервису нужны файлы сертификата, разверните собственный DNSBox с делегированной зоной, которой вы управляете.
Запустите --issue с именем хоста, содержащим закодированный IP-адрес и принадлежащим этой зоне. DNSBox сохранит цепочку сертификатов в формате PEM и закрытый ключ в <data-dir>/certs, затем завершит работу. Во время выпуска через ACME он обслуживает DNS, но оставляет HTTPS-порт 443 свободным.
Направьте это имя хоста непосредственно на свой сервис с помощью явной записи A/AAAA. Для ocserv настройте server-cert и server-key. HTTP-прокси DNSBox не реализует OpenConnect или DTLS.
Настройте продление сертификатов и перечитывание файлов вашим сервисом после их изменения. Однократная команда не продлевает сертификаты после завершения работы. Не запускайте два процесса DNSBox с одним каталогом данных.
Вопросы
Можно ли использовать частные IP-адреса с публичным сервисом?
Нет. Публичный прокси предназначен для разрешённых публичных бэкендов. Для частных адресов запустите собственный экземпляр с явным списком разрешённых CIDR.
Что произойдёт при смене IP-адреса?
IP-адрес — часть имени хоста. Для нового IP используйте новое имя; клиенты со старым именем по-прежнему будут обращаться к старому адресу.
Подтверждает ли DNSBox владение IP-адресом бэкенда?
DNS-01 подтверждает управление именем хоста в DNS. Эта проверка не подтверждает владение IP-адресом бэкенда или содержимым, которое он отдаёт.
Продлеваются ли сертификаты автоматически?
Работающий сервис DNSBox продлевает сертификаты, которыми управляет. Для экспортированных сертификатов нужно настроить продление и перечитывание файлов использующим их сервисом.
Что будет, если бэкенд недоступен?
DNS и TLS могут продолжать работать, но прокси не сможет вернуть содержимое приложения. Проверьте, принимает ли бэкенд HTTP-соединения, а также его межсетевой экран и сетевую доступность.
Где сообщить о проблеме?
Создайте issue на GitHub, указав версию DNSBox, режим развёртывания и сообщения об ошибках, относящиеся к проблеме. Удалите закрытые ключи, токены и другие секретные данные.
Техническая справка
- Авторитетный DNS по UDP и TCP. Имена с закодированными IP-адресами разрешаются в настроенный адрес прокси, а не напрямую в адрес бэкенда.
- Пользовательские записи A, AAAA, CNAME, MX и TXT; записи ALIAS в корне зоны с фоновым обновлением.
- ACME DNS-01 или локальный центр сертификации. Репликация в кластере передаёт временные проверочные записи TXT; закрытые ключи сертификатов остаются на своих узлах.
- API управления принимает соединения только на петлевом интерфейсе; по умолчанию — 127.0.0.1:8080. Для удалённого доступа используется SSH-туннель.