Когда я только начала копаться в настройках DNS, казалось, что это какая-то закулисная магия. Просто прописываешь IP-шники — и всё работает. Но как только я углубилась, оказалось, что DNS — это чуть ли не первое, что можно перехватить и подменить. А если на сервере крутится что-то важное (а у нас же всегда крутится), то безопасность должна начинаться именно с него. Так что сегодня — про то, как настроить DNS over HTTPS (DoH) на VPS и перестать зависеть от публичных DNS с сомнительной прозрачностью.
Что такое DNS over HTTPS простыми словами?
DNS over HTTPS (DoH) — это технология, которая шифрует DNS-запросы и отправляет их по HTTPS. Обычно, когда вы вводите сайт (допустим, example.com), ваш компьютер делает запрос к DNS-серверу, чтобы узнать IP-адрес сайта. Проблема в том, что обычные DNS-запросы не шифруются, и любой, кто сидит между вами и интернетом, может их подслушивать или даже подменить.
С DoH — всё иначе. DNS-запросы идут по тому же безопасному каналу, что и HTTPS, и даже провайдеру сложно понять, какие домены вы запрашиваете. А это уже уровень безопасности, достойный и для личных проектов, и для клиентов.
Зачем поднимать свой DoH-прокси?
Многие просто прописывают 1.1.1.1 (Cloudflare), 9.9.9.9 (Quad9) или 94.140.14.14 (AdGuard DNS), и всё. Но если вы:
- используете VPS как прокси или туннель;
- парсите сайты, и важно, чтобы DNS-запросы тоже шли шифрованными;
- или просто не хотите, чтобы даже DNS-шлюз знал, что вы делаете, —
то лучше всего поднять свой DNS-прокси через DoH. Именно так я и сделала. У меня на VPS теперь крутится dnsproxy, а вся телеметрия завязана на AdGuard, Cloudflare и резервный Quad9.
Что потребуется
- VPS с Ubuntu 22.04 (или другой Linux — команда подстроится);
- root-доступ;
- установленный
dnsproxyилиdnscrypt-proxy; - желательно —
systemdдля автозапуска сервиса.
Установка dnsproxy на VPS (Ubuntu)
Я выбрала dnsproxy от AdGuard — он лёгкий, понятный и поддерживает как DNS over HTTPS, так и DNS over TLS, если вдруг вы захотите переключиться.
- Скачиваем последнюю версию:
wget https://github.com/AdguardTeam/dnsproxy/releases/latest/download/dnsproxy-linux-amd64 -O dnsproxy
chmod +x dnsproxy
sudo mv dnsproxy /usr/local/bin/
- Создаём конфиг-файл:
sudo nano /etc/dnsproxy.conf
Пример содержимого:
listen=127.0.0.1:5353
upstream=https://dns.adguard.com/dns-query
upstream=https://1.1.1.1/dns-query
fallback=https://9.9.9.9/dns-query
timeout=10s
- Сервис для systemd:
sudo nano /etc/systemd/system/dnsproxy.service
Содержимое:
[Unit]
Description=DNSProxy
After=network.target
[Service]
ExecStart=/usr/local/bin/dnsproxy --config-path /etc/dnsproxy.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
- Активируем:
sudo systemctl daemon-reexec
sudo systemctl enable --now dnsproxy
Проверка работы
Теперь у вас запущен локальный DoH-прокси. Чтобы направить на него запросы:
sudo nano /etc/systemd/resolved.conf
Добавьте или измените строку:
DNS=127.0.0.1
Перезапустите:
sudo systemctl restart systemd-resolved
Проверяем:
dig google.com @127.0.0.1 -p 5353
Если всё работает — поздравляю, вы только что настроили DNS over HTTPS-сервер на своём VPS.
Таблица сравнения популярных DNS-серверов для DoH
| DNS-провайдер | IP-адрес | Поддержка DoH | Приватность | Замедления |
|---|---|---|---|---|
| Cloudflare | 1.1.1.1 | ✅ | Отличная | Низкие |
| AdGuard | 94.140.14.14 | ✅ | Высокая (фильтрация) | Средние |
| Quad9 | 9.9.9.9 | ✅ | Отличная, без логов | Средние |
8.8.8.8 | ✅ | Сомнительная | Низкие |
Почему не стоит доверять публичным DNS вслепую
Я не параноик, но видела, как Cloudflare временно откатывал изменения, а Google DNS может подменить ответы в некоторых юрисдикциях. С AdGuard — фильтрация работает отлично, но не все запросы проходят (особенно по API). Поэтому:
- для личного использования — AdGuard или Quad9;
- для парсинга — свой VPS с dnsproxy;
- для высокой скорости — Cloudflare.
Дополнительные советы
- Используйте
tcpdumpилиdigдля диагностики. - Rclone можно настроить с
--dnsопцией, чтобы использовать конкретный DoH-прокси. - Если ваш роутер поддерживает dns-over-https, можно перенаправить весь трафик с домашней сети через ваш VPS.
Итого…
Да, это не настройка «в один клик», но если вы хотя бы раз сталкивались с подменой DNS или у вас случались проблемы при деплое, то вы знаете, насколько важно, чтобы запрос dns.adguard.com не шёл открытым текстом. VPS легко справляется с этой задачей. А вместе с dnsproxy и парой минут настроек — у вас появляется персональный DoH-сервер, которому вы можете доверять.