Technitium DNS Server — это авторитетный рекурсивный DNS-сервер с открытым исходным кодом, разработанный для обеспечения конфиденциальности и безопасности. Он предлагает расширенные функции, такие как DNS через TLS (DoT) и DNS через HTTPS (DoH). Он оснащен современной и удобной веб-консолью для управления зонами, записями и журналами.
В этой статье показано, как развернуть DNS-сервер Technitium на Ubuntu 24.04 с помощью Docker Compose. В стек входит Traefik для безопасного доступа по протоколу HTTPS к панели администрирования.
1. Подготовка сервера
Перед установкой убедитесь, что порт 53 (используется для DNS) не занят системным systemd-resolved.
На большинстве дистрибутивов Linux (Ubuntu/Debian) этот сервис необходимо отключить:
bash
sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved
После этого отредактируйте файл /etc/resolv.conf и временно укажите другой DNS (например, 8.8.8.8), чтобы не потерять интернет до запуска контейнера.
2. Простой запуск (Базовая установка)
Самый быстрый способ запустить сервер — использовать docker run с Host-сетью. Это необходимо для корректной работы DHCP (если он нужен) и полного доступа к сети .
Используйте эту команду:
bash
docker run -d \ --name technitium-dns \ --network host \ --restart unless-stopped \ technitium/dns-server:latest
Разбор флагов:
--network host: Контейнер использует сеть хоста напрямую. Проброс портов (-p) здесь не нужен.--restart unless-stopped: Автозапуск после перезагрузки сервера.
Доступ к веб-интерфейсу:
Откройте браузер и перейдите по адресу http://<IP-вашего-сервера>:5380
- Логин:
admin - Пароль:
admin
3. Продвинутый запуск (Рекомендуемый способ)
Для production-среды лучше использовать Docker Compose с пробросом портов и постоянным томом данных. Это позволит сохранить настройки даже при пересоздании контейнера .
Шаг 1: Создайте директорию
bash
mkdir technitium-dns && cd technitium-dns
Шаг 2: Создайте файл docker-compose.yml
yaml
services:
dns-server:
container_name: technitium
image: technitium/dns-server:latest
restart: unless-stopped
# Пробрасываем порты для DNS и WEB
ports:
- "5380:5380/tcp" # Веб-интерфейс
- "53:53/udp" # DNS запросы
- "53:53/tcp" # DNS (TCP для больших ответов)
# Хранилище конфигурации
volumes:
- ./dns_config:/etc/dns
# Переменные окружения для первичной настройки
environment:
- TZ=Europe/Moscow # Ваш часовой пояс
- DNS_SERVER_DOMAIN=dns.local
- DNS_SERVER_LOG_USING_LOCAL_TIME=true
sysctls:
- net.ipv4.ip_local_port_range=1024 65535
Шаг 3: Запустите контейнер
bash
docker-compose up -d
4. Настройка блокировки рекламы (Ad Block)
После входа в админку (на порту 5380) необходимо включить фильтрацию:
- Перейдите в раздел Settings -> Blocking.
- Поставьте галочку Enable Blocking.
- Найдите раздел Allow/Block List URLs.
- В выпадающем списке Quick Add выберите один из популярных списков (например, OISD Full — один из лучших для блокировки всего) и нажмите Add .
- Прокрутите страницу вниз и нажмите Save Settings.
Примечание: После изменения настроек может потребоваться очистить кэш DNS на клиентских компьютерах.
5. Настройка сети (Router)
Чтобы все устройства в доме пользовались вашим новым DNS-сервером:
- Зайдите в настройки роутера (админка).
- Найдите раздел DHCP Server (или LAN Settings).
- В поле Primary DNS укажите IP-адрес сервера, на котором запущен Docker-контейнер.
- Сохраните настройки и перезагрузите роутер (или подождите, пока устройства обновят аренду IP) .
6. Расширенные возможности (Опционально)
Если вы используете продвинутую конфигурацию (например, хостите сервер в облаке и хотите HTTPS для веб-морды или используете DoH/DoT), воспользуйтесь расширенным конфигом.
Для доступа к веб-интерфейсу по HTTPS + DoH/DoT:
Раскомментируйте в docker-compose.yml следующие порты и переменные:
- 443: DNS-over-HTTPS (DoH) и веб-интерфейс HTTPS.
- 853: DNS-over-TLS (DoT).
- 53443: Альтернативный HTTPS для веб-интерфейса .
yaml
# Пример секции ports для максимальной конфигурации ports: - "5380:5380/tcp" # HTTP Web - "53443:53443/tcp" # HTTPS Web - "53:53/udp" # Обычный DNS - "53:53/tcp" - "443:443/tcp" # DoH - "853:853/tcp" # DoT
7. Устранение неполадок
- Ошибка «port 53 is already allocated»: Порт 53 занят. Убедитесь, что вы отключили
systemd-resolvedили остановили другой DNS-сервер на хосте . - Не применяются блокировки: Убедитесь, что в настройках роутера всем устройствам раздается IP вашего сервера как DNS, а не внешний (8.8.8.8).
- Сброс пароля: Если забыли пароль от веб-интерфейса, удалите файл конфигурации в папке
dns_config(или той, что замаплена в/etc/dns), чтобы сбросить настройки до стандартных.
Заключение
Вы успешно развернули Technitium DNS. Это решение полностью заменит стандартные DNS вашего провайдера или Google, добавив возможность фильтрации трафика на уровне сети без установки плагинов в браузер.