Главная
» Как сделать
»
Шифрование DNS-сервера Pi-hole на Ubuntu Server 24.04
Шифрование DNS-сервера Pi-hole на Ubuntu Server 24.04
В этом наглядном примере Линь запускает Pi-hole на Ubuntu Server 24.04 и хочет зашифровать DNS-запросы, которые Pi-hole отправляет в вышестоящий репозиторий. Установите Pi-hole dnscrypt-proxy, привяжите его к 127.0.0.1:5053репозиторию, выберите DNS-over-HTTPS (DoH), протестируйте этот локальный прокси, а затем направьте Pi-hole на него. В этом пошаговом руководстве предполагается, что Pi-hole уже установлен и работает; пример с Линь — гипотетический, а не реальный отчет об установке или тестировании.
Выберите текущий метод Министерства здравоохранения.
Pi-hole сам не обменивается данными DoH со своим вышестоящим резолвером; обычно он перенаправляет DNS-запросы на IP-адрес и порт. Локальный прокси-сервер выступает связующим звеном между двумя протоколами: Pi-hole отправляет стандартные DNS-запросы на частный локальный сервер, а прокси-сервер отправляет зашифрованные запросы на выбранный резолвер. В этом примере Linh использует dnscrypt-proxyтот же сервер и держит свой сервер в режиме обратной связи, поэтому другие устройства не могут напрямую подключиться к этому прокси-серверу.
Избегайте начала новой установки со старым cloudflared proxy-dnsрецептом. На текущей странице Pi-hole, посвященной Cloudflare, указано, что эта функция была объявлена устаревшей в ноябре 2025 года, и новые установки с ее использованием не рекомендуются. Инструкции Pi-hole по использованию dnscrypt-proxy предлагают поддерживаемую альтернативу. В списке пакетов Ubuntu Noble в настоящее время присутствует dnscrypt-proxy; версии пакетов различаются в зависимости от архитектуры и могут меняться по мере публикации обновлений.
Команда терминала Ubuntu для установки dnscrypt-proxy из репозиториев пакетов Noble.
1. Установите пакет Ubuntu.
Обновите списки пакетов APT и установите пакет из репозитория Noble:
sudo apt update
sudo apt install dnscrypt-proxy
Пакет находится в компоненте Universe в Ubuntu. Если APT не может его найти, убедитесь, что Universe включен, и запустите команду повторно sudo apt update. Не загружайте случайную сборку стороннего разработчика, чтобы обойти проблему с конфигурацией репозитория.
Прежде чем продолжить, убедитесь, что в Ubuntu установлен модуль сокетов systemd, используемый в процедуре Pi-hole:
systemctl list-unit-files dnscrypt-proxy.socket
В список файлов пакета Ubuntu Noble входит dnscrypt-proxy.socket, и инструкции Pi-hole используют этот сокет для предоставления локального DNS-слушателя, не конкурируя с собственной службой Pi-hole на порту 53.
Переопределение сокета с отключенными TCP и UDP слушателями и перенаправлением на localhost на порту 5053.
2. Привяжите прокси к локальному хосту, порт 5053.
Обычно DNS-сервис FTL в Pi-hole использует порт 53. Задайте dnscrypt-proxy другой порт и привязывайтесь только к самому серверу. Создайте переопределение в systemd:
sudo systemctl edit dnscrypt-proxy.socket
Добавьте эти строки в пустой файл переопределения, сохраните и выйдите:
Пустые назначения очищают исходные прослушиватели порта 53 блока сокета перед добавлением новых адресов. Важно сохранить прослушиватель по адресу 127.0.0.1: не меняйте его на 0.0.0.0для данной конфигурации на одном хосте, поскольку это откроет прокси-сервер на каждом сетевом интерфейсе.
Настройки TOML для dnscrypt-proxy, использующие активацию сокета systemd и выбирающие резолвер Cloudflare Security.
3. Выберите средство разрешения DoH.
Откройте файл конфигурации пакета:
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Установите следующие значения, сохранив при этом остальную часть конфигурации из пакета:
Пустой listen_addressesсписок указывает dnscrypt-proxy использовать активацию сокета systemd. В качестве примера в руководстве по dnscrypt-proxy на Pi-hole используется указанный резолвер Cloudflare Security; он применяет фильтрацию вредоносных программ резолвера в дополнение к собственным спискам блокировки Pi-hole. Если вы предпочитаете другого провайдера или не хотите дополнительной фильтрации безопасности, выберите актуальный DoH-резолвер из поддерживаемого публичного списка резолверов и используйте его точное имя сервера. Доступные имена и политики резолверов могут меняться, поэтому проверяйте текущую запись, а не копируйте устаревшее имя из старой публикации.
Перезапустите сокет и службу, чтобы изменения настроек и параметров TOML вступили в силу:
Затем протестируйте локальный слушатель, прежде чем изменять исходящий канал Pi-hole:
dig @127.0.0.1 -p 5053 example.com
Ответ DNS и код завершения, равный нулю, указывают на то, что локальный прокси-сервер ответил на запрос. Чтобы подтвердить, что выбранный вышестоящий сервер использует DoH, просмотрите последние сообщения службы и найдите резолвер, помеченный как OK (DoH):
Если digон не установлен, установите пакет Ubuntu dnsutils. Если запрос завершается по таймауту или в журнале не отображается DoH-резолвер, проверьте sudo systemctl status dnscrypt-proxy.socket dnscrypt-proxy.serviceжурнал служб перед продолжением.
Команда CLI Pi-hole для установки локального зашифрованного DNS-прокси в качестве вышестоящего DNS-сервера.
4. Направьте Pi-hole на локальный прокси-сервер.
Только после того, как локальный тест заработает, замените список upstream-серверов Pi-hole на список локальных слушателей:
Значение использует собственный формат исходных DNS-серверов Pi-hole: 127.0.0.1это локальный хост и #5053указывается нестандартный DNS-порт. Вы также можете ввести его 127.0.0.1#5053в разделе «Настройки» > «DNS» > «Пользовательские DNS-серверы исходных серверов» в административном интерфейсе Pi-hole. Снимите флажки с предварительно заданных общедоступных исходных серверов и сохраните изменения, иначе Pi-hole может продолжать отправлять некоторые запросы непосредственно к ним без использования DoH.
Проверьте полный путь
Отправьте запрос непосредственно в Pi-hole, используя его LAN-адрес вместо PIHOLE_IP:
dig @PIHOLE_IP example.com
Убедитесь, что поиск выполнен успешно, в журнале запросов Pi-hole отображается запрос клиента, а в статусе службы или журналах dnscrypt-proxy указано, что выбранный вышестоящий сервер доступен. В результате путь должен быть следующим: клиент — Pi-hole через вашу локальную сеть, затем Pi-hole — локальный прокси, затем прокси — DoH-резолвер. Это шифрует участок от сервера к резолверу; это не шифрует обычный DNS-трафик между клиентом и Pi-hole в локальной сети, не скрывает запросы от выбранного резолвера и не превращает Pi-hole в VPN.