Как установить и настроить Technitium DNS на VPS
Если у вас есть VPS с сайтами или сервисами, рано или поздно встаёт вопрос: чей DNS-резолвер стоит между вами и интернетом — провайдерский, публичный вроде Google или Cloudflare с логированием запросов, или свой собственный. Technitium DNS Server закрывает эту задачу почти полностью: это авторитативный и рекурсивный DNS-сервер с полноценной веб-панелью, блокировкой рекламы на уровне сети, DNSSEC и поддержкой DoH/DoT — и всё это настраивается кликами, а не правкой zone-файлов руками. Разберём установку и базовую настройку на чистом VPS от начала до рабочей конфигурации.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что даёт Technitium и зачем свой DNS-сервер
Technitium — open-source DNS-сервер на .NET, который одновременно умеет быть: рекурсивным резолвером (сам ходит к корневым серверам или форвардит запросы через DoH/DoT к апстримам), авторитативным сервером для ваших собственных доменов (замена регистраторского NS или BIND/PowerDNS), и сетевым блокировщиком рекламы и трекеров по спискам — как Pi-hole или AdGuard Home, только с зонами, DNSSEC и API из коробки.
Собственный DNS-резолвер даёт три практических выгоды: приватность запросов (провайдер и Wi-Fi-точка не видят, какие домены вы резолвите, если использовать DoH/DoT), контроль над блокировками на уровне всей сети без установки клиентов на каждое устройство, и возможность быть авторитативным сервером для своих доменов без зависимости от чужой DNS-панели. Если вы уже сравнивали варианты, у нас есть отдельные материалы про установку AdGuard Home на VPS и про PowerDNS на VPS — Technitium закрывает оба сценария сразу в одном сервисе, но за это платит чуть более тяжёлым рантаймом (.NET вместо лёгких C-демонов).
Требования к серверу и подготовка
Для личного использования или небольшой команды хватит 1 vCPU и 1 GB RAM — сервис лёгкий в простое. Если планируете держать несколько зон, активную блокировку с большими списками и десятки клиентов, закладывайте 2 GB RAM с запасом. Диска достаточно 10–15 GB — логи запросов и списки блокировок места много не занимают, если не хранить историю месяцами.
Дальше — Ubuntu 24.04 LTS (подойдёт и Debian 12):
sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname dns1.example.com
Главная грабля на свежем Ubuntu — systemd-resolved уже слушает 127.0.0.53:53 и конфликтует с Technitium, которому нужен порт 53 на всех интерфейсах. Отключаем stub-listener до установки:
sudo sed -i 's/#\?DNSStubListener=.*/DNSStubListener=no/' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved
sudo rm -f /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
Последняя команда временно возвращает серверу возможность резолвить имена на время установки — после запуска Technitium вы либо пропишете resolv.conf на 127.0.0.1, либо оставите его как есть, если DNS-сервер здесь только для внешних клиентов, а не для самого хоста.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка: скрипт или Docker
Проще всего — официальный установочный скрипт, который сам определяет дистрибутив и ставит систему как systemd-сервис:
curl -sSL https://download.technitium.com/dns/install.sh | sudo bash
Скрипт разворачивает DNS на порту 53 (UDP/TCP) и веб-консоль на 5380 (HTTP) и 53443 (HTTPS, самоподписанный сертификат до тех пор, пока вы не подключите свой). Проверяем:
sudo systemctl status dns
sudo systemctl enable dns
Если сервер уже держит Docker-стек, логичнее развернуть Technitium контейнером — тогда бэкап, обновление и перенос сводятся к работе с одним docker-compose.yml, как и с остальными сервисами (см. чек-лист docker-compose для продакшена):
services:
technitium-dns:
image: technitium/dns-server:latest
container_name: technitium-dns
restart: unless-stopped
ports:
- "53:53/udp"
- "53:53/tcp"
- "5380:5380/tcp"
- "53443:53443/tcp"
- "853:853/tcp"
volumes:
- ./technitium-config:/etc/dns
environment:
- DNS_SERVER_DOMAIN=dns1.example.com
- DNS_SERVER_ADMIN_PASSWORD=ChangeMe_StrongPass!
Переменная DNS_SERVER_ADMIN_PASSWORD задаёт пароль администратора сразу при первом запуске контейнера — без неё образ откроет мастер начальной настройки в веб-панели. Полный список переменных окружения периодически пополняется, актуальный держат в описании образа technitium/dns-server на Docker Hub — стоит свериться перед деплоем, если нужна тонкая автоматизация.
Первый вход в веб-панель и базовые настройки
Открываем https://IP-сервера:53443 (или http://IP:5380, если TLS пока не нужен). При первом заходе без переменной с паролем откроется мастер: создаёте логин администратора, задаёте доменное имя сервера, выбираете — работать как чисто рекурсивный резолвер или сразу настроить форвардинг на внешние апстримы.
Важный момент безопасности сразу после установки: если порт 53 открыт всему интернету без ограничений, сервер превращается в open resolver — его могут использовать для DNS amplification атак на третьи стороны. Ограничьте, кто может слать рекурсивные запросы, через Settings → General → Recursion → Allow Recursion Only For Private Networks либо файрволом:
sudo ufw allow from 203.0.113.10 to any port 53
sudo ufw allow from 203.0.113.0/24 to any port 5380 proto tcp
sudo ufw deny 53
Первое правило открывает DNS доверенным IP, второе ограничивает саму админ-панель, третье закрывает 53-й порт для всех остальных — порядок правил в ufw имеет значение, самое узкое разрешение должно идти раньше общего запрета.
Форвардеры настраиваются в Settings → DNS → Forwarders: можно указать публичные резолверы (Cloudflare, Quad9) по обычному UDP/TCP или сразу по DoH/DoT, чтобы даже запросы от вашего сервера к апстриму шли зашифрованными.
Блокировка рекламы и трекеров
Раздел Settings → Blocking включает сетевую блокировку по спискам доменов. Добавляете URL блок-листов (популярный вариант — hosts-файл проекта StevenBlack или списки oisd), задаёте интервал автообновления:
Enable Blocking: Yes
Blocking Type: NxDomain
Block List URLs: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
Update Interval: 24 hours
Свои исключения и ручные блокировки — во вкладках Allowed/Blocked того же раздела, без необходимости редактировать сами списки. Если нужна более тонкая логика — разные блок-листы для разных сетей или групп клиентов, — в Settings → Apps устанавливается официальное приложение Advanced Blocking, которое добавляет политики по группам и сетям поверх базового движка. Это принципиальное отличие от классического AdGuard Home: там группы клиентов тоже есть, но зоны и DNSSEC на том же сервисе не поднять.
Свои зоны и DNSSEC
Zones → Add Zone → Primary создаёт авторитативную зону для вашего домена. Дальше через веб-интерфейс добавляются записи A/AAAA/CNAME/MX/TXT/SRV — без ручного редактирования zone-файлов:
Zone: example.com
Type: Primary
Records: A example.com → 203.0.113.20
MX example.com → 10 mail.example.com
TXT example.com → "v=spf1 mx ~all"
DNSSEC включается прямо в настройках зоны — Zone → DNSSEC → Sign Zone, алгоритм ECDSAP256SHA256, ротация ключей автоматическая. После подписи нужно передать DS-запись регистратору домена, иначе цепочка доверия не замкнётся и валидирующие резолверы будут просто отбрасывать ответы вашей зоны. Если домен уже управляется с сертификатами через Let's Encrypt — процесс похож на то, что описано в статье про настройку Let's Encrypt SSL на VPS: те же принципы проверки владения, только для DNS, а не для HTTPS.
Для делегирования NS на свой сервер понадобятся glue-записи у регистратора, если NS находится в том же домене, который обслуживает (ns1.example.com для зоны example.com).
DoH и DoT: шифрование самих DNS-запросов
Обычный DNS на 53 порту летит открытым текстом — любой узел на пути видит, какие домены вы резолвите. Technitium поддерживает DNS-over-TLS (порт 853) и DNS-over-HTTPS (порт 443, отдельный от вашего веб-сервера, если он тоже слушает 443 — тогда нужен отдельный IP или reverse proxy с SNI-роутингом). Включаются оба протокола в Settings → Optional Protocols, туда же загружается TLS-сертификат — можно взять готовый через certbot и подключить пути к файлам, либо использовать встроенную интеграцию с Let's Encrypt, если она доступна в вашей версии.
После включения клиенты настраиваются так:
- Firefox:
about:preferences→ DNS over HTTPS → Custom →https://dns1.example.com/dns-query - Android: Settings → Network → Private DNS → hostname
dns1.example.com(использует DoT на 853 порту) - Windows 11: встроенная поддержка DoH через
netsh dns add encryption
Полезно связать это с более широкой темой — у нас есть материал про DNS-over-HTTPS и его влияние на доступ к сервисам, если хотите понять, где DoH помогает, а где создаёт свои нюансы (например, усложняет фильтрацию на уровне сети, если клиенты используют чужой DoH в обход вашего блокировщика).
Бэкап, обновления и мониторинг
Settings → Backup & Restore экспортирует конфигурацию, зоны, блок-листы, установленные приложения и, по желанию, логи запросов в один zip-архив. Разумная практика — тянуть эти бэкапы на внешнее хранилище по расписанию, а не полагаться на снимок диска VPS как единственную копию.
Обновление через package-установку делается стандартно:
sudo apt update && sudo apt upgrade technitium-dns-server -y
sudo systemctl restart dns
В Docker-варианте — docker compose pull && docker compose up -d. В самой веб-панели также есть индикатор новой версии и кнопка обновления для установок через install-скрипт.
Раздел Logs → Query Logs пишет журнал запросов (SQLite по умолчанию, можно подключить внешний бэкенд через приложения логирования) — удобно для разбора инцидентов и для аудита, кто и когда резолвил конкретный домен, если это требуется по внутренним политикам безопасности.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Чем Technitium отличается от AdGuard Home и Pi-hole?
Все три блокируют рекламу по DNS-спискам, но Technitium дополнительно умеет быть полноценным авторитативным сервером с зонами и DNSSEC, а также нативно поддерживает DoH/DoT/DoQ без сторонних прокси. AdGuard Home и Pi-hole проще в освоении, если нужна только блокировка.
Нужен ли отдельный VPS под DNS-сервер?
Нет, можно ставить рядом с другими сервисами на той же машине — сервис лёгкий. Отдельный сервер имеет смысл, если DNS должен быть доступен даже при недоступности основного проекта, либо для изоляции по соображениям безопасности.
Как защититься от open resolver и DNS amplification атак?
Ограничьте рекурсию только для доверенных сетей в настройках и файрволом закройте 53 порт для всех, кроме своих IP. Публичным авторитативным резолвером (только для своих зон, без рекурсии для чужих) быть можно и без этого ограничения.
Можно ли использовать Technitium как основной DNS для домена вместо регистраторского?
Да, для этого создаётся Primary zone, добавляются нужные записи, а у регистратора домена меняются NS на адрес вашего сервера с корректными glue-записями.
Что делать, если после установки порт 53 занят и служба не стартует?
Почти всегда виноват systemd-resolved на Ubuntu — отключите его stub-listener, как описано в разделе про подготовку сервера, и перезапустите сначала resolved, потом службу dns.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →