Pi-Hole (домашний сервер)

Порой хочется сделать фильтрацию нежелательного контента. Уже многие знают про плагины в браузеры, типа AdBlock и их разновидности. Так же есть еще целая куча программ, которая ставится на компьютер и что-то там фильтрует. А еще есть антивирусы, которые имеют ту же функцию (зачастую в платном варианте).

Бродя по просторам интернета наткнулся я на статью с проектом Pi-Hole. Крутость этой штуки в том, что она ставится на одноплатник и просто работает. Ну у нас же есть уже готовый домашний сервер! Тогда приступим.

Pi-Hole (домашний сервер)

Немного теории

Основной принцип работы данного сервера, это обычный DNS-сервер. Через него проходят DNS-запросы и проверяются нет ли записи в черном списке. Если же нету, то выполняется forward-запрос на внешний DNS-сервер. Таким образом мы просто фильтруем домены. Все достаточно просто.

Практика

И так, как обычно по канонам мастерства нашей настройки создадим файл /opt/pihole/docker-compose.yml следующего содержимого:


version: "2.4"

services:
  pihole:
    image: pihole/pihole:2021.11
    restart: unless-stopped
    volumes:
      - type: bind
        source: /mnt/nfs/pihole/etc-pihole/
        target: /etc/pihole/
      - type: bind
        source: /mnt/nfs/pihole/etc-dnsmasq.d/
        target: /etc/dnsmasq.d/
    mem_limit: 256m
    mem_reservation: 64m
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8086:80/tcp"
    environment:
      TZ: 'Europe/Moscow'
      WEBPASSWORD: <пароль для web-интерфейса>
    cap_add:
      - NET_ADMIN

После создаем файл /etc/systemd/system/pihole.service:


[Unit]
Description=PiHole docker-compose
Requires=docker.service
After=docker.service

[Service]
Restart=always

WorkingDirectory=/opt/pihole/

# Compose up
ExecStart=/usr/bin/docker-compose -f docker-compose.yml up

# Compose down, remove containers
ExecStop=/usr/bin/docker-compose -f docker-compose.yml down

[Install]
WantedBy=multi-user.target

Далее создаем пару директорий:


mkdir -p /mnt/nfs/pihole/etc-pihole
mkdir -p /mnt/nfs/pihole/etc-dnsmasq.d

И все это дело запускаем:


systemctl daemon-reload
systemctl enable pihole && systemctl enable pihole

После заходим по адресу http://<адрес вашего сервера>:8086 и смотрим, что все работает.

Настройка домашней сети

Теперь требуется немного настроить домашнюю сеть. Так как дома обычно используется роутер для подключения к интернету, то он является шлюзом. Обычно при включении компьютера роутер выдает адрес и некоторые сетевые настройки. Нас интересует настройка DNS. Для этого идем в роутер и в настройках DHCP-сервера указываем IP-адрес нашего нового DNS-сервера.

Если же на устройствах настроена «статика», то настраиваем уже устройства.

Решаем проблемы

После того, как зашли в web-интерфейс попробуем добавить домен в whitelist или blacklist. Если вываливается ошибка, то придется кое-что сделать вручную. Для этого в консоли выполняем:


docker exec -it pihole_pihole_1 chown -R www-data:pihole /etc/pihole
docker exec -it pihole_pihole_1 chmod -R 744 /etc/pihole

В данном случае мы выставляем права доступа для файлов. Так у меня случае они устанавливались не корректно (а может и корректно). В любом случае мне помогло.

Проверка

Чтобы проверить как это все работает идем по адресу https://d3ward.github.io/toolz/adblock.html и проверяем результат. Если все устраивает, то оставляем как есть. Если же нет, то добавляем то что нужно.

Что получилось

Теперь у нас в локальной сети есть свой DNS-сервер, который является еще и кэширующим, а на его основе можно отсечь нежелательные домены. Можно вписать домены, которые раздражают (реклама) и/или нежелательные ресурсы для детей (да и для взрослых). Уже прогресс.

Поделиться
Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.