pi-hole + unbound
Pi-Hole
Уже давно я пользуюсь Pi-hole. Этот инструмент позволяет блокировать разные рекламные баннеры, интернет-трекеры и прочие бесполезные для пользователя ресурсы. При этом вы еще и ускоряете загрузку страниц, так как запросы блокируются на уровне DNS.
Изначально Pi-hole разрабатывался для Raspberry Pi, и изначально он у меня и стоял на Raspberry Pi, и я даже делал пост или ролик о том как его устанавливать. Со временем Raspberry Pi меня стал сильно доставать. Тем, что у флешек случались проблемы с файловой системой. Иногда она просто запарывалась. Ну а проблем с нормальными дисками у меня никогда не было. Поэтому я решил сделать все на нормальном домашнем сервере, без Raspberry Pi. Для большей надежности, а если учесть еще и то, что на Raspberry Pi, по какой-то причине, цена сейчас выше, чем на нормальный неттоп, то выбор вообще очевиден.
Unbound
Еще мы будем использовать Unbound. Unbound это это удостоверяющий, рекурсивный и кеширующий DNS сервер. Некоторые скажут, что это бессмысленно, так как в Pi-hole уже есть dnsmasq. Но dnsmask хоть тоже и является DNS ресолвером и может получать адреса у серверов, но все-таки dnsmasq это только форвардер. Все что он будет делать это спрашивать адрес у ближайшего к вам DNS сервера.
Кроме того unbound умеет использовать различные методы защиты и криптографии. Чтобы избежать плейнтекста. Например, через DNSSEC или DoH.
А еще мне нравится, что у unbound довольно ясный и понятный конфиг.
Используя Unbound мы будем получать ответ от DNS ОЧЕНЬ быстро по сравнению с резолверами вашего провайдера, у которых в любом случае есть какая-то очередь. А еще ваш провайдер не будет знать на какие сайты вы ходите.
А еще локальный резолвер умеет заранее обновлять некоторые записи, проверяя ttl и обновляя те их них, которые вот-вот протухнут. И из-за этого мы тоже всегда выигрываем в скорости.
Есть такая уязвимость, которая называется “dns leak” (утечка днс). Это когда ваши запросы не шифруются и могут быть видны третьим лицам, как минимум, вашему провайдеру. Есть даже различные сервисы, которые могут сказать есть ли у вас утечка (в интернете куча сервисов, которые могут помочь вам узнать, есть ли у вас такая уязвимость)
Wireguard
Еще я видел различные гайды в которых вдовесок устанавливают wireguard. Например, в пакете wirehole, там все это ставится вместе.
У меня есть сомнения в том, что это все целесообразно ставить на один сервер. Как мне кажется, wireguard действительно разумнее ставить куда-нибудь в облако, например, на сервер в digitalocean, тогда как pi-hole и unbound разумнее ставить на сервер в локальной сети, так мы получим значительно более быстрый отклик.
Установка и настройка Pi-hole
У Pi-hole есть два пакета, первый называется “Pi-hole standalone”, это пакет который позволяет вам развернуть пайхол конкретно на том компе на котором вы его устанавливаете. Например, у вас есть один ноут и больше ничего нет, ни сервера, ни телефона, ни чего-то еще. Вот вы можете на него поставить это все и радоваться жизни.
Но значительно разумнее поставить это все на сервер, который будет работать со всем трафиком внутри локальной сети. Для этого есть пакет “pi-hole-server”
Оба пакета находятся в AUR, так что перед тем как их ставить поставьте yay или pacaur, что вам больше нравится.
Теперь намнадо установить пакет
И после этого надо отредактировать файл
и надо раскомментировать три строки:
и в этот же файл добавим строку
Install lighttpd
Установка и настройка Unbound
Для начала надо установить пакет unbound
для ubuntu
для arch
После этого нам нужно добавить в файл /var/lib/unbound/root.hints
информацию о root серверах DNS. Мы его можем взять из https://www.internic.net/domain/named.root
Для этого запустим команду
Стандартные настройки уже находятся в файле /etc/unbound/unbound.conf
можем протестировать что все работает нормально
Вот эта команда должна вывести SERVFAIL
А вот эта команда
Должна вывести NOERROR
Теперь идем в админку pi-hole
Идем в раздел settings - dns
убираем стандартный гугловский DNS и ставим свой собственный
И теперь нам надо ждать пока наши клиенты переподключатся (некоторые клиенты сами не переподключатся, и надо выключить и включить сеть руками) и после этого они будут отображаться в этой статистике
Проверка работоспособности Unbound
Для проверки работоспособности DNSSEC, после запуска службы unbound.service
выполните:
В ответе должен быть IP адрес и (secure)
после него.
Этот ответ должен содержать (BOGUS (security failure))
.
Так же вы можете использовать drill для проверки вашего сервера следующими командами:
Первая команда должна в переменной rcode
выдать SERVFAIL
. Вторая команда должна выдать NOERROR
.
Ну а вот скриншот с моим примером
Так же в интернете вы можете найти довольно много сервисов, который помогут вам проверить DNS Leak, не буду рекламировать какой-то конкретный, найдите любой.