Этот гайд для тех, кто хочет:
а) локально попробовать работу фильтра DNS запросов Pi-hole перед покупкой отдельного устройства
или
б) хочет использовать Pi-hole локально, только на одном устройстве
Pi-hole - это блокировщик рекламы и трекеров на уровне DNS, с открытым исходным кодом. Он используется как дополнение к расширениям браузера, а также как единственный метод блокировки рекламы на заблокированных производителем устройствах.
Альтернативно он может использоваться в корпоративном секторе с вашими списками блокировки, в том числе и для сбора статистики по запросам к доменам.
Мы будем использовать для установки контейнер
LXDЭтот метод позволит веб-интерфейсу Pi-hole не конфликтовать с имеющимся веб-сервером или DNS резолвером (напр. stubby), а также упростит удаление после окончания тестирования.
Установим LXD
v. 3.0, Ubuntu 18.04
sudo apt install lxd
или
v. 3.18, Ubuntu 18.04 или более свежая
sudo snap install lxd
Выполним первоначальную настройку. Ответим на все вопросы умолчаниями.
lxd init
На этом про команду lxd можно забыть, далее мы используем
lxcСоздадим и запустим контейнер с Ubuntu 18.04, назовём его pihole
lxc launch ubuntu:18.04 pihole
Проверим, что он успешно запущен и получил IP адрес.
lxc list
Получим доступ к контейнеру и установим в нём Pi-hole
*Работа в контейнере по умолчанию выполняется от пользователя root, нас это устраивает в данном случае.
lxc exec pihole -- /bin/bash
#сначала установим корректный часовой пояс
dpkg-reconfigure tzdata
curl -sSL https://install.pi-hole.net | bash
Ответим на все вопросы установщика умолчаниями, в одном пункте необходимо выбрать апстрим DNS сервер.
Это сервер, который будет отвечать на запросы, не заблокированные Pi-hole.
На этом установка завершена
**, по окончании установщик сообщит пароль для доступа в веб-интерфейс Pi-hole, который находится на 80м порту вашего контейнера:
http://ip-контейнера/adminВ веб-интерфейсе можно подключать собственные списки блокировок (
пример), смотреть статистику и блокировать подозрительные домены прямо из лога.
Отключаемся от контейнера - Ctrl + D
Теперь переключим нашу систему на использование нового DNS
***Достаточно в свойствах интернет-подключения снять галку "Автоматический DNS" и прописать IP контейнера.
Напомнить себе IP можно так:
lxc list
Перезапустите интернет-подключение и браузер, зайдите на ваш любимый сайт с рекламой, затем откройте веб-интерфейс Pi-hole, авторизуйтесь, и можете блокировать домены прямо в логе (Query Log).
Официальный мануал (дополнительные функции) доступен по адресу
https://docs.pi-hole.net/УдалениеОткатите изменения в интернет-подключении.
Удалите контейнер:
lxc stop pihole
lxc delete pihole
Опционально, удалите LXD, в зависимости от метода установки
sudo apt purge lxd
или
sudo snap remove lxd
* Для тех, кто хочет изучить скрипт перед запуском:
wget -O basic-install.sh https://install.pi-hole.net
less basic-install.sh
bash basic-install.sh
** Если решение планируется постоянно использовать, я обычно отключаю автообновление. Оно может помешать диагностировать возможные ошибки. В контейнере выполняем:
apt purge unattended-upgrades
*** Если девайс переносной и часто использует разные интернет-подключения, опционально можно назначить DNS сервер для всех подключений.
Ниже инструкция для NetworkManager.
Редактируем
/etc/NetworkManager/NetworkManager.confДобавляем:
[main]
dns=none
Этот параметр сообщит NetworkManager, что нет необходимости управлять содержимым файла
/etc/resolv.confПерезапустим сервис:
sudo systemctl restart NetworkManager
Теперь отредактируем
/etc/resolv.confЕсли в вашей системе он является ссылкой на другой файл (используется systemd-resolved), ссылку нужно удалить и создать обыкновенный файл.
Необходимо удалить всё содержимое, и добавить только:
nameserver ip-контейнера