Pi hole настройка dns

Обновлено: 07.07.2024

Мы все ненавидим рекламу, но она является основным источником дохода для большинства веб-сайтов. Лично у меня нет проблем с рекламой, если она не навязчива. Вот почему существуют такие продукты, как Adblock Plus и Ublock Origin, но как насчет других устройств? Войти Пи-отверстие, общесетевой блокировщик рекламы, который позволяет отфильтровывать рекламу из всей вашей сети одним нажатием кнопки. Давайте настроим его на новый Raspberry Pi 4.

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

Pi-hole работает на различных устройствах и в ряде различных операционных систем, включая Raspbian, Fedora, Debian, Ubuntu и CentOS. Вы также можете поместить его в Докер и запустить его Windows а также Mac также. Я сосредоточусь на установке этого на Raspberry Pi в этой статье, потому что это относительно дешевле, чем посвящать всю машину только одной программе, и работать с ней интересно.

Я предполагаю, что у вас есть краткое представление о том, что такое Raspberry Pi, и у вас есть один, работающий с ОС Raspbian. Даже если вы этого не сделаете, установить Raspbian на Raspberry Pi легко, прошейте Распбианский образ на SD-карте с помощью Etcher, подключите его к Pi, и у вас будет рабочий Raspberry Pi. Вы можете Об этом подробнее здесь.

Начнется процесс установки, который может занять несколько минут, так что присаживайтесь. Он начнется с обновления самого Raspberry Pi, а затем перейдет к установке Pi-hole.

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

Мы назначим Raspberry Pi статический IP-адрес, чтобы убедиться, что отверстие для pi-hole работает даже после перезапуска маршрутизатора. Настройка будет делать это автоматически, однако было бы желательно, чтобы вы вручную установили ее на своем маршрутизаторе. Вы можете следовать руководству здесь или искать в Интернете, как назначить статический IP-адрес на Rpi.

sudo pihole -a -p
Настроить другие устройства

Обратите внимание, что Pi-hole на самом деле не блокирует трафик, он просто назначает недействительный DNS объявлениям, поэтому запросы никогда не достигают места назначения. Чтобы настройка прошла гладко, нам придется изменить DNS на всех устройствах, включая маршрутизатор. Я перечислю шаги для Android, iOS, Mac, Windows и вашего роутера.

2. Измените DNS на маршрутизаторе.

Откройте настройки маршрутизатора, введя IP-адрес в адресную строку веб-браузера. Обычно это 192.168.1.1, но для уверенности проверьте заднюю часть маршрутизатора. Перейдите к настройкам DHCP-сервера, найдите раздел DNS-сервера и замените DNS-запись на IP-адрес вашего Raspberry Pi. Вам придется удалить все остальные DNS-серверы из списка, иначе Pi-hole не будет работать. Сохраните изменения и перезапустите. Чтобы упростить задачу, вы можете воспользоваться этим подробным руководством по изменению DNS на каждом устройстве.

3. Измените DNS в Windows

Откройте настройки сети на вашем ПК с Windows и убедитесь, что он подключен к маршрутизатору. Чтобы изменить DNS-сервер на компьютере, выполните следующие действия.

Пуск> Панель управления> Сеть и Интернет> Центр управления сетями и общим доступом> В разделе «Активные сети»> выберите подключение к Wi-Fi> Свойства> Свойства IPv4> Замените запись DNS на IP-адрес Pi-hole.

4. Смена DNS на Android

Убедитесь, что ваш смартфон Android подключен к точке доступа Wi-Fi роутера. Выполните следующие действия, чтобы изменить DNS на своем смартфоне Android.

Настройки> Networdk и Интернет> Wi-Fi> нажмите кнопку «Настройки» рядом с именем Wi-Fi> нажмите кнопку «Изменить» вверху> нажмите «Настройки IP»> «Выбрать статический»> введите IP-адрес для устройства, шлюза маршрутизатора> и DNS-серверов.

Также убедитесь, что вы не оставили ни одной записи DNS пустой, иначе ваш смартфон автоматически перенаправит запросы в Google DNS.

5. Сменить DNS на iOS

Как и на смартфоне Android, смена DNS-сервера на iOS проста и похожа по шагам. Вам даже не нужно назначать статический IP-адрес iPhone. Следуйте приведенным ниже командам, чтобы настроить DNS.

Настройки> WiF i> Нажмите «Имя Wi-Fi»> Нажмите «Настроить DNS»> «Вручную»> «Ввести Pihole DNS»> «Сохранить».

6. Измените DNS на Mac

Чтобы изменить DNS на Mac, откройте Системные настройки. Нажмите клавиши CMD + SPACE, чтобы вызвать поиск в центре внимания, введите «Системные настройки» и нажмите Enter для результата. Найдите сеть в параметрах и дважды щелкните, чтобы открыть настройки сети.

Щелкните DNS и нажмите кнопку +, чтобы добавить запись DNS. Введите IP-адрес Pihole и нажмите OK. Ваш Pihole DNS теперь настроен на компьютере Mac.

7. Измените восходящий DNS в консоли Pihole

На этой вкладке снимите флажок с любого DNS-сервера, который может быть включен слева. Установите флажок «Custom 1 (IPv4)» и введите адрес шлюза вашего Wi-Fi роутера. Нажмите «Сохранить», и вы увидите, что Pihole активен.

8. Используйте Pihole

Вы можете отслеживать всю заблокированную вами рекламу, запросы, которые разрешены на чистой панели инструментов. Он также позволяет вам вручную блокировать веб-сайты, поэтому он может быть больше, чем просто блокировщиком веб-сайтов. Блокировка веб-сайтов будет работать, только если на клиентском устройстве настроен DNS, и это может быть замечательно, если у вас дома есть дети. Вы можете управлять всеми устройствами, включать и отключать блокировку рекламы для каждого устройства и ускорять работу всей сети.

Это было подробное руководство по установке Pihole на Raspberry Pi. Он работает очень хорошо и мгновенно блокирует рекламу в сети. Здесь и там пропускается несколько рекламных объявлений, но вы всегда можете вручную заблокировать или включить их. Попробуйте и дайте мне знать, если у вас возникнут проблемы, в комментариях ниже.

Интернет-реклама раздражает – более того, это потенциальный источник вредоносных программ. Конечно, есть плагины, предназначенные для блокировки рекламы на устройствах или в приложениях, однако блокировка рекламы на уровне DNS – гораздо более надежное решение для ваших приложений и устройств одновременно.

Pi-hole –DNS-сервер, изначально созданный для использования на одноплатном компьютере Raspberry Pi – отфильтровывает запросы доменов, обслуживающих рекламу, блокирует рекламу и улучшает производительность сети. С помощью Pi-hole вы можете активно отслеживать каждый запрос DNS, сделанный в вашей сети, и блокировать запросы на ходу. Эта функциональность также распространяется на веб-браузеры, позволяя отфильтровывать рекламу в других приложениях, ориентируясь на соответствующий DNS-запрос.

Приложение Pi-hole особенно эффективно в связке с виртуальной частной сетью (VPN). VPN создают и поддерживают подключения через туннели, которые являются логическими сетевыми соединениями между клиентами и серверами. Кроме того, если ваша VPN поддерживает протокол Secure Socket Layer (SSL), вся транзакция зашифровывается, обеспечивая безопасный канал для передачи данных.

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

Требования

  • Сервер Ubuntu 16.04,настроенный по этому мануалу.
  • 2 Гб памяти минимум.
  • Предварительно установленный сервер OpenVPN.

1: Сбор информации о сети

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

Используйте команду ip с подкомандами addr и show, чтобы определить IP-адрес tun0, сетевого интерфейса, который использует ваш VPN-туннель.

ip addr show tun0

На выходе представлена подробная информация об интерфейсе.

1: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever

Рассмотрим вывод подробнее:

  • Первая строка сообщает имя интерфейса, tun0, а затем идет ряд флагов, которые описывают характеристики сетевого сокета.
  • Вторая строка указывает, что в настоящее время на этом интерфейсе отсутствуют устройства канального уровня.
  • Третья строка содержит IP-адрес для этого сетевого интерфейса.
  • В четвертой строке сообщается, что срок действия IPv6 интерфейса и предпочтительный срок его службы имеют значения forever. В этом случае время аренды IP-адреса никогда не изменится, поскольку адрес был специально назначен интерфейсу во время установки VPN.

Запишите IP-адрес после inet – это адрес вашего VPN-сервера. Он понадобится вам при установке Pi-hole.

Кроме адреса VPN-сервера, Pi-hole еще нуждается в шлюзе для трафика IPv4 (в точке доступа между различными сетями).

Используйте команду ip еще раз, на этот раз с подкомандами route и show, чтобы получить информацию о таблице маршрутизации вашего сервера. Передайте информацию таблицы маршрутизации команде grep, которая будет анализировать и искать вывод для строки default. default указывает шлюз по умолчанию, используемый сервером.

ip route show | grep default

  • Перенаправление ввода-вывода в Linux
  • Использование Grep и регулярных выражений для поиска текстовых шаблонов в Linux

default via 198.51.100.1 dev eth0 onlink

Запишите IP-адрес после via – это адрес шлюза по умолчанию.

2: Загрузка Pi-hole

Используйте Git для клонирования репозитория Pi-hole с GitHub в каталог

Перейдите в домашний каталог и клонируйте репозиторий:

Вывод подтверждает местоположение клонирования, а затем предоставляет отчет в реальном времени, который включает количество объектов, которые нужно было скопировать Git, а также количество скопированных объектов.

Cloning into 'Pi-hole'.
remote: Counting objects: 65, done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 65 (delta 5), reused 26 (delta 1), pack-reused 0
Unpacking objects: 100% (65/65), done.
Checking connectivity. done.

Перейдите в каталог Pi-hole/automated\ install/ и найдите там установочный сценарий Pi-hole.

cd Pi-hole/automated\ install/

Откройте и просмотрите сценарий, чтобы убедиться, что он не сделает ничего лишнего. При необходимости его можно откорректировать.

Сохраните и закройте файл, чтобы продолжить.

Теперь у вас есть самые новые пакеты Pi-hole.

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

Установка и настройка Pi-hole происходит с помощью мастера в терминале. Запустите мастер установки:

В окне Installing packages мастер сообщит об установке пакетов и извлечении дополнительных файлов.

Pi-hole automated installer
This installer will transform your device into a network-wide ad blocker!

Чтобы продолжить, нажмите Enter.

Затем мастер сообщит, что Pi-hole является свободным и бесплатным программным обеспечением и подскажет, как вы можете пожертвовать проекту Pi-hole.

Нажмите Enter, чтобы продолжить установку.

Затем сценарий установки сообщит вам, что для корректной работы службы необходим статический IP-адрес. Нажмите Enter, чтобы продолжить.

В следующем окне – Choose An Interface – мастер предложит выбрать интерфейс, который будет прослушивать Pi-hole. Чтобы использовать Pi-hole для мониторинга сетевого интерфейса VPN, используйте клавиши со стрелками на клавиатуре, чтобы выбрать tun0, и нажмите пробел. Затем нажмите TAB, чтобы перейти к параметрам в нижней части экрана. Выбрав <Ok>, нажмите Enter, чтобы сохранить настройки и продолжить.

Теперь мастер попросит вас указать Upstream DNS Provider. Это сервис, который Pi-hole будет использовать для разрешения доменов. Для простоты вы можете оставить здесь значение по умолчанию, Google. Нажмите TAB, чтобы перейти к параметрам в нижней части экрана, выберите <Ok> и нажмите Enter.

На следующем экране Pi-hole предложит вам выбрать, какие интернет-протоколы нужно фильтровать. Протоколы – например, IPv4 и IPv6 – определяют технический формат пакетов и схему адресации компьютеров для связи по сети. IPv4 является наиболее широко используемым интернет-протоколом для подключения устройств к сети.

Для эффективной работы Pi-hole требуется фильтрация как IPv4, так и IPv6, поэтому оставьте оба протокола выбранными и нажмите TAB, чтобы перейти к параметрам в нижней части экрана. Выберите <Ok> и нажмите клавишу Enter.

Pi-hole теперь спросит, хотите ли вы использовать текущие сетевые настройки в качестве статического IP-адреса. Чтобы приложение Pi-hole могло использовать VPN, нужно ввести эту информацию вручную на следующем экране. Потому с помощью клавиш со стрелками выберите <No> и нажмите Enter.

Теперь Pi-hole предложит ввести адрес IPv4. Укажите адрес своего VPN-сервера. Это IP-адрес после inet в выводе, который вы получили при первом запуске команды ip (в разделе 1).

Добавьте /24 в конец IP-адреса, чтобы указать маску подсети VPN. Выберите <Ok> и нажмите Enter.

На следующем экране нужно ввести шлюз IPv4 (маршрутизатор), который будет использовать Pi-hole для доступа в Интернет. Введите здесь IP-адрес шлюза по умолчанию. Это IP-адрес, который вернула вторая команда ip в разделе 1.

Выберите <Ok> и нажмите Enter.

На следующем экране убедитесь, что IP-адрес и шлюз указаны верно, прежде чем они будут применены к конфигурации Pi-hole. Если вам нужно внести изменения, выберите <No> и нажмите Enter. В противном случае выберите <Yes> и нажмите Enter, чтобы продолжить установку.

Кроме интерфейса командной строки, также для управления Pi-hole можно использовать веб-интерфейс администратора. Одним из основных преимуществ веб-интерфейса является его способность просматривать прямые DNS-запросы и блокировать статистику.

По умолчанию web admin interface имеет значение On. Это значение рекомендуется использовать и далее (оно необходимо для выполнения разделов 7 и 8).

В этом руководстве для управления Pi-hole используется веб-интерфейс, но если вы хотите проверить различные ветки проекта во время разработки или просто предпочитаете работать через сеанс терминала, вы можете узнать больше о команде Pi-hole -line в официальном FAQ.

Выберите <Ok> и нажмите Enter.

Чтобы использовать интерфейс веб-администратора для просмотра запросов DNS в реальном времени и блокировки статистики, вам необходимо настроить Pi-hole для регистрации запросов.

Это стандартная и рекомендуемая настройка, поэтому используйте TAB, чтобы выбрать <Ok>, а затем нажмите Enter.

На этом этапе Pi-hole загрузит и установит оставшиеся зависимости вместе с данными по умолчанию для списка блокировок и черного списка. Pi-hole применит все настройки сетевой конфигурации, введенные вами в течение установки.

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

Выберите <Yes> и нажмите Enter.

После этого Pi-hole продолжит установку самостоятельно. По окончании заголовок диалогового окна изменится на Installation Complete!, а Pi-hole запустится автоматически и начнет фильтровать все DNS-запросы в сети. Нажмите Enter.

Теперь нужно протестировать установку.

4: Тестирование DNS-фильтрации

Когда OpenVPN и Pi-hole будут полностью настроены и работают, каждый запрос DNS, сделанный в вашей сети, будет перенаправлен в сервис Pi-hole, после чего он проверит, состоит ли домен в списке блокировки или черном списке. Если это так, фильтр удалит домен; если нет, фильтр пропустит запрос.

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

Вместо внешнего IP-адреса вы увидите стандартный шлюз. Это значит, что Pi-hole удалось определить рекламный сайт и сбросить запрос.

Теперь вы знаете, что Pi-hole фильтрует запросы. Пришло время настроить OpenVPN для взаимодействия с Pi-hole.

5: Настройка OpenVPN

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

Откройте главный конфигурационный файл OpenVPN:

sudo nano /etc/openvpn/server.conf

.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
.

Эти параметры позволяют настраивать DHCP (включая настройки DNS) для клиентов, подключенных к VPN.

Поскольку параметры dhcp-option, включенные в server.conf, по умолчанию закомментированы, оставьте их в файле (на случай, если вам нужно будет снова обратиться к ним в будущем).

Теперь добавьте новый параметр, с помощью которого OpenVPN направит всех DNS-клиентов на Pi-hole по шлюзу 10.8.0.1.

.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
push "dhcp-option DNS 10.8.0.1"
.

Сохраните и закройте файл.

Чтобы применить изменения, перезапустите OpenVPN.

sudo systemctl restart openvpn@server

Проверьте состояние OpenVPN:

sudo systemctl status openvpn@server

Если все работает правильно, в выводе о состоянии OpenVPN будет строка active (running).

.
Active: active (running) since Mon 2017-11-27 22:08:43 UTC; 1 day 23h ago
.

Если сервис не смог запуститься, повторите предыдущие действия, чтобы устранить проблему.

Теперь OpenVPN перенаправляет DNS-запросы на Pi-hole. Осталось настроить брандмауэр, чтобы все заработало.

6: Настройка брандмауэра

Итак, Pi-hole и OpenVPN взаимодействуют. Теперь нужно открыть порт 53, чтобы разблокировать DNS-запросы, которые прошли через фильтры Pi-hole.

sudo ufw allow 53

Затем нужно разблокировать трансмиссии udp и tcp в диапазоне IP-адресов 10.8.0.0/24 до 10.8.0.1 по порту 53. Это позволит DNS-запросам из IP-диапазона VPN пройти в Pi-hole для фильтрации.

sudo ufw allow proto udp from 10.8.0.0/24 to 10.8.0.1 port 53
sudo ufw allow proto tcp from 10.8.0.0/24 to 10.8.0.1 port 53

Также нужно разрешить веб-трафику в диапазоне 10.8.0.0/24 проходить через VPN-сервер по адресу 10.8.0.1 и порту 80.

sudo ufw allow proto tcp from 10.8.0.0/24 to 10.8.0.1 port 80

sudo ufw reload

Если брандмауэр перезапустился успешно, вы увидите:

7: Фильтрация списка блокировки

Сервис Pi-hole поставляется с набором списков блокировки по умолчанию, которые поддерживаются командой разработчиков проекта; однако эти списки не всегда исчерпывающи. В идеале вы должны адаптировать списки в соответствии с вашими потребностями и приложениями, которые вы используете. Вы можете управлять списками блокировки и многими другими параметрами с помощью веб-интерфейса администратора Pi-hole.

Вы увидите страницу, на которой представлены виджеты, сообщающие количество запросов, заблокированных в течение 24 часов (Queries Blocked Last 24 Hours), общее количество запросов за 24 часа (Queries Last 24 Hours), заблокированные запросы в процентах (Queries Blocked Last 24 Hours) и количество доменов в списке блокировки (Domains on Blocklists). Вы также увидите диаграмму запросов за последние 24 часа (Queries over last 24 hours), индикатор состояния Pi-hole и параметры навигации дашборда, форму входа и пожертвования на PayPal.

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

После входа общий макет интерфейса останется прежним, но теперь он будет содержать больше опций меню в левой части экрана и дополнительные виджеты Query Types over Time и Forward Destinations over Time.

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

В левой части экрана нажмите Tools, чтобы развернуть меню навигации, а затем выберите Update Lists.

На следующем экране нажмите синюю кнопку Update Lists в центре экрана, чтобы получить последнюю версию официального списка блокировки.

Поскольку сервис Pi-hole обновится, он покажет вам источники, из которых он извлекает данные списка, независимо от того, изменились ли они с момента последнего обновления и были ли импортированы данные в вашу установку. В конце вы увидите «Success!» в верхней части экрана.

После обновления официальных данных списка блокировки можно добавить свои собственные списки.

Нажмите Settings в меню навигации в левой части экрана, чтобы просмотреть основные параметры конфигурации Pi-hole.

По умолчанию Pi-hole использует следующие списки для фильтрации:

Чтобы добавить новый список, введите URL-адрес источника в поле ввода в нижней части панели, затем нажмите кнопку Save and Update, чтобы сохранить список, и повторно запустите функцию Update Lists. Это автоматически загрузит данные, связанные с новым списком.

Больше списков блокировки можно найти здесь (списки поделены на категории: подозрительные сайты, списки рекламных сайтов и т.п.).

8: Фильтрация по белому и черному списку

Вместе со списками блокировки, которые Pi-hole использует для фильтрации DNS-запросов, вы также можете настраивать индивидуальные черные списки. Черный список автоматически отбрасывает исходящие и входящие запросы от определенных доменов. Это может быть особенно полезно для предприятий и других организаций, которым необходимо блокировать домены, содержащие нерелевантный контент или известные распространением вирусов и других вредоносных программ.

Чтобы занести в черный список домен, нажмите Blacklist в основном меню навигации в левой части экрана.

На следующем экране вы можете либо добавить точный домен, либо его wildcard.

Белый список содержит домены, чей трафик всегда проходит через фильтры Pi-hole без блокировки. Белый список полезен в том случае, если безопасный для вас сайт попал в список блокировки или если вы хотите разрешить трафик для некоторых доменов, которые могут содержать немного рекламы.

Чтоб добавить домен в белый список, нажмите Whitelist в главном меню навигации.

На следующем экране вы можете добавить домен в белый список и просмотреть домены, которые уже в нем находятся.

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

Чтобы удалить домен из белого списка, нужно нажать красную кнопку с символом белой корзины рядом с этим доменом.

Чтобы протестировать черный и белый список вашей установки, посетите эту страницу.

Заключение

Теперь у вас есть простое, но эффективное средство фильтрации DNS-запросов в сети. Имейте в виду: вам может понадобиться немного откорректировать списки блокировки в соответствии с вашими потребностями.

Чтобы узнать, как запустить Pi-hole в контейнере Docker, перейдите на эту страницу.

Чтобы еще больше повысить безопасность сети, узнайте, как включить DNSCrypt в текущей установке Pi-hole.

image

После сравнительно недавнего анонса компанией Mozilla запуска поддержки DNS-over-HTTPS (DoH) в продакшн в сети не утихают споры, зло это или благо. По моим ощущениям, позиция "зло" базируется в основном на том, что при этом манипуляция вашими DNS-запросами даже в полезных для вас целях будет затруднена, поэтому я пока что остаюсь на позиции "благо".

В Российской Федерации операторы связи, поставленные в очень жесткие условия нашим законодательством, вынуждены строить изощренные многоуровневые системы блокировок доступа к запрещенному Роскомнадзором на территории РФ контенту, на одном из уровней которых более-менее успешно работает перехват DNS-запросов. Использование DoH позволит обойти этот уровень, что в совокупности с использованием VPN может несколько облегчить вам жизнь. Обратите внимание, само по себе решение не может избавить вас от блокировок, потому что вряд ли в России есть провайдер, полагающийся только на фильтрацию через DNS. Вам нужен еще какой-то вариант обойти блокировки, например VPN, один из описанных в моих предыдущих статьях.

Парадоксально, но в текущем паноптикуме оператору связи ничем не грозит ваш обход его блокировок (с использованием специальных средств для этого), поэтому если вы опасаетесь навредить ему таким образом — эти опасения напрасны.

Но переходить на специальный браузер, чтобы обойти перехват DNS — не наш путь. Наш путь — перевести все устройства домашней сети на DoH, быстро, эффективно и без лишних трудозатрат.

Disclaimer

Поскольку публиковать способы обхода блокировок доступа к информации, запрещенной на территории Российской Федерации, не очень законно, целью этой статьи будет рассказать о методе, позволяющем автоматизировать получение доступа к ресурсам, разрешенным на территории Российской Федерации, но из-за чьих-то действий недоступным напрямую через вашего провайдера. А доступ к другим ресурсам, получаемый в результате действий из статьи, является досадным побочным эффектом и целью статьи ни в коем случае не является.

Разворачиваем собственный DNS-сервер на базе Pi-Hole, использующий Cloudflare DoH для запросов в мир. Цель — зашифровать все DNS-запросы и обойти таким образом операторскую фильтрацию через перехват DNS. Полезный бонус — фильтрация рекламы.

Никаких волшебных know-how не открывается, простая пошаговая инструкция для тех, кому не хочется разбираться во всех хитросплетениях самому.

Что вам для этого потребуется

  1. Доверять Cloudflare. На самом деле это очень важный пункт, поскольку в описываемой реализации все ваши DNS-запросы обрабатываются сервисом Cloudflare. Если вы ему не доверяете — вам придется внедрить другое решение (и это немногим сложнее, чем описанное, но целью этой статьи не является).
  2. Иметь возможность поддерживать в домашней сети постоянно работающий сервер с Linux, который будет обслуживать DNS-запросы ваших устройств. Требование Pi-Hole — от 512M оперативной памяти (впрочем, работу с меньшим объемом сам не проверял). Если ваш роутер или NAS умеют виртуальные машины — это прекрасный вариант, если на полке где-то завалялась Raspberry Pi или другой микрокомпьютер на ARM — не менее хорошо, если на антресолях в коридоре жужжит виртуальная ферма на ESXi — то что я вам рассказываю, вы и сами всё знаете. Если у вас ничего из этого нет — самые младшие решения, типа Orange Pi Zero, на вторичном рынке можно найти за единицы сотен рублей либо привезти из Али за плюс-минус те же деньги. Но выбор платформы сильно выходит за рамки этой статьи, поэтому считаем, что у вас что-то есть. Впрочем, вопросы на этот счет можно задавать в комментариях.
  3. Вы должны иметь представление о использовании Linux и сетевых технологиях. Или хотя бы хотеть получить такое представление. Поскольку объять необъятное в этот раз я не готов, некоторые непонятные для вас моменты вам придется изучить самостоятельно. Впрочем, на конкретные вопросы, конечно же, отвечу в комментариях и вряд ли окажусь единственным отвечающим, так что не стесняйтесь спрашивать.

Исходные данные

IPv4-адрес нашего сервера в домашней сети: 192.168.1.10 и он назначен как статический.

Настройки на Linux выполняем от root (т.е. перед началом настройки выполняем команду sudo su -).

Кратко — логика решения

  1. Устанавливаем и настраиваем Pi-Hole
  2. Устанавливаем и настраиваем cloudflared
  3. Настраиваем ваш домашний роутер
  4. Решаем проблемы

Собственно решение

1. Устанавливаем и настраиваем Pi-Hole

Pi-Hole — это известная домашняя платформа, предназначенная прежде всего для борьбы с рекламой через блокирование запросов к доменам из централизованно обновляемого списка. Не то чтобы это был необходимый компонент решения, но если начал собирать домашний DNS, становится трудно остановиться. А если серьезно — Pi-Hole, возможно, и не идеален, но снимает большой объем головной боли с человека, которому надо "чтобы работало".

Чтобы установить Pi-Hole на уже имеющийся у нас запущенный Linux-сервер, нам достаточно выполнить одну команду:

И далее запущенный скрипт проведет вас по шагам установки.

В момент, когда он спросит вас про выбор Upstream DNS Provider, вы можете выбрать любой, поскольку на следующем шаге мы всё равно будем его менять. Все остальные параметры можно смело оставлять по умолчанию.

В конце инсталляции скрипт покажет вам сгенерированный случайным образом пароль от веб-интерфейса, который вам было бы полезно записать.

Если что-то при установке пошло не так — можно использовать альтернативные способы, описанные тут.

2. Устанавливаем и настраиваем cloudflared

Тут для установки нам потребуется приложить немного больше усилий, но тоже ничего особо сложного.

Выбираем и загружаем инсталлятор для нашей платформы.

После выполнения последней команды мы должны получить вывод, подобный следующему:

Если он у вас такой (естественно, номер версии и билда может отличаться) — то поздравляю, установка прошла успешно. Теперь дело за настройкой.

Создаем пользователя для работы сервиса:

Создаем файл конфигурации сервиса /etc/default/cloudflared:

И даем на него и на исполняемый файл права свежесозданному пользователю:

Далее создаем файл /lib/systemd/system/cloudflared.service, который даст нам возможность интеграции сервиса в systemd:

Активируем сервис и запускаем его:

Если всё получилось — вы увидите, что сервис в состоянии active (running).

Вы можете проверить работу сервиса, например командой dig:

Осталось только подключить сервис к Pi-Hole. Для этого вы заходите в веб-интерфейс Pi-Hole (тут вам пригодится записанный в первом этапе пароль), идете в пункт меню Settings — DNS и делаете его выглядящим приблизительно вот так:

Screenshot of Pi-hole configuration

Если вы забыли записать пароль — ничего страшного, заходите на сервер через ssh и исполняете команду pihole -a -p, она позволит задать новый пароль. Ну и в целом посмотрите ключи команды pihole, там много интересного. Например, обновление системы делается одной командой pihole -up.

3. Настраиваем ваш домашний роутер

Всё многообразие роутеров я, конечно, закрыть этим текстом не могу. Но для большинства домашних роутеров справедливы следующие моменты:

1) У роутера можно задать кастомный DNS-сервер в настройках WAN-интерфейса, даже если IP-адрес получается от провайдера динамически

2) Роутер выдает внутренним клиентам свой адрес в качестве DNS и переправляет их запросы на тот сервер, который указан в настройках WAN

Соответственно, в этом случае нам необходимо и достаточно прописать адрес нашего Pi-Hole в качестве DNS-сервера в настройках WAN-интерфейса домашнего роутера. Важно, чтобы он был единственным DNS-сервером в настройках, если будет указан какой-то еще — роутер будет балансировать запросы между ними по только ему известному принципу и такая ситуация крайне неудобна для отладки проблем в сети.

Если вдруг что-то пошло не так и сервис перестал работать, указанную выше настройку достаточно поменять на адрес DNS-сервера вашего провайдера или, например, 8.8.8.8, а уже потом начинать разбираться.

Если у вас роутер более умный и, например, имеет возможность указать в DHCP, какой адрес раздавать клиентам в качестве DNS-сервера, можете пойти по альтернативному пути и настроить раздачу адреса Pi-Hole клиентам напрямую. Это немного разгрузит роутер, но зато усложнит вышеописанный откат с использования сервиса.

В случае, если что-то не будет получаться — спрашивайте в комментариях, найдем решение.

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

В целом после выполнения вышеописанных пунктов у вас уже всё должно быть хорошо, но бывают нюансы, с которыми я и мои клиенты иногда сталкивались.

Обнаружить такую проблему достаточно просто — если вы пытаетесь зайти на заблокированный сервер, ваш браузер показывает вам ошибку ERR_NAME_NOT_RESOLVED или подобную, а проверка в командной строке через nslookup <имя сервера> в ответ выдает 0.0.0.0.

Также регулярно бывает, что Pi-Hole инсталлируют на сервер, на котором уже работает какой-то веб-сервис. В этом случае вы не получите доступа к веб-интерфейсу управления. Как разруливать такой конфликт — зависит от конкретной ситуации, но основные пути решения — это:

Заключение

Как и обещал, не написал ничего нового. Для многих читателей эта схема понятна и очевидна, и или уже внедрена, или не внедрена за ненадобностью. Многие другие построили что-то подобное по-другому, с использованием тех же или иных компонентов. Предлагаю рассматривать этот пост скорее как заготовку для вашего собственного решения, если оно вам когда-либо потребуется. Но, выполнив его как пошаговую инструкцию, вы уже получите сервис, закрывающий ваши базовые потребности в фильтрации рекламы и использовании DoH.

Favorite

В закладки

Собираем ваш новый роутер с тотальной защитой в интернете. Называется Pi-Hole

С каждым годом в сети становится все больше мусора, рекламы и потенциальных угроз для пользователей. Защититься от постоянного отслеживания и убрать все ненужное с посещаемых страниц становится довольно трудно.

Сейчас мы расскажем о набирающем популярность решении под названием Pi-hole.

Изначально сборка разрабатывалась для работы на одноплатных компьютерах Raspberry Pi, но сейчас ее возможно установить на любой компьютер под управлением Linux.

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

Что нам понадобится


Выбирайте модель с корпусом и блоком питания. Большинство зарядок от смартфона могут не подойти.

Как настроить Pi-hole на Raspberry Pi


1. Скачиваем образ операционной системы Raspbian с официального сайта.

Лучше выбирайте версию Raspbian Buster with desktop, чтобы при необходимости получить систему с графическим интерфейсом и рабочим столом. В противном случае все манипуляции с устройством придется делать через командную строку.

2. Скачиваем и устанавливаем приложение Etcher для записи образа на карту памяти.

3. Подключаем карту памяти microSD к компьютеру. Да, тут могут возникнуть трудности. Для большинства современных Mac потребуется внешний адаптер, а может еще и переходник с SD на microSD карты.


4. Записываем образ Raspbian на карту памяти при помощи приложения Etcher.

Далее потребуется определить способ управления нашим одноплатником. При наличии USB-клавиатуры и монитора можно вывести картинку на экран, а можно открыть доступ по протоколу SSH и настраивать систему удаленно.

Подробнее об управлении Raspberry по SSH можно прочитать в этой статье.

6. В Терминале на Raspbian или в Терминале на компьютере при SSH подключении вводим команду:

7. В разделе Network options настраиваем Wi-Fi, если первый раз подключались по кабелю.


8. В настройках своего роутера задаем для Raspberry статический IP-адрес.

10. В процессе установки выбираем DNS-сервер провайдера. Можно остановиться на Google или OpenDNS и выбираем предложенные списки адресов для блокировки контента.


11. Соглашаемся на установку веб-интерфейса.


12. На последнем шаге запоминаем сгенерированный пароль для входа в систему.


Чтобы система заработала, необходимо настроить фильтрацию DNS-запросов. Для этого потребуется использовать настроенную малинку в качестве локального DNS-сервера.

Это можно сделать для всех устройств в сети, настроив только домашний роутер, или для нескольких устройств, задав параметры на каждом из них.

Как настроить DNS на роутере:


1. Переходим в веб-интерфейс маршрутизатора.

2. В разделе с настройками DHCP находим параметр DNS-сервер.

4. Сохраняем конфигурацию и перезагружаем роутер.

Как настроить DNS на iOS:


1. В настройках iPhone или iPad переходим в раздел Wi-Fi.

3. В разделе Настройка DNS выбираем режим Вручную.

Как настроить DNS на macOS:


1. В Системных настройках открываем раздел Сеть.

3. На вкладке DNS добавляем новый адрес.

Что делать дальше

Изначально система Pi-hole настроена на блокировку распространенных англоязычных рекламных ip-адресов и в наших реалиях окажется практически бесполезной. Эффект заметите при посещении заморских сайтов вроде Amazon или Ebay.

Для расширения возможностей придется вручную добавить подходящие списки блокировки.

Здесь все зависит от ваших потребностей. Можно настроить Pi-hole для блокировки рекламы, отключения слежки за действиями пользователя в сети или убрать со страниц вредоносные и небезопасные скрипты.

Списки заблокированных адресов нужно поддерживать в актуальном состоянии и регулярно обновлять. Каждый из вас самостоятельно может найти подходящие списки и добавить их по такому алгоритму:


1. Переходим в веб-интерфейс Pi-hole через браузер на компьютере или смартфоне.

2. Открываем раздел Blacklists.

3. Вставляем ссылку на список блокировки и добавляем его.

4. Перезагружаем Pi-hole из меню Settings.

Вот примеры списков блокировки для разных целей:

В сети доступно множество других списков блокировки под разные задачи.

Кроме этого в дополнение к Pi-hole неплохо было бы подключить VPN, но это тема для отдельной статьи.

(26 голосов, общий рейтинг: 4.69 из 5)

Favorite

В закладки

Читайте также: