Устновка DOH Debian12
Если у вас плохо работает DNS на сервере — резолвинг тормозит, запросы теряются — можно быстро починить это через DNS over HTTPS. Запросы будут идти по зашифрованному HTTPS вместо голого UDP, и резолвиться через Cloudflare 1.1.1.1.
Схема получается такая:
Предполагается Debian 12 и что BIND9 уже стоит. Если нет —
Это утилита от AdGuard, умеет принимать обычный DNS и отправлять его дальше по HTTPS.
Проверяем что работает:
Если отвечает IP-адресами — всё хорошо.
BIND поддерживает нестандартный порт в forwarders — просто указываем
Если оба отвечают — готово. Теперь весь DNS на сервере идёт через зашифрованный HTTPS-канал до Cloudflare, с кешированием на двух уровнях.
Схема получается такая:
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, с кешированием на двух уровнях.
Комментарии (0)
RSS свернуть / развернуть