Установка Pi-hole в контейнере

Pi-hole используется в качестве DNS сервера для блокировки рекламы, телеметрии и сайтов по доменным именам, включая wildcard формат.

Профессиональная настройка MikroTik
Telegram: @Engineer_MikroTik

Поддерживаемое оборудование

Контейнеры работают только на ARM и ARM64 MikroTik, а так же X86 RouterOS и CHR.
Идеальным домашним решением является hAP AX3 и RB5009, где есть USB порт для установки USB Flash.

Необходимо минимум 128Мб места на диске. То есть например hAP AC2 со своими 16Мб памяти не подходит, либо установка контейнера займет всю память и не останется места для настроек.

Подготовка MikroTik

  1. Обновляем систему до актуальной long-term
  2. Включаем автоматическое обновление загрузчика
  3. Ставим пакет Container через Package List
  4. Устанавливаем USB Flash и форматируем ее в ext4
  5. Активируем функцию контейнеров

Установка Pi-hole

Задаем параметры через Envs
Задаем параметры через Envs
/container envs
add key=DNSMASQ_USER list=pihole_envs value=root
add key=TZ list=pihole_envs value=Europe/Moscow
add key=WEBPASSWORD list=pihole_envs value=1q2w3e4r
Монтируем директории внутри контейнера
Монтируем директории внутри контейнера
/container mounts
add dst=/etc/pihole name=etc_pihole src=/usb1/etc
add dst=/etc/dnsmasq.d name=dnsmasq_pihole src=/usb1/etc-dnsmasq.d
Задаем параметры работы контейнеров, URL откуда ставим и где храним данные
Задаем параметры работы контейнеров, URL откуда ставим и где храним данные
/container config
set layer-dir=usb1/layer_dir memory-high=300.0MiB registry-url=https://registry-1.docker.io tmpdir=usb1/tmp_dir
Создаем VETH интерфейс для контейнера
Создаем VETH интерфейс для контейнера
Если контейнер будет в общем bridge с основной сетью — можно указать DHCP
/interface veth
add address=172.31.255.3/24 dhcp=no gateway=172.31.255.1 gateway6="" mac-address=0C:A5:1D:9E:17:F8 name=PIHOLE-TUN
Добавляем его внутрь bridgeLAN или создаем отдельный CONTAINER
Добавляем его внутрь bridgeLAN или создаем отдельный CONTAINER

Ставим контейнер через New Terminal:

/container
add check-certificate=no dns=172.31.255.1 envlists=pihole_envs interface=PIHOLE-TUN mounts=etc_pihole,dnsmasq_pihole name=pihile-mikrotik remote-image=pihole/pihole root-dir=usb1/docker/pihole-tun workdir=
Container > LogВидим успешную установку
Container > Log
Видим успешную установку
Запускаем контейнер через Start
Запускаем контейнер через Start
Container > LogЛовим пароль на вход
Container > Log
Ловим пароль на вход
http://172.31.255.3/admin/login адрес для входа в настройки Pi-hole
http://172.31.255.3/admin/login адрес для входа в настройки Pi-hole
Если забыли пароль или не успели посмотреть - его можно сбросить
Если забыли пароль или не успели посмотреть — его можно сбросить
container/shell pihile-mikrotik
pihole setpassword 1q2w3e4r
Установка Pi-hole в контейнере
Видим статистику и что в систему уже загружен список доменов
Видим статистику и что в систему уже загружен список доменов

Настройка Pi-hole

Списки уже предустановлены, но можно добавить свои
Списки уже предустановлены, но можно добавить свои, например взять с 4pda
Сайт можно заблокировать по wildcard, например dzen.ru и его поддомены будут забликированы
Сайт можно заблокировать по wildcard, например dzen.ru и его поддомены будут забликированы
Автоматически создается RegEx выражение
Автоматически создается RegEx выражение

Замена DNS

Чтобы работала блокировка, нужно клиентам сети в качестве DNS сервера указать IP адрес Pi-hole.
Меняем DNS сервер в DHCP Server
Меняем DNS в DHCP Server
Чтобы применять отдельный DNS точечно для отдельных хостов, можно использовать DHCP Option 6.
Создаем опцию 6 с указанием сервера Pi-hole
Создаем опцию 6 с указанием сервера Pi-hole
Затем применяем ее на нужном DHCP клиенте
Затем применяем ее на нужном DHCP клиенте
Если Pi-hole установлен за отдельным Bridge - Нужно в Settings > DNS режим Expert разрешить подключение с других сетей
Если Pi-hole установлен за отдельным Bridge — Нужно в Settings > DNS режим Expert разрешить подключение с других сетей

Перехват DNS

Можно сделать перехват DNS запросов, если у пользователей указан статический DNS.

IP > Firewall > NATЛовим dstnat от Src. Address List udp:53
IP > Firewall > NAT
Ловим dstnat от Src. Address List udp:53
И через dst-nat отправляем на IP адрес Pi-hole, где работает DNS
И через dst-nat отправляем на IP адрес Pi-hole, где работает DNS
Можно увидеть статистику блокировок в Query Log
Можно увидеть статистику блокировок в Query Log
Профессиональная настройка MikroTik
Telegram: @Engineer_MikroTik
Настройка MikroTik