Pi-hole

//

Pi-hole — это DNS-сервер и небольшой веб-интерфейс для настройки блокировщика и просмотра статистики.

За основу я взял микро-компьютер Rapsberry Pi

Зачем это вообще? Домашний интернет-фильтр:

– Решение, по сути, бесплатное, за исключением стоимости самого компьютера Raspberry Pi

– Позволяет обеспечить фильтрацией все домашние устройства, даже что-то типа Smart TV, хотя их вообще лучше в интернет не выпускать

– Оптимизирует трафик путем блокировки большого количества запросов до того, как они загрузились к вам домой.

Аппаратная часть
Для реализации этого плана в первую очередь вам понадобится Raspberry Pi — полноценный компьютер размером с ладонь, который работает под управлением Linux. Можно купить только плату, а можно сразу купить набор, где в комплекте сразу будет то, что необходимо.

И так, нам понадобится:

  • блок питания
  • карта памяти с установщиком системы
  • кабель HDMI
  • корпус для платы. (Я купил вот такой у CanaKit, в котором есть сразу все)

Кроме этого, для настройки понадобятся USB клавиатура и мышь, а также Ethernet-кабель для подключения к сети. Хотя у Raspberry Pi есть Wifi, подключать её как сетевой фильтр лучше через кабель. Сам процесс настройки Raspberry Pi достаточно простой и сопровождается графическим интерфейсом, поэтому там даже рассказывать особо нечего. Если вы купили набор, типа того, который выше, там на SD-карте уже сразу будет установщик, который проведет вас через нужные шаги установки системы. Можно скачать установщик системы, который отформатирует на Маке карту памяти и запишет туда загрузочный образ, где можно будет выбрать вариант операционной системы для Rasbperry

Для такого фонового процесса как Pi-hole даже графический интерфейс системы не нужен, поэтому можно установить версию Raspbian Lite OS без него. Но если вас пугает необходимость управлять системой в командной строке, то можно и обычную Raspbian ставить, так как Pi-hole не пожирает много ресурсов, и ничего ужасного в работе GUI не будет. Либо в командной строке, либо же через интерфейс Raspbian лучше сразу активировать возможность подключаться к устройству по ssh (в терминале можно сделать touch ssh и скопировать файл на карту памяти). Пройдя настройку Raspberry Pi, вы получите работающий компьютер с логином pi и паролем raspberry, который, разумеется, лучше сразу поменять на что-то другое (для этого можно использовать passwd в терминале).

Важный момент: для надежной работы Pi-hole нужно зафиксировать за Raspberry IP-адрес в локальной сети, чтобы роутер не поменял его в какой-то момент. Процедура для этого будет зависеть от вашего роутера, но важно, чтобы в результате манипуляций IP адрес был закреплен за Raspberry Pi. При этом, как я упоминал выше, лучше использовать подключение кабелем Ethernet, и фиксировать на роутере адрес именно для интерфейса Ethernet.

Теперь можно ходить к Raspberry Pi удаленно через SSH (или, например, клиентом VNC, включив в настройках Raspbian доступ по VNC). В любом случае, при работе с Raspbian часто команды придется выполнять в командной строке, поэтому лучше к этому привыкать.

С установкой Pi-hole все почти так же просто, как и к настройкой Raspberry Pi — нужно закачать установщик из интернета, запустить его, и дальше следовать шагам визарда. Я выбрал путь ручной загрузки и установки отсюда. В терминале (разумеется, по ssh на Raspberry Pi) делаем:

Автоматическая установка:

curl -sSL https://install.pi-hole.net | bash

Альтернативные методы установки:

Метод 1: клонируем наш репозиторий и запускаем:

git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
cd "Pi-hole/automated install/"
sudo bash basic-install.sh

Метод 2: вручную загрузите установщик и запустите:

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh

Метод 3: использование Docker для развертывания Pi-hole:

Пожалуйста, обратитесь к репозиторию докеров Pi-hole, чтобы использовать официальные образы Docker.

А дальше достаточно просто пройти путь настройки Pi-hole через прекрасный визуальный визард:

Примерно 12-15 экранов визарда расскажут вам, что для Pi-hole нужен нужен фиксированный IP-адрес, позволят выбрать интерфейс (Ethernet или Wifi), напомнят о необходимости задонатить бесплатному проекту, а также выбрать DNS-сервер, к которому будет ходить Pi-hole, чтобы резолвить запросы, которые не блокируются. Я выбрал Cloudflare за их подход к конфиденциальности: они не торгуют данными пользователей, и не хранят логи дольше 24 часов.

Как я уже упоминал выше, Pi-hole использует списки доменов для того, чтобы блокировать определенные ресурсы. Если я правильно помню, установщик во время настройки предложит установить один или больше популярных списков, а в дальнейшем такие списки можно отдельно находить и добавлять в Pi-hole. Потом визард Pi-hole предложит установить веб-интерфейс, с помощью которого можно просматривать статистику и управлять приложением. Фильтром можно управлять и через командную строку, но лучше все-таки поставить веб-портал. На Raspberry Pi установщик, если не ошибаюсь, еще установит веб-сервер lighttpd, чтобы могла работать админская консоль. Еще один экран предложит сохранять логи запросов, что позволит как раз просматривать статистику разрешенных и заблокированных запросов, но ускорит износ SD-карты. Последний экран покажет вам всю нужную информацию о настройке сервера, включая пароль к админской консоли (не забудьте его поменять потом на что-то свое!)

Собственно, после того, как пройдена первоначальная настройка Pi-hole, дальше почти что и делать нечего. Самое главное — нужно добавить Pi-hole как DNS в локальной сети. Для этого в настройках роутера нужно указать IP-адрес Pi-hole вместо тех DNS-серверов, которые там прописаны (вероятней всего — что-то, полученное автоматически от провайдера). Таким образом это позволит всем устройствам в домашней сети пользоваться преимуществами Pi-hole по фильтрации запросов. Альтернативно можно прописать IP-адрес Raspberry Pi в качестве DNS-сервера на тех устройствах, которым вы хотите обеспечить работу фильтра, но это нивелирует смысл разворачивания такого DNS-фильтра в локальной сети.

Второе, что понадобится сделать — добавить списки доменов, которые надо блокировать. Списки обычно собирает, обновляет и распространяет весьма активное сообщество, за что ему, безусловно, спасибо. Список — это txt файл, в котором перечислены домены, которые будут блокироваться вашей Pi-hole. Есть масса сайтов в сети, откуда такие списки распространяются, есть мегасписки, которые содержат другие списки, и тд. Но со списками надо осторожно, и не надо стараться добавить сразу все: если перестараться, то легко заблокировать что-то лишнее: некоторые сайты могут перестать работать, или будут работать неправильно. Можно добавлять списки по одному (там в списках, как правило, сразу десятки тысяч доменов), и смотреть, что из критического перестало работать (если перестало).

Парочка сайтов, откуда можно черпать списки для блокировок рекламы, трекинга и вредоносных доменов, или же списка исключений:
Блокировка: https://firebog.net
Исключения https://github.com/anudeepND/whitelist
(Исключения — это проверенные временем домены, которые не стоит блокировать, потому что может сломаться функциональность сайтов)

Сама же панель управления Pi-hole доступна по IP-адресу, который вы выделяли для Raspberry Pi, в моем случае это http://10.0.0.33/admin/index.php. (да, надо еще заморочиться на https)

Через консоль можно смотреть статистику, добавлять и удалять домены для блокировки и исключений, и, в общем-то, все. Дополнительно можно установить полезное мобильное приложение Pi-hole Remote (от стороннего разработчика), и смотреть статистику, и управлять самой pi-hole через него. Важный момент: для того, чтобы получить доступ к консоли в мобильном приложении, надо просканировать токен, который можно найти в настройках веб-консоли, пароль к админской части консоли для этой цели не годится.

Посмотреть, как работает Pi-hole, лучше всего на каком-нибудь сайте, где много рекламы и трекеров (типа Buzzfeed). Достаточно загрузить этот сайт с включенной и выключенной Pi-hole, и вы сразу почувствуете разницу (ну, может, не сразу, так как надо обычно сделать несколько перезагрузок сайтов, чтобы все кэши обновились). Надо также учитывать, что некоторые сайты понимают факт блокировки рекламы через Pi-hole, и все равно будут требовать отключить блокировщик рекламы. Тут как раз одно из неудобств PiHole и проявляется: просто так отключить её как расширение в браузере для конкретной страницы нельзя. Также не получится просто добавить сам домен сайта в исключения, потому что проблема как раз в загружающейся на этом сайте рекламе и трекерах. Я еще пока что изучаю, что по этому поводу делать. Есть смысл периодически заглядывать в статистику: так я узнал, что больше всего Pi-hole блокирует один из адресов CDN Apple. Что странно — я не замечал никаких побочных эффектов, кроме того, что в Apple News перестала загружаться реклама. Правда, я считаю это честной игрой: я плачу за Apple News+, а мне все равно показывают рекламу, да еще и в виде автоматически проигрывающегося видео, и это даже нельзя отключить. Кстати, о рекламе в видео: YouTube активно борется с блокировками Pi-hole и заблокировать рекламу на YouTube сложно, а работающие сегодня методы могут перестать работать уже завтра.

Еще один момент: на данном этапе все запросы на Pi-hole показываются “от роутера”, потому что он оказывается главным “клиентом”, который ходит в сеть от лица всех домашних устройств. Мне это не показалось большой проблемой, хотя если захочется вычислить какое-то активно “стучащее” в сеть устройство, то надо будет заморочиться. Этот вопрос решается, например, путем поднятия DHCP-сервера на Raspberry, тогда каждое устройство будет ходить на Raspberry Pi со своим IP-адресом.

Парочка вещей, которые я планирую сделать, когда меня в очередной раз настигнет желание улучшить домашнюю сеть:
– Во-первых, как я упоминал выше, нужно продлить жить SD-карте, так как её постоянно эксплуатирует запись логов. Один из способов — вынести логи в оперативную память, второй — перевести Raspberry Pi на работу с SSD диска. Думаю, какой-нибудь небольшой NVMe с коробочкой через какое-то время замутить.
– Во-вторых, хочу сделать DNS Over HTTPS (DoH). Вообще я хотел это сделать сразу, но поскольку наступил на грабли с работой AdGuard, то решил пока ограничиться Pi-hole, убедиться, что все работает, и дальше уже переходить к следующему этапу. Из того, что я почитал о процессе — никаких ракетных технологий, и в результате Raspberry Pi/Pi-hole начинают разговаривать с Cloudflare DNS по HTTPS протоколу, и, соответственно, домашний провайдер не может собирать и продавать информацию о ваших предпочтениях в сайтах на сторону.
– И в третьих, хочу также установить Pi.Alert — еще один проект для Raspberry Pi, сервис, который сканирует сеть и предупреждает о подключении к сети неизвестных устройств, а также об отключении обычно подключенных устройств.
– Плюс VPN, о котором я тоже упоминал выше.

Наверняка у Raspberry Pi есть и еще какие-то полезные применения, буду продолжать исследовать этот вопрос.

Previous Story

> tcpdump

Next Story

SELinux

Latest from Blog

Zabbix – Docker – Raspberry Pi

Для начала установим Portainer – веб-интерфейс для управления docker-контейнерами. Бесплатно, удобно, подойдет новичкам в docker. Установка

Сетевая папка/диск в Linux

x.x.x.x адрес шары /mnt/shara точка монтирования user пользователь с доступом к шаре 1234 пароль пользователя Для

Памятка SSH

В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые

0 £0.00