Устновка DOH Debian12

Если у вас плохо работает DNS на сервере — резолвинг тормозит, запросы теряются — можно быстро починить это через DNS over HTTPS. Запросы будут идти по зашифрованному HTTPS вместо голого UDP, и резолвиться через Cloudflare 1.1.1.1.

Схема получается такая:

resolv.conf → BIND:53 (кеш) → dnsproxy:5353 → 1.1.1.1/dns-query (DoH)

Предполагается Debian 12 и что BIND9 уже стоит. Если нет —
apt install bind9
.

Шаг 1. Ставим dnsproxy


Это утилита от AdGuard, умеет принимать обычный DNS и отправлять его дальше по HTTPS.

curl -sL https://github.com/AdguardTeam/dnsproxy/releases/download/v0.81.3/dnsproxy-linux-amd64-v0.81.3.tar.gz -o /tmp/dnsproxy.tar.gz
tar -xzf /tmp/dnsproxy.tar.gz -C /tmp/
sudo install /tmp/linux-amd64/dnsproxy /usr/local/bin/dnsproxy
dnsproxy --version

Шаг 2. Создаём systemd сервис


sudo tee /etc/systemd/system/dnsproxy.service > /dev/null << 'EOF'
[Unit]
Description=AdGuard DNS Proxy (DoH upstream)
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/dnsproxy \
    --listen=127.0.0.1 \
    --port=5353 \
    --upstream=https://1.1.1.1/dns-query \
    --upstream=https://1.0.0.1/dns-query \
    --fallback=1.1.1.1 \
    --cache
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now dnsproxy

Проверяем что работает:

dig @127.0.0.1 -p 5353 google.com +short

Если отвечает IP-адресами — всё хорошо.

Шаг 3. Настраиваем BIND форвардить в dnsproxy


BIND поддерживает нестандартный порт в forwarders — просто указываем
port 5353
.

sudo tee /etc/bind/named.conf.options > /dev/null << 'EOF'
options {
    directory "/var/cache/bind";

    forwarders {
        127.0.0.1 port 5353;
    };
    forward only;

    dnssec-validation no;
    auth-nxdomain no;
    allow-recursion { 127.0.0.1; ::1; };
    allow-transfer { "none"; };
    hostname none;
    server-id none;
    version none;
};
EOF

sudo named-checkconf
sudo systemctl reload bind9

Шаг 4. Прописываем resolv.conf


chattr +i
блокирует файл от перезаписи — например, от DHCP или cloud-init.

sudo chattr -i /etc/resolv.conf 2>/dev/null
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
sudo chattr +i /etc/resolv.conf

Проверка


dig google.com +short
dig gurumafia.ru +short

Если оба отвечают — готово. Теперь весь DNS на сервере идёт через зашифрованный HTTPS-канал до Cloudflare, с кешированием на двух уровнях.
  • ?
  • 05 мая 2026, 13:29
  • admin

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.