Перейти к содержимому
Главная страница » Technitium DNS Server в Docker

Technitium DNS Server в Docker

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) необходимо включить фильтрацию:

  1. Перейдите в раздел Settings -> Blocking.
  2. Поставьте галочку Enable Blocking.
  3. Найдите раздел Allow/Block List URLs.
  4. В выпадающем списке Quick Add выберите один из популярных списков (например, OISD Full — один из лучших для блокировки всего) и нажмите Add .
  5. Прокрутите страницу вниз и нажмите Save Settings.

Примечание: После изменения настроек может потребоваться очистить кэш DNS на клиентских компьютерах.

5. Настройка сети (Router)

Чтобы все устройства в доме пользовались вашим новым DNS-сервером:

  1. Зайдите в настройки роутера (админка).
  2. Найдите раздел DHCP Server (или LAN Settings).
  3. В поле Primary DNS укажите IP-адрес сервера, на котором запущен Docker-контейнер.
  4. Сохраните настройки и перезагрузите роутер (или подождите, пока устройства обновят аренду 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, добавив возможность фильтрации трафика на уровне сети без установки плагинов в браузер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *