3
сентябрь
2026
11:11

Запуск в Linux DOH - разрешения имён в IP-адреса DNS через HTTPS

3 сентябрь 2026 11:11

Данная статья является дополнением к настройке кеширующего DNS-сервера systemd-resolved.

Введение

Данная статья не описывает методы обхода блокировок, а посвящена способу разрешения имён DNS через HTTPS с кешированием, для повышения защищённости компьютеров под управлением ОС Linux.

Дело в том, что перед обращением к любому веб-сайту запросы к любому DNS-серверу, не важно [бесплатному, независимому или государственному] передаются в виде открытого текста. Что создаёт возможности:
1) перехвата таких обращений любым из компютеров в сегменте локальной сети.
2) анализ запросов к DNS на уровне провайдера или вышестоящего провайдера (при рекурсивных DNS).
3) возможность вмешательства в процесс передачи таких сообщений (выдача фальшивых - например, пустых - ответов).
4) многие DNS-серверы не имеют фильтрации от мошеннических, вредоносных или сайтов с рекламой. Тогда как многие специализированные DNS-серверы имеют возможность запрета получения ответов, например, с автоматическим ограничением ссылок на рекламные, мошеннические и вредоносные домены ("семейный поиск").

Использование DNSSEC решает только проблему подписей, запрос "прозрачен", чётко виден как и раньше при обычном DNS.
Использование DNS поверх TLS (DOT): не работает по неизвестной причине (мне не удалось его запустить).
Использование DNS поверх HTTPS (DOH): работает (цель данной статьи рассказать об опыте использования).

Описание рашения: запуск DOH в ОС Linux

Потребуется:
1) выполнить установку и настройку systemd-resolved,
2) установить пакет dnscrypt-proxy
3) настроить пакет dnscrypt-proxy при помощи файла конфигурации с расширением toml
4) запустить службу dnscrypt-proxy
5) перенаправить запросы кеширующего DNS-сервера systemd-resolved на dnscrypt-proxy.
6) выполнить настройку веб-браузера (отключить в нём свой DNS-over-HTTPS для работы через кеширующий локальный DNS-сервер).

Действия по шагам

1) Выполняем установку, настройку кеширующего DNS-сервера systemd-resolvedе.
2) Устанавливаем пакет dnscrypt-proxy

sudo apt update
sudo apt install dnscrypt-proxy

3) Создаем файл конфигурации /etc/dnscrypt-proxy/dnscrypt-proxy.toml

sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml

и добавляем в него текст:

# Empty listen_addresses to use systemd socket activation
listen_addresses = ['127.0.0.1:5053']
server_names = ['google']

# Use reachable
ipv4_servers=true
ipv6_servers=false

# Enable DoH specifically:
doh_servers = true
dnscrypt_servers = false  # Only DoH, no DNScrypt
require_dnssec=false
require_nolog=true
require_nofilter=true
timeout=5000
keepalive=30
cert_refresh_delay=240
ignore_system_dns=true
netprobe_timeout=60
netprobe_address='9.9.9.9:53'
block_ipv6=true
block_unqualified=true
reject_ttl=10
cache=true
cache_size=4096
cache_min_ttl=2400
cache_max_ttl=86400
cache_neg_min_ttl=60
cache_neg_max_ttl=600

[nx_log]
  file = '/var/log/dnscrypt-proxy/nx.log'

[sources]
  [sources.'public-resolvers']
  url = 'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md'
  cache_file = '/var/cache/dnscrypt-proxy/public-resolvers.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 73
  prefix = ''
[sources.relays]
  url = 'https://download.dnscrypt.info/resolvers-list/v3/relays.md'
  cache_file = '/var/cache/dnscrypt-proxy/relays.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 73
  prefix = ''

Сохранение и выход: Ctrl+S, Ctrl+X

Перезапускаем службу:

sudo systemctl restart dnscrypt-proxy

Комментарий:

  • кеширующий DNS-сервер systemd-resolved работает на 53 порту (занят)
  • новая служба dnscrypt-proxy будет работать на порту 5053.
  • разрешение имен здесь через [google], службу DNS over HTTPS (соответствует https://dns.google/dns-query – RFC 8484 (GET и POST))
  • IPv4 используется, IPv6 отключен
  • серверы DOH - используются
  • серверы DNSCRYPT отключены
  • опция DNSSEC отключена
  • журнал запросов отключен
  • опция фильтров доменов отключена
    ...
  • IP-адрес обчного DNS сервера для разрешения первого запроса netprobe_address='9.9.9.9:53' к public-resolvers

Разрешение имён через DOH действует на всю операционную систему Linux, на все программы и утилиты в ней (dig, ping, traceroute).

4) Запуск службы dnscrypt-proxy

sudo systemctl enable dnscrypt-proxy
sudo systemctl start dnscrypt-proxy

5) Перенаправление запросов DNS

Если Вами была создана символьная ссылка,

ls -l /etc/resolv.conf

Только если ссылка есть:

sudo rm /etc/resolv.conf

Открываем файл /etc/resolv.conf на редактирование

sudo nano /etc/resolv.conf

И добавляем в него текст:

nameserver 127.0.0.53

Что перенаправит согласно /etc/resolv.conf запросы приложений "ping", "dig" на systemd-resolved по локальному адресу 127.0.0.53.

Который будет передавать запросы DNS на dnscrypt-proxy на 127.0.0.1:5053, для чего редактируем файл:

sudo nano /etc/systemd/resolved.conf

Содержимое файла привести к виду:

[Resolve]

Который перенаправит запросы через DOH (DNS over HTTPS) в Интернет.

Сохранение и выход: Ctrl+S, Ctrl+X

Перезапускаем службу:

sudo systemctl restart systemd-resolved

Проверка

Прежде всего, проверьте состояние dnscrypt-прокси и кеширующего DNS-сервера

sudo systemctl status dnscrypt-proxy
sudo systemctl status systemd-resolved

Ошибок быть не должно, а состояние "Active: active (running)" и "Now listening to 127.0.0.1:5053 [TCP]" у первого и такое же состояние "Active: active (running)" у второго.

time resolvectl query lenta.com
lenta.com: 178.248.232.88

-- Information acquired via protocol DNS in 53.8ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

real    0m0,065s
user    0m0,000s
sys 0m0,010s
time resolvectl query lenta.com
lenta.com: 178.248.232.88

-- Information acquired via protocol DNS in 2.4ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

real    0m0,009s
user    0m0,003s
sys 0m0,004s

Также, выполните подряд две команды:

dig ya.ru
dig ya.ru

Разрешение имён и кеширование ответов на запросы работает.

Замечание: команда resolvectl statistics выдает неправильные значения "Cache Misses", можно игнорировать. Главное - это время ответа на запрос равно нулю.

Теперь остановим службу и посмотрим, сможет ли работать разрешение имён DNS без dnscrypt-proxy?

sudo pkill -STOP dnscrypt-proxy

Теперь проверка "висит"

resolvectl query lenta.com

Ctrl+C

Запускаем снова и проверяем работу:

sudo pkill -CONT dnscrypt-proxy
resolvectl query lenta.com

Разрешение имён снова работает! За основу методики тестирования взят документ.

6) Настройка веб-браузеров

В веб браузерах нужно отключить их DNS over HTTPS, т.к. все запросы идут через локальный кеширующий DNS, которые перенаправляет их через системный dnscrypt-proxy.

Mozilla Firefox:

  • Edit - Settings - Приватность и защита - DNS over HTTPS - Выключен (Use your default DNS resolver).
    Google Chrome, Chromium-Gost:
  • Настройки - Конфиденциальность и безопасность - Использовать безопасный DNS сервер - Выключен.

Проверка: browserleaks.com DNS leak test - https://browserleaks.com/dns

7) Указание кеширующего DNS-сервера в настройках сети

В настройках подключения к локальной сети или Wi-Fi, как было указано в предыдущей статье, нужно указать DNS: 127.0.0.53, который соответствует службе systemd-resolved.

Возможные значения для опции "server_names = [...]"

Некоторые варианты

  • controld-unfiltered - Control D — бесплатный DNS-сервер без фильтрации. Не блокирует и не переписывает домены. Не ведет журнал запросов. Глобальная сеть Anycast. https://controld.com/free-dns Управляется компанией Control D. Страница сервиса: https://controld.com/free-dns
  • dnsforfamily-doh - DNS for Family — сервис безопасного поиска. Блокирует домены, относящиеся к контенту для взрослых, азартным играм, наркотикам, вредоносному ПО, мошенничеству/фишингу, прокси/анонимайзерам и рекламе; черный список обновляется ежедневно. Обеспечивает безопасный поиск в Google, YouTube, Brave, Ecosia, Bing, DuckDuckGo и Yandex. Социальные сети, такие как Facebook и Instagram, не блокируются. DNS-запросы не регистрируются. Бесплатный сервис. Предоставляется: https://dnsforfamily.com
  • google - Общедоступный DNS-сервер Google. Глобальная служба Anycast, управляемая Google. Сервис управляется Google Public DNS. Страница сервиса: https://developers.google.com/speed/public-dns
  • yandex-safe - Yandex Public DNS Safe resolver. Anycast-сервис от Yandex с фильтрацией вредоносного ПО. Сервис управляется компанией Yandex. Страница сервиса: https://dns.yandex.com/ Может регистрировать запросы.

Для соответствия имён, см. домашнюю страницу - https://dnscrypt.info/public-servers/.

Результат

Работа dnscrypt-proxy на локальном порту 5053/UDP, т.е. по адресу 127.0.0.1:5053 или
В помощью ему кеширующий DNS systemctl-resolved по адресу 127.0.0.1:53 или 127.0.0.53:53.

dig @127.0.0.1:5053 ya.ru

Удаление dnscrypt-proxy

Если потребуется, пакет dnscrypt-proxy можно удалить:

sudo apt remove dnscrypt-proxy

Источник

Данная статья сильно отличается от официальной инструкции, где установка dnscrypt-proxy на порту 53, и не используется systemd-resolved.

Основным источником является:



Похожие публикации