Когда я только начала копаться в настройках DNS, казалось, что это какая-то закулисная магия. Просто прописываешь IP-шники — и всё работает. Но как только я углубилась, оказалось, что DNS — это чуть ли не первое, что можно перехватить и подменить. А если на сервере крутится что-то важное (а у нас же всегда крутится), то безопасность должна начинаться именно с него. Так что сегодня — про то, как настроить DNS over HTTPS (DoH) на VPS и перестать зависеть от публичных DNS с сомнительной прозрачностью.
Что такое DNS over HTTPS простыми словами?
DNS over HTTPS (DoH) — это технология, которая шифрует DNS-запросы и отправляет их по HTTPS. Обычно, когда вы вводите сайт (допустим,
example.com
С DoH — всё иначе. DNS-запросы идут по тому же безопасному каналу, что и HTTPS, и даже провайдеру сложно понять, какие домены вы запрашиваете. А это уже уровень безопасности, достойный и для личных проектов, и для клиентов.
Зачем поднимать свой DoH-прокси?
Многие просто прописывают
1.1.1.1
9.9.9.9
94.140.14.14
- используете VPS как прокси или туннель;
- парсите сайты, и важно, чтобы DNS-запросы тоже шли шифрованными;
- или просто не хотите, чтобы даже DNS-шлюз знал, что вы делаете, —
то лучше всего поднять свой DNS-прокси через DoH. Именно так я и сделала. У меня на VPS теперь крутится
dnsproxy
AdGuard
Cloudflare
Quad9
Что потребуется
- VPS с Ubuntu 22.04 (или другой Linux — команда подстроится);
- root-доступ;
- установленный или
dnsproxy
;dnscrypt-proxy
- желательно — для автозапуска сервиса.
systemd
Установка dnsproxy на VPS (Ubuntu)
Я выбрала
dnsproxy
- Скачиваем последнюю версию:
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
- для личного использования — AdGuard или Quad9;
- для парсинга — свой VPS с dnsproxy;
- для высокой скорости — Cloudflare.
Дополнительные советы
- Используйте или
tcpdump
для диагностики.dig
- Rclone можно настроить с опцией, чтобы использовать конкретный DoH-прокси.
--dns
- Если ваш роутер поддерживает dns-over-https, можно перенаправить весь трафик с домашней сети через ваш VPS.
Итого…
Да, это не настройка «в один клик», но если вы хотя бы раз сталкивались с подменой DNS или у вас случались проблемы при деплое, то вы знаете, насколько важно, чтобы запрос dns.adguard.com
dnsproxy
Делаем год чуть длиннее
365 дней VPS? А как насчёт 395?