Updated

gSpot
2024-11-03 02:27:11 +03:00
parent 4202b6c860
commit ceac89e2d8
15 changed files with 267 additions and 124 deletions
+35 -33
@@ -1,35 +1,38 @@
## Описание
Ruantiblock - решение для обхода блокировок (при помощи Tor, VPN-соединения или других решений для проксификации трафика поддерживающих локальные прозрачные прокси (Shadowsocks + ss-redir, Redsocks и пр.)) с выборочной проксификацией трафика к заблокированным ресурсам (при этом доступ к остальным ресурсам осуществляется напрямую). В качестве источника списка блокировок поддерживаются выгрузки с сайтов: [https://rublacklist.net](http://rublacklist.net), [zapret-info](https://github.com/zapret-info/z-i) и [https://antifilter.download](https://antifilter.download), а также список созданный самим пользователем. Включает в себя функции управления правилами nftables и парсер списка блокировок. Доступны конфигурации с использованием доменных имен (dnsmasq) и IP адресов (включая диапазоны CIDR).
Ruantiblock - решение для обхода блокировок (при помощи Tor, VPN-соединения или других решений для проксификации трафика поддерживающих локальные прозрачные прокси (Shadowsocks + ss-redir, Redsocks, sing-box и пр.)) с выборочной проксификацией трафика к заблокированным ресурсам (при этом доступ к остальным ресурсам осуществляется напрямую). В качестве источника списка блокировок поддерживаются выгрузки с сайтов: [zapret-info](https://github.com/zapret-info/z-i), [https://rublacklist.net](http://rublacklist.net) и [https://antifilter.download](https://antifilter.download), а также список созданный самим пользователем. Включает в себя функции управления правилами nftables и парсер списка блокировок. Доступны конфигурации с использованием доменных имен (dnsmasq) и IP адресов (включая диапазоны CIDR).
Данная версия решения предназначена для OpenWrt. В отличии от других решений подобного типа не имеет жёсткой интеграции и привязки исключительно к OpenWrt (при этом поддерживает конфигурацию через UCI, а также имеется функциональное LuCI-приложение) и может быть перенесено на другие Linux. Вся конфигурация находится в одном месте, все операции выполняются с помощью одного скрипта (`/usr/bin/ruantiblock`), широкие возможности конфигурации. Помимо прочего, данное решение предлагает опции для собственной тонкой настройки оптимизации списка блокировок: группировка и суммаризация IP, объединение поддоменов, фильтрация записей по шаблонам...
Текущая актуальная ветка ruantiblock [v1.x](https://github.com/gSpotx2f/ruantiblock_openwrt) (для OpenWrt >= 23.05 с использованием nftables). Старая ветка [v0.9](https://github.com/gSpotx2f/ruantiblock_openwrt/tree/0.9) (для OpenWrt <= 22.03 с использованием iptables, более не развивается).
Текущая актуальная ветка ruantiblock [v2.x](https://github.com/gSpotx2f/ruantiblock_openwrt/tree/master) (для OpenWrt >= 23.05 с использованием nftables). Предыдущая ветка [v1.x](https://github.com/gSpotx2f/ruantiblock_openwrt/tree/1.x) более не развивается.
## Основные изменения в версии 2.0
+ Главное нововведение версии 2.0 - возможность использовать разные VPN/прокси для нескольких [пользовательских списков](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B5).
+ В режим прозрачного прокси добавлена возможность выбора типа прокси: redirect или tproxy. Эта опция определяет тип действия в правилах nftables. Раньше для прозрачного прокси применялся только redirect, добавление tproxy обеспечивает поддержку прокси-сервера sing-box в режиме TProxy.
+ Конфигурационные файлы версии 2.0 **не совместимы** с предыдущими версиями! Перед установкой новой версии необходимо [полностью удалить старую](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-ruantiblock).
## Установка
**[Автоматическая установка с помощью скрипта - ruantiblock v1.x (OpenWrt >= 23.05)](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0)**
**[Автоматическая установка с помощью скрипта - ruantiblock v2.x (OpenWrt >= 23.05)](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0)**
**[Самостоятельная установка и настройка ruantiblock v1.x (OpenWrt >= 23.05)](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0)**
**[Автоматическая установка с помощью скрипта - ruantiblock v0.9 (OpenWrt 21.02, 22.03)](https://github.com/gSpotx2f/ruantiblock_wiki_v0.9/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0)**
**[Самостоятельная установка и настройка ruantiblock v0.9 (OpenWrt 21.02, 22.03)](https://github.com/gSpotx2f/ruantiblock_wiki_v0.9/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0)**
**[Старая вики для ruantiblock v0.9 (под iptables, OpenWrt 21.02, 22.03)](https://github.com/gSpotx2f/ruantiblock_wiki_v0.9/wiki)**
**[Самостоятельная установка и настройка ruantiblock v2.x (OpenWrt >= 23.05)](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A1%D0%B0%D0%BC%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0)**
## Дополнительно
**[Использование бесплатных Shadowsocks прокси проекта Outline](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%8B%D1%85-Shadowsocks-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0-Outline)**
**[Настройка ruantiblock для совместной работы с прокси сервером sing‑box](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-ruantiblock-%D0%B4%D0%BB%D1%8F-%D1%81%D0%BE%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D0%B9-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%BC-sing%E2%80%91box)**
**[Использование бесплатных Shadowsocks прокси проекта Outline](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%8B%D1%85-Shadowsocks-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0-Outline)**
## Режимы прокси
Доступны три режима проксификации трафика: с использованием сети [Tor](https://openwrt.org/docs/guide-user/services/tor/client), клиентского VPN соединения ([OpenVPN](https://openwrt.org/docs/guide-user/services/vpn/openvpn/client-luci), [PPTP](https://openwrt.org/docs/guide-user/services/vpn/pptp/client), [WireGuard](https://openwrt.org/docs/guide-user/services/vpn/wireguard/client), [OpenConnect](https://openwrt.org/docs/guide-user/services/vpn/openconnect/client) и прочие, предоставляющие сетевой интерфейс для маршрутизации трафика) и прозрачного прокси (например, [Shadowsocks + ss-redir](https://openwrt.org/docs/guide-user/services/proxy/shadowsocks), [Redsocks](https://github.com/darkk/redsocks) + Socks-прокси и пр.). Режим прокси определяется парметром `ruantiblock.config.proxy_mode`. `1` - Tor, `2` - VPN, `3` - прозрачный прокси. Включение режима в UCI (на примере VPN):
Доступны три режима проксификации трафика: с использованием сети [Tor](https://openwrt.org/docs/guide-user/services/tor/client), клиентского VPN соединения ([OpenVPN](https://openwrt.org/docs/guide-user/services/vpn/openvpn/client-luci), [PPTP](https://openwrt.org/docs/guide-user/services/vpn/pptp/client), [WireGuard](https://openwrt.org/docs/guide-user/services/vpn/wireguard/client), [OpenConnect](https://openwrt.org/docs/guide-user/services/vpn/openconnect/client) и прочие L3 VPN предоставляющие сетевой интерфейс для маршрутизации трафика) и прозрачного прокси (например, [Shadowsocks + ss-redir](https://openwrt.org/docs/guide-user/services/proxy/shadowsocks), [Redsocks](https://github.com/darkk/redsocks) + Socks-прокси и пр.). Режим прокси определяется парметром `ruantiblock.config.proxy_mode`. `1` - Tor, `2` - VPN, `3` - прозрачный прокси. Включение режима в UCI (на примере VPN):
uci set ruantiblock.config.proxy_mode="2"
uci commit ruantiblock
@@ -60,7 +63,7 @@ Ruantiblock - решение для обхода блокировок (при п
Обход блокировок может выполняться в одном из двух вариантов:
1. `ip` - модули загружают из блэклиста все IP адреса и диапазоны CIDR, которые содержатся в записях, и они сразу помещаются в соответствующие nftset'ы. Данный вариант не задействует в своей работе dnsmasq, т.е список блокировок статичен и формируется только при обновлении.
1. `ip` - модули загружают из блэклиста все IP адреса и диапазоны CIDR, которые содержатся в записях, и они сразу помещаются в соответствующие nftset'ы. Данный вариант не задействует в своей работе dnsmasq, т.е список блокировок статичен и формируется только при обновлении. Нужно отметить, что nftables имеет проблемы с большими сетами IP адресов. Даже на избыточно мощном железе эта проблема приводит к существенным подтормаживаниям утилиты nft при работе с таблицей в которой находится такой сет. Для устройств с ограниченными ресрсами (CPU, RAM) эта проблема может привести к существенной утечке памяти в моменты обновления блэклиста. Количество записей при котором проблема становится заметной - около 100000 записей, но всё зависит от количества доступной оперативной памяти. Поэтому использовать режим `ip` нужно лишь понимая к чему это может привести на вашем устройстве.
2. `fqdn` - из блэклиста извлекаются доменные имена (FQDN). Из записей, в которых отсутствует доменное имя, извлекаются IP адреса и CIDR диапазоны. Домены заносятся в конфиг dnsmasq и, далее, dnsmasq формирует временный список nftset по мере обращения к этим доменам, записи добавляются и удаляются динамически на основе DNS-запросов и таймаута. Т.е. домены обрабатывает dnsmasq, а CIDR диапазоны и IP адреса помещаются сразу в nftset. В этом варианте разрешение доменного имени в IP адрес происходит при обращении к заблокированному сайту, следовательно IP адрес сайта всегда будет актуальным (даже если устарел в самом списке блокировок).
@@ -69,22 +72,15 @@ Ruantiblock - решение для обхода блокировок (при п
`ruantiblock` - [https://github.com/gSpotx2f/ruantiblock_blacklist](https://github.com/gSpotx2f/ruantiblock_blacklist). Заранее созданные конфиги для nftables и dnsmasq. Загружаются уже готовые файлы, без выполнения каких-либо оптимизаций и обработок. Обновляется раз в сутки. Этот источник даёт блэклист для стандартной конфигурации ruantiblock и ваш роутер не выполняет никакой тяжёлой работы по обработке данных. Включен по умолчанию и не требует установки модуля-парсера.
Можно [организовать собственный источник](https://github.com/gSpotx2f/ruantiblock_blacklist) заранее подготовленных конфигов со своими настройками, которые формируются вне роутера (например, на выделенном сервере или ПК и загружаются на GitHub). Это может быть полезно при наличии нескольких роутеров (использующих данное решение для обхода блокировок), где формирование конфигов nftables и dnsmasq происходит один раз на одной машине, а другие получают уже готовые сформированные конфиги (не выполняя повторно одну и ту же работу).
`zapret-info` - [https://github.com/zapret-info/z-i](https://github.com/zapret-info/z-i). Реестр в исходном виде. Содержит много дополнительных данных для каждой записи, что увеличивает размер файла (к тому же в кодировке CP1251). Очень надёжный источник, сбоев практически не бывает, расположен на GitHub (есть зеркала).
`zapret-info` - [https://github.com/zapret-info/z-i](https://github.com/zapret-info/z-i). Реестр в формате csv, что делает его очень удобным для разбора. Очень надёжный источник, сбои бывают редко, расположен на GitHub (есть зеркала). Существует с самого начала блокировок в РФ, с 2012 года!
`rublacklist` - [https://rublacklist.net](https://rublacklist.net). Блэклист от Роскомсвободы. В режиме `fqdn`, также, содержит много лишних данных и огромный размер выгрузки, но имеет удобный API. Иногда бывают проблемы с надёжностью (недоступность сайта и пр). Можно использовать в случае недоступности других источников.
`rublacklist` - [https://rublacklist.net](https://rublacklist.net). Блэклист от Роскомсвободы. В режиме `fqdn`, также, содержит много лишних данных и огромный размер выгрузки, но имеет удобный API. Бывают проблемы с надёжностью (недоступность сайта и пр). Можно использовать в случае недоступности других источников. Обновление из этого источника выполняется довольно долго из-за размера выгрузки.
`antifilter` - [https://antifilter.download](https://antifilter.download). Этот источник для устройств, которым не хватает оперативной памяти для полных списков блокировок. Доступен только вариант `ip` - оптимизированный список IP адресов (все адреса приведены к маске /24). Очень компактен в размере, но покрывает большое количество лишних IP адресов в диапазонах. Ссылку на файл блэклиста из этого источника можно добавить в [список удалённых записей пользователя](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B5) и получать IP адреса напрямую без установки парсера. Файл имеет простой формат совместимый с форматом файла записей пользователя. Добавление суммированного списка IP в `user_entries_remote`:
uci set ruantiblock.config.add_user_entries="1"
uci add_list ruantiblock.config.user_entries_remote="https://antifilter.download/list/ipsum.lst"
uci set ruantiblock.config.bllist_preset=""
uci set ruantiblock.config.bllist_module=""
uci commit ruantiblock
/usr/bin/ruantiblock update
`antifilter` - [https://antifilter.download](https://antifilter.download). Этот источник для устройств, которым не хватает оперативной памяти для полных списков блокировок. Доступен только вариант `ip` - оптимизированный список IP адресов (все адреса приведены к маске /24). Очень компактен в размере, но покрывает большое количество лишних IP адресов в диапазонах. Ссылку на файл блэклиста из этого источника можно добавить в [список удалённых записей пользователя](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B5) и получать IP адреса напрямую без установки парсера отключив основной блэклист. Файл имеет простой формат совместимый с форматом файла записей пользователя.
**Модули-парсеры:**
Установка модуля необходима для самостоятельного формирования списка блокировок силами роутера. Модуль выкачивает данные из источника, выполняет их преобразование (включая оптимизации) в необходимый для работы формат. Модуль требуется для всех источников блэклиста (`zapret-info`, `rublacklist`, `antifilter`), кроме `ruantiblock`, который предоставляет уже готовые и оптимизированные конфиги.
Установка модуля необходима для самостоятельного формирования списка блокировок силами роутера. Модуль выкачивает данные из источника, выполняет их преобразование (включая оптимизации) в необходимый для работы формат. Модуль требуется для всех источников блэклиста (`zapret-info`, `rublacklist`, `antifilter`), кроме `ruantiblock`, который предоставляет уже готовые и оптимизированные конфиги. Ну и как было отмечено ранее, `antifilter` тоже можно использовать напрямую без парсера через записи пользователя.
`/usr/libexec/ruantiblock/ruab_parser.lua` - стандартный модуль, написан на Lua. Работает быстро, когда достаточно свободной оперативной памяти. [Установка](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Lua%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C).
@@ -100,6 +96,12 @@ Ruantiblock - решение для обхода блокировок (при п
Далее описаны некоторые опции доступные через UCI, они переопределяют часть переменных конфигурационного файла `/etc/ruantiblock/ruantiblock.conf`.
+ **Запись событий в syslog (`ENABLE_LOGGING=1`):**
Опция включает запись событий в системный лог. Отключить:
uci set ruantiblock.config.enable_logging="0"
+ **Проксификация трафика локальных клиентов (`PROXY_LOCAL_CLIENTS=1`):**
Эта опция включает обработку трафика локальных приложений роутера в ruantiblock. Т.е. различные сетевые утилиты установленные на самом роутере ходят на заблокированные сайты через Tor или VPN. Отключить:
@@ -128,7 +130,7 @@ Ruantiblock - решение для обхода блокировок (при п
+ **VPN интерфейс (IF_VPN="tun0"):**
Параметр нужен для правил маршрутизации в VPN конфигурации. Должен содержать интерфейс L3 VPN. По умолчанию (OpenVPN): `tun0`
Параметр нужен для правил маршрутизации в VPN конфигурации основного блэклиста. Должен содержать интерфейс L3 VPN. По умолчанию (OpenVPN): `tun0`
ruantiblock.config.if_vpn="tun0"
@@ -147,6 +149,12 @@ IP адрес шлюза VPN, который используется в пра
uci set ruantiblock.config.vpn_route_check='1'
+ **Тип прозрачного прокси (`T_PROXY_TYPE=0`):**
Тип прозрачного прокси. Эта опция определяет тип действия в правилах nftables: redirect (`0`) или tproxy (`1`). Изменить:
uci set ruantiblock.config.t_proxy_type="1"
+ **UDP-порт прозрачного прокси (`T_PROXY_PORT_UDP=10053`):**
В режиме проксификации трафика с использованием прозрачного прокси, определяет порт на который может перенаправляться UDP-трафик. Прозрачный прокси должен поддерживать UDP! Изменить порт:
@@ -159,12 +167,6 @@ IP адрес шлюза VPN, который используется в пра
uci set ruantiblock.config.t_proxy_allow_udp="1"
+ **Запись событий в syslog (`ENABLE_LOGGING=1`):**
Опция включает запись событий в системный лог. Отключить:
uci set ruantiblock.config.enable_logging="0"
+ **Включение режима полного прокси (ENABLE_FPROXY=0):**
При включении этой опции, весь трафик хостов заданных в переменной `FPROXY_LIST` будет отправляться в прокси, без применения правил блэклиста. Включить:
@@ -230,7 +232,7 @@ Tor также имеет свой собственный резолвер, ко
## [Способы оптимизации и сокращения количества записей в списке блокировок](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A1%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B-%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8-%D0%B8-%D1%81%D0%BE%D0%BA%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9-%D0%B2-%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B5-%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BE%D0%BA)
## [Записи пользователя в блэклисте](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B5)
## [Записи пользователя](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B5)
## Параметры запуска:
+3 -5
@@ -14,11 +14,9 @@ idn-lua опционально для преобразования кирилл
OpenWrt >= 23.05:
wget --no-check-certificate -O /tmp/ruantiblock-mod-lua_1.6.0-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-lua_1.6.0-1_all.ipk
opkg install /tmp/ruantiblock-mod-lua_1.6.0-1_all.ipk
rm /tmp/ruantiblock-mod-lua_1.6.0-1_all.ipk
[OpenWrt < 23.05](https://github.com/gSpotx2f/ruantiblock_wiki_v0.9/wiki/Lua%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C)
wget --no-check-certificate -O /tmp/ruantiblock-mod-lua_2.0.0-r1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-lua_2.0.0-r1_all.ipk
opkg install /tmp/ruantiblock-mod-lua_2.0.0-r1_all.ipk
rm /tmp/ruantiblock-mod-lua_2.0.0-r1_all.ipk
**4. Включение модуля:**
+3 -5
@@ -9,11 +9,9 @@
OpenWrt >= 23.05:
wget --no-check-certificate -O /tmp/ruantiblock-mod-py_1.6.0-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-py_1.6.0-1_all.ipk
opkg install /tmp/ruantiblock-mod-py_1.6.0-1_all.ipk
rm /tmp/ruantiblock-mod-py_1.6.0-1_all.ipk
[OpenWrt < 23.05](https://github.com/gSpotx2f/ruantiblock_wiki_v0.9/wiki/Python%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C)
wget --no-check-certificate -O /tmp/ruantiblock-mod-py_2.0.0-r1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-py_2.0.0-r1_all.ipk
opkg install /tmp/ruantiblock-mod-py_2.0.0-r1_all.ipk
rm /tmp/ruantiblock-mod-py_2.0.0-r1_all.ipk
**3. Включение модуля:**
+1 -1
@@ -12,4 +12,4 @@ luci-app-ruantiblock - web-приложение (служба в термино
См. [здесь...](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%95%D1%81%D0%BB%D0%B8-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B2%D0%BE%D0%B7%D0%BD%D0%B8%D0%BA%D0%BB%D0%B8-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B...)
![](https://github.com/gSpotx2f/ruantiblock_openwrt/blob/master/screenshots/03.jpg)
![](https://github.com/gSpotx2f/ruantiblock_openwrt/blob/master/screenshots/02.jpg)
@@ -52,6 +52,7 @@
## Зависимости
+ dnsmasq-full
+ kmod-nft-tproxy
+ Tor конфигурация: tor, tor-geoip
+ Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение
+ В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.)
@@ -61,13 +62,14 @@
**1. Необходимо скачать скрипт `autoinstall.sh` в `/tmp`, разрешить выполнение и запустить:**
wget --no-check-certificate -O /tmp/autoinstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/current/autoinstall.sh && chmod +x /tmp/autoinstall.sh && /tmp/autoinstall.sh
wget --no-check-certificate -O /tmp/autoinstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/2.x/autoinstall.sh && chmod +x /tmp/autoinstall.sh && /tmp/autoinstall.sh
**2. После запуска скрипт задаст несколько вопросов по конфигурации:**
+ Режим прокси: Tor, VPN или прозрачный прокси.
+ Выбор списка блокировок: собственный список (только [записи пользователя](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F-%D0%B2-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B5)) или весь блэклист полностью.
+ Установка luci-app-ruantiblock. Приложение для LuCI (веб-интерфейса OpenWrt). [Подробнее тут](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/luci%E2%80%91app%E2%80%91ruantiblock).
+ Установка https-dns-proxy для шифрования DNS.
При выборе Tor конфигурации скрипт устанавливает Tor (если не установлен), скачивает файл `torrc` из репозитория и устанавливает его вместо текущего конфига (старый конфиг бэкапится там же в `/etc/tor`). На конечном этапе добавляется задание для обновления блэклиста в cron: `0 3 */3 * * /usr/bin/ruantiblock update` (скорректируйте под свои требования).
@@ -99,6 +101,13 @@
+ В конфигурации прозрачного прокси - задайте значение TCP-порта на котором принимает соединения прозрачный прокси:
uci set ruantiblock.config.t_proxy_port_tcp='1100'
Если в качестве прокси-сервера предполагается использовать sing-box в режиме TProxy, то задайте значение `t_proxy_type='1'`:
uci set ruantiblock.config.t_proxy_type='1'
Применение настроек UCI:
uci commit ruantiblock
+ **На примере Shadowsocks с использованием ss-redir:** значение TCP-порта должно соответствовать локальному порту указанному в корфигурации ss-redir (значение параметра запуска `ss-redir -l <порт>` или параметр `local_port` в конфиге Shadowsocks `/etc/shadowsocks.json` или параметр `local_port` в UCI-конфиге `/etc/config/shadowsocks-libev` в блоке соответствующего сервера).
@@ -131,11 +140,9 @@
uci add_list ruantiblock.config.bypass_ip_list="217.23.3.91"
uci commit ruantiblock
Создаваемые при обновлениях конфиги со списком блокировок nftables и dnsmasq будут располагаться в `/tmp/ruantiblock` и `/tmp/dnsmasq.d`. При наличии у роутера USB (или eSATA и пр.) настоятельно рекомендуется [перенести директории с данными на внешний носитель](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81-%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%B8-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0-%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9-%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C).
Стоит упомянуть, что при вызове скрипта `/usr/bin/ruantiblock` с параметрами: `start`, `update` или `destroy` - всегда выполняется перезапуск dnsmasq.
Также, необходимо настроить шифрование DNS-трафика (dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https%E2%80%91dns%E2%80%91proxy) и пр.) и [перехват стороннего DNS-трафика](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B5%D0%B3%D0%BE-DNS-%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) хостов локальной сети. В режиме обхода блокировок `fqdn`, все хосты в локальной сети (для которых будет работать обход блокировок) должны использовать DNS-сервер роутера. Поэтому в настройках мобильных устройств и браузеров, нужно отключить опцию "безопасный DNS" (т.е. конфигурацию при которой устройство или программа использует сторонние шифрованные DNS-серверы, игнорируя роутер).
Также, необходимо настроить шифрование DNS-трафика (dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https%E2%80%91dns%E2%80%91proxy) и пр.). В режиме обхода блокировок `fqdn`, все хосты в локальной сети (для которых будет работать обход блокировок) должны использовать DNS-сервер роутера. Поэтому в настройках мобильных устройств и браузеров, нужно отключить опцию "безопасный DNS" (т.е. конфигурацию при которой устройство или программа использует сторонние шифрованные DNS-серверы, игнорируя роутер).
## Первый запуск
@@ -155,6 +162,6 @@
/usr/bin/ruantiblock status
Блок `Nftables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или IP соответствующие счётчики растут.
Блок `Transit traffic:` содержит счётчики пакетов для транзитного трафика, т.е. трафика хостов из локальной сети. Блок `Local traffic:` содержит счётчики трафика приложений самого роутера (локальных клиентов). При запросе заблокированного сайта или IP соответствующие счётчики растут.
Если возникли проблемы, смотрите [здесь...](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%95%D1%81%D0%BB%D0%B8-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B2%D0%BE%D0%B7%D0%BD%D0%B8%D0%BA%D0%BB%D0%B8-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B...)
@@ -15,8 +15,6 @@
/usr/bin/ruantiblock start
/usr/bin/ruantiblock update
При перезапуске службы "firewall" в OpenWrt удаляется вся конфигурация nftables и, соответственно, ruantiblock приходит в выключенное состояние. Поэтому, если в системе используются какие-либо скрипты с перезапуском "firewall", в них следует прописать и перезапуск ruantiblock: `/usr/bin/ruantiblock restart`.
**2. Проверьте запущен ли Tor или VPN клиент**
@@ -36,15 +34,19 @@
/etc/init.d/openvpn enable
В VPN конфигурации проверьте настройки межсетевого экрана: для устройства `tun0` должен быть создан интерфейс (например, с названием `VPN`) и добавлен в зону `wan`, иначе трафик из локальной сети не сможет попасть в VPN тунель.
В VPN конфигурации проверьте настройки межсетевого экрана: для устройства `tun0` должен быть создан интерфейс (например, с названием `VPN`) и добавлен в зону `wan` (или зону созданную специально для VPN), иначе трафик из локальной сети не сможет попасть в VPN тунель. Это относится и к VPN укзанным в настройках экземпляров записей пользователя.
**3. Ошибка маршрутизации VPN (VPN ROUTING ERROR)**
Такая надпись появляется в выводе статуса (`/usr/bin/ruantiblock status`) в том случае, если отсутствует необходимая для работы ruantiblock запись в таблице маршрутизации. Это может быть связано, во-первых, с отсутствием VPN соединения (отключен клиент OpenVPN и пр.). Во-вторых, с тем, что при поднятом VPN соединении не добавляются правила маршрутизации: проверьте наличие скрипта `/etc/hotplug.d/iface/40-ruantiblock` и значение параметра определяющего используемый VPN интерфейс:
Такая надпись появляется в выводе статуса (`/usr/bin/ruantiblock status`) в том случае, если отсутствуют необходимые для работы ruantiblock записи в таблице маршрутизации. Это может быть связано, во-первых, с отсутствием VPN соединения (отключен клиент OpenVPN и пр.) у любого из VPN указанных в настройках (включая записи пользователя). Во-вторых, с тем, что при поднятом VPN соединении не добавляются правила маршрутизации: проверьте наличие скрипта `/etc/hotplug.d/iface/40-ruantiblock` и значение параметра определяющего используемый VPN интерфейс:
uci get ruantiblock.config.if_vpn
Для экземпляров записей пользователя настроенных в режиме VPN (примере первый экземпляр list1):
uci get ruantiblock.list1.u_if_vpn
Далее, для решения проблемы, достаточно выполнить:
/usr/bin/ruantiblock restart
@@ -66,13 +68,13 @@
Провайдеры на своих DNS-серверах часто ограничивают или изменяют сторонний DNS-трафик (DNS-спуфинг). Поэтому необходима замена провайдерского DNS-сервера на сторонний и обязательное применение DNS-шифрования (dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https%E2%80%91dns%E2%80%91proxy) и пр.). Очень желательно настроить [перехват стороннего DNS-трафика](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B5%D0%B3%D0%BE-DNS-%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) хостов локальной сети (в последних версиях https-dns-proxy такая опция уже встроена).
**6. Проверьте попадает ли трафик к заблокированным сайтам в цепочку blacklist в таблице r nftables**
**6. Проверьте попадает ли трафик к заблокированным сайтам в ruantiblock (цепочки nftables)**
Выполните в консоли:
/usr/bin/ruantiblock status
Блок `Nftables rules` содержит счётчики правил для CIDR-диапазонов (`c`), IP адресов (`i`) и IP адресов, которые добавляет dnsmasq (`d`). При запросе заблокированного сайта или IP соответствующие счётчики растут.
Блок `Transit trafic` содержит счётчики правил для всех активных экземпляров. Экземпляр `-main-` - основной блэклист. При запросе заблокированного сайта или IP соответствующие счётчики растут.
**7. Проверьте добавляет ли dnsmasq IP адреса заблокированных доменов из своего конфига в nftset `d`**
@@ -83,7 +85,7 @@
nft list set ip r d
В выводе можно увидеть эти IP адреса (в блоке `elements = { ... }`), если они есть в данный момент. Также, можно смотреть добавляемые dnsmasq IP адреса в веб-интерфейсе на странице статистике в таблице `Dnsmasq` в реальном времени.
В выводе можно увидеть эти IP адреса (в блоке `elements = { ... }`), если они есть в данный момент. Также, можно смотреть добавляемые dnsmasq IP адреса в веб-интерфейсе на странице статистике в таблице `Dnsmasq` в реальном времени, в т.ч. для всех активных экземпляров записей пользователя.
Если при обращении к заблокированному домену dnsmasq не добавляет его IP адрес в свой nftset, то причиной может быть отсутствие обращений к dnsmasq (DNS-серверу) со стороны ОС вашего ПК (или другого устройства). Локальный резолвер ОС часто кэширует полученные адреса и не делает запрос, следовательно, dnsmasq не добавляет IP адрес в nftset и вы получаете "заглушку" от провайдера для данного сайта. По истечении таймаута записи в кэше всё опять работает правильно. В этой ситуации можно либо подождать пока запись будет удалена из кэша по таймауту, либо очистить DNS-кэш ОС. Для Windiows всё просто: `ipconfig /flushdns`, для других ОС сложнее - ищите в Google. Также, не повредит очистить кэш браузера. Попробуйте больше разных заблокированных сайтов для тестирования...
@@ -113,3 +115,7 @@
uci commit ruantiblock
Здесь минимальный список IP адресов, приведённых к подсетям /24 (https://antifilter.download/list/allyouneed.lst). Недостаток в том, что в этих диапазонах большое количество не заблокированных адресов, и трафик к ним будет также проходить через прокси. В общем, в случае нехватки оперативной памяти, это возможный вариант...
Ссылку на список [https://antifilter.download/list/allyouneed.lst](https://antifilter.download/list/allyouneed.lst) также можно добавить в удалённые записи пользователя (формат файла совместим) и не использовать модуль-парсер вообще.
Ну и, естественно, можно использовать свои собственные списки заблокированных хостов и решать самостоятельно какое количество записей будет в вашем блэклисте.
@@ -1,11 +1,29 @@
Добавление собственных записей к списку блокировок (не заблокированные сайты на которые необходимо всегда ходить через прокси). Включение опции:
Добавление собственных записей для обхода блокировок (а также не заблокированных сайтов на которые необходимо всегда ходить через VPN/прокси).
Начиная с версии 2.0 в ruantiblock существует новая концепция функции записей пользователя. Теперь пользовательские записи представляют собой экземпляры с отдельными настройками прокси (Tor, VPN, прозрачный прокси), списка пользовательского блэклиста и ссылок на удалённые файлы записей. Каждый экземпляр имеет свой набор цепочек и правил в nftables, свою таблицу маршрутизации (для VPN конфигурации). Движение трафика по цепочкам экземпляров управляется с помощью приоритетов nftables. Главный экземпляр (основной блэклист) имеет такой же набор цепочек и правил, но использует записи из реестра (обновляемые, как и раньше, либо с GitHub, либо с помощью модуля-парсера из поддерживаемых источников). Помимо главного экземпляра, всего доступно 5 экземпляров для записей пользователя с индивидуальными настройками. Это позволяет настроить обход блокировок с несколькими VPN/прокси по разным спискам (допустим, youtube в один VPN, какие-то избранные сайты в другой, все остальные заблокированные сайты через sing-box и т.п.). Приоритеты экземпляров уменьшаются от list1 до list5, т.е. list1 имеет наивысший приоритет, list5 - наименьший. Главный экземпляр (основной блэклист) имеет самый низкий приоритет. Эти приоритеты имеют значение при наличии дублирующихся записей в списках разных экземпляров, т.е. если сайт есть в нескольких списках, то трафик к нему пойдёт через прокси экземпляра с самым высоким приоритетом. При обновлении блэклиста в итоговые конфиги nftables и dnsmasq добавляются записи только из включенных экземпляров, поэтому всегда после изменений в конфигурации записей пользователя необходимо обновлять блэклист.
Простую конфигурацию с одним пользовательским списком (условно, как в предыдущих версиях ruantiblock) можно создать включив один из экземпляров записей пользователя (в примере это первый экземпляр list1) и указав в его настройках те же параметры, что и для основного блэклиста (тип прокси, VPN-интерфейс, порт прозрачного прокси и т.д.).
Включение экземпляра list1:
uci set ruantiblock.list1.u_enabled="1"
Выбор режима прокси (VPN):
uci set ruantiblock.list1.u_proxy_mode="2"
VPN-интерфейс:
uci set ruantiblock.list1.u_if_vpn="tun0"
Сохрание настроек UCI:
uci set ruantiblock.config.add_user_entries="1"
uci commit ruantiblock
Записи нужно добавить в текстовый файл `/etc/ruantiblock/user_entries` (IP, CIDR или FQDN, каждая запись в новой строке). В записях FQDN можно задать DNS-сервер для разрешения данного домена (через пробел). Также можно комментировать строки (`#` - первый символ строки).
и т.д. Параметры аналогичны параметрам основного экземпляра с префиксом `u_`.
Пример файла `/etc/ruantiblock/user_entries`:
Далее свои записи нужно добавить в текстовый файл `/etc/ruantiblock/user_lists/list1` (IP, CIDR или FQDN, каждая запись в новой строке). В записях FQDN можно задать DNS-сервер для разрешения данного домена (через пробел). Также можно комментировать строки (`#` - первый символ строки).
Пример файла `/etc/ruantiblock/user_lists/list1`:
# FQDN
domain.net
@@ -18,16 +36,16 @@
# CIDR
74.125.0.0/16
В процессе обновления блэклиста можно подгружать дополнительные записи с удалённого сервера по протоколу HTTP. Файл на сервере должен иметь формат аналогичный файлу `/etc/ruantiblock/user_entries`. Не стоит злоупотреблять этой опцией и подключать большие списки, поскольку при добавлении пользовательских записей в блэклист не производится никаких оптимизаций, проверок на повторы и пр. IP адреса и домены добавляются как есть, и нет никакого контроля над их содержимым и размером! Добавление URL удалённого файла:
В процессе обновления блэклиста можно подгружать дополнительные записи с удалённого сервера по протоколу HTTP. Файл на сервере должен иметь формат аналогичный файлу записей пользователя. Не стоит злоупотреблять этой опцией и подключать большие списки, поскольку при добавлении пользовательских записей в блэклист не производится никаких оптимизаций, проверок на повторы и пр. IP адреса и домены добавляются как есть, и нет никакого контроля над их содержимым и размером! Добавление URL удалённого файла:
uci add_list ruantiblock.config.user_entries_remote="http://server.lan/files/user_entries_1"
uci add_list ruantiblock.config.user_entries_remote="http://server.lan/files/user_entries_2"
uci add_list ruantiblock.list1.u_entries_remote="http://server.lan/files/user_entries_1"
uci add_list ruantiblock.list1.u_entries_remote="http://server.lan/files/user_entries_2"
uci commit ruantiblock
и т.д.
Есть возможность задать общий DNS-сервер только для пользовательских FQDN-записей:
uci set ruantiblock.config.user_entries_dns="1.1.1.1#53" # значение в виде пустой строки отключает опцию
uci set ruantiblock.list1.u_entries_dns="1.1.1.1#53" # значение в виде пустой строки отключает опцию
uci commit ruantiblock
Если в какой-либо записи (как в примере выше) указан свой DNS-сервер - то для этого домена используется исключительно он.
@@ -47,4 +65,79 @@
uci set ruantiblock.config.bllist_module=""
uci commit ruantiblock
то для создания правил nftables и dnsmasq будут применяться лишь записи пользователя, без загрузки списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). Применение правил из списка пользователя происходит при выполнении команды обновления, как описано выше (`/usr/bin/ruantiblock update`). Также, можно удалить из cron задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок...
то для создания правил nftables и dnsmasq будут применяться лишь записи пользователя, без загрузки основного списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). Применение правил из списка пользователя происходит при выполнении команды обновления, как описано выше (`/usr/bin/ruantiblock update`). Также, можно удалить из cron задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок.
### Тестирование конфигураций с несколькими экземплярами.
Для проверки правильного движения трафика через разные VPN/прокси можно использовать сервисы для определения публичного IP. Чтобы исключить влияние кэширования DNS далее будем использовать только записи IP адресов. Суть теста: в записи нескольких включенных экземпяров добавляем IP адреса разных сервисов для определения публичного IP адреса (IP самих сервисов получаем с помощью nslookup). Далее на ПК в браузере (или в консоли с помощью curl или wget) открываем страницы этих сервисов получая IP адрес соответствующего VPN/прокси в который ruantiblock заворачивает трафик к этому сервису.
Допустим, у нас есть 3 VPN/прокси, которые заданы в записях пользователя на 3-х инстансах: list1, list2, lis3.
1. Добавляем в файл записей первого инстанса list1 (`/etc/ruantiblock/user_lists/list1`) IPv4 адреса сервиса http://ident.me:
root@OpenWrt:~# nslookup ident.me
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
Name: ident.me
Address: 49.12.234.183
Non-authoritative answer:
Name: ident.me
Address: 2a01:4f8:c0c:bd0a::1
root@OpenWrt:~# echo "49.12.234.183" >> /etc/ruantiblock/user_lists/list1
2. В записи второго инстанса list2 (`/etc/ruantiblock/user_lists/list2`) добавляем IPv4 адреса сервиса http://wgetip.com:
root@OpenWrt:~# nslookup wgetip.com
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
Name: wgetip.com
Address: 188.114.96.3
Name: wgetip.com
Address: 188.114.97.3
Non-authoritative answer:
Name: wgetip.com
Address: 2a06:98c1:3120::3
Name: wgetip.com
Address: 2a06:98c1:3121::3
root@OpenWrt:~# echo -e "188.114.96.3\n188.114.97.3" >> /etc/ruantiblock/user_lists/list2
3. В записи третьего инстанса list3 (`/etc/ruantiblock/user_lists/list3`) добавляем IPv4 адреса сервиса http://ip.tyk.nu:
root@OpenWrt:~# nslookup ip.tyk.nu
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
Name: ip.tyk.nu
Address: 95.216.101.209
Non-authoritative answer:
Name: ip.tyk.nu
Address: 2a01:4f9:2b:151f:80::2
root@OpenWrt:~# echo "95.216.101.209" >> /etc/ruantiblock/user_lists/list3
4. Обновляем блэклист:
ruantiblock update
5. Теперь в браузере на ПК из локальной сети загружаем страницу первого сервиса http://ident.me. IP адрес показанный сервисом должен быть выходным IP адресом VPN/прокси, который задан в первом инстансе list1. Далее аналогично с остальными сайтами: http://wgetip.com должен вернуть выходной IP VPN/прокси из второго инстанса list2, http://ip.tyk.nu - из третьего list3. Также в выводе статуса ruantiblock:
ruantiblock status
в блоке `Transit traffic:` должны расти значения счётчиков `Bytes` для соответствующих инстансов. Если включена опция проксификации трафика локальных приложений роутера, то можно проверить как работают эти правила для самого роутера (в его консоли с помощью wget):
wget -qO - http://ident.me
wget -qO - http://wgetip.com
wget -qO - http://ip.tyk.nu
В выводе статуса, в блоке `Local traffic:`, должны расти значения счётчиков `Bytes` для соответствующих инстансов.
@@ -1,4 +1,4 @@
Можно исключить из обхода блокировок некоторые адреса, диапазоны или сайты. Это может быть полезно, например, если в блэклисте находится целая подсеть (диапазон), а вам необходим прямой доступ к одному из хостов этой сети и т.п. Записи, которые указаны в файле `/etc/ruantiblock/bypass_entries` будут всегда игнорироваться при обходе блокировок (т.е. всегда доступны напрямую, без проксификации, вне зависимости от того находятся ли они в блэклисте или нет). Данная опция реализована при помощи отдельных правил nftables (которые применяются перед правилами отбора пакетов в блэклист), т.е. не зависит от выбранного блэклиста и его содержимого. Включение опции:
Можно исключить из обхода блокировок некоторые адреса, диапазоны или сайты. Это может быть полезно, например, если в блэклисте находится целая подсеть (диапазон), а вам необходим прямой доступ к одному из хостов этой сети и т.п. Записи, которые указаны в файле `/etc/ruantiblock/bypass_entries` будут всегда игнорироваться при обходе блокировок (т.е. всегда доступны напрямую, без проксификации, вне зависимости от того находятся ли они в блэклисте или нет). Данная опция реализована при помощи отдельных правил nftables (которые применяются перед правилами отбора пакетов в блэклист), т.е. не зависит от выбранного блэклиста и его содержимого. Действие этой опции также распространяется на все экземпляры записей пользователя. Включение опции:
uci set ruantiblock.config.bypass_mode="1"
uci commit ruantiblock
@@ -34,6 +34,7 @@
**6. Настройка ruantiblock, конфигурация прозрачного прокси:**
uci set ruantiblock.config.proxy_mode="3"
uci set ruantiblock.config.t_proxy_type="0"
uci set ruantiblock.config.t_proxy_port_tcp="1100"
uci commit ruantiblock
/etc/init.d/ruantiblock restart
@@ -1,4 +1,4 @@
Прокси сервер [sing-box](https://sing-box.sagernet.org/) поддерживает некоторые популярные протоколы проксификации и обфускации трафика (для обхода продвинутых методов блокировки средствами DPI), в том числе Shadowsocks, VLESS, VMess, Hysteria2, Trojan и прочие. Доступен в репозитории OpenWrt **начиная с версии 23.05.** Для работы в связке с ruantiblock необходимо задать в настройках sing-box создание виртуального сетевого интерфейса для локальных клиентов в секции `inbounds`. Этот тип подключения, по сути, аналогичен VPN туннелю 3-го уровня (OpenVPN, Wireguard, PPTP и пр.). Соответственно, ruantiblock будет настроен в режиме `VPN` с перенаправлением трафика заблокированных хостов на интерфейс sing-box.
Прокси сервер [sing-box](https://sing-box.sagernet.org/) поддерживает некоторые популярные протоколы проксификации и обфускации трафика (для обхода продвинутых методов блокировки средствами DPI), в том числе Shadowsocks, VLESS, VMess, Hysteria2, Trojan и прочие. Доступен в репозитории OpenWrt **начиная с версии 23.05.**.
## 1. Установка sing-box:
@@ -7,7 +7,9 @@
opkg install sing-box
## 2. Конфигурация sing-box
## 2.1 Конфигурация sing-box с tun интерфейсом:
Для работы в связке с ruantiblock необходимо задать в настройках sing-box создание виртуального сетевого интерфейса для локальных клиентов в секции `inbounds`. Этот тип подключения, по сути, аналогичен VPN туннелю 3-го уровня (OpenVPN, Wireguard, PPTP и пр.). Соответственно, ruantiblock будет настроен в режиме VPN с перенаправлением трафика заблокированных хостов на интерфейс sing-box.
+ Бэкап стандартного конфига:
@@ -52,7 +54,7 @@
sing-box --config=/etc/sing-box/config.json check
+ Включение и запуск sing-box:
## 2.2 Включение и запуск sing-box:
uci set sing-box.main.enabled="1"
uci set sing-box.main.user="root"
@@ -61,7 +63,7 @@
service sing-box start
## 3. Настройка межсетевого экрана:
## 2.3 Настройка межсетевого экрана для режима tun:
Во-первых, необходимо создать новый неуправляемый сетевой интерфейс OpenWrt (`SING_BOX_TUN`) и связать его с виртуальным сетевым интерфейсом sing-box (`tun1`, который был задан в конфиге ранее):
@@ -96,7 +98,7 @@
service firewall restart
## 4. Настройка ruantiblock
## 2.4 Настройка ruantiblock в режиме VPN
В настройках ruantiblock включаем режим VPN, задаём VPN-интерфейс `tun1`:
@@ -105,3 +107,67 @@
uci commit ruantiblock
service ruantiblock restart
## 3.1 Конфигурация sing-box с прозрачным прокси TProxy:
Здесь sing-box будет принимать соединения в качестве локального прозрачного прокси. Ruantiblock будет настроен в режиме прозрачного прокси для заворачивания трафика заблокированных сайтов в sing-box.
+ Бэкап стандартного конфига:
cp /etc/sing-box/config.json /etc/sing-box/config.json.bak
+ Создание собственного конфига `/etc/sing-box/config.json`:
{
"log": {
"level": "warn"
},
"inbounds": [
{
"type": "tproxy",
"tag": "tproxy-in",
"listen": "0.0.0.0",
"listen_port": 1100,
"sniff": false
},
],
"outbounds": [
{
"type": "shadowsocks",
"tag": "ss-out",
"server": "<SERVER>",
"server_port": <PORT>,
"method": "<METHOD>",
"password": "<PASSWORD>"
}
],
"route": {
"auto_detect_interface": true
}
}
Секция `inbounds` с блоком типа **tproxy** (`"type": "tproxy"`) определяет параметры прозоачного прокси для входящих соединений. Прокси должен принимать соединения на всех адресах (`"listen": "0.0.0.0"`), это необходимо для приёма соединений как удалённых хостов из домашней сети, так и локальных приложений самого роутера. Параметры секции `outbounds` аналогичны описанным в разделе для tun конфигурации выше.
+ Проверка созданного конфига:
sing-box --config=/etc/sing-box/config.json check
## 3.2 Включение и запуск sing-box:
uci set sing-box.main.enabled="1"
uci set sing-box.main.user="root"
uci commit sing-box
service sing-box enable
service sing-box start
## 3.3 Настройка ruantiblock в режиме прозрачного прокси:
В настройках ruantiblock включаем режим прозрачного прокси, задаём тип прокси `1` (tproxy) и TCP-порт прокси:
uci set ruantiblock.config.proxy_mode='3'
uci set ruantiblock.config.t_proxy_type='1'
uci set ruantiblock.config.t_proxy_port_tcp '1100'
uci commit ruantiblock
service ruantiblock restart
@@ -7,3 +7,6 @@
uci set firewall.@redirect[-1].dest_ip="`uci get network.lan.ipaddr|sed 's-/.*$--'`"
uci set firewall.@redirect[-1].name="dnsproxy-dns-leaks"
uci commit firewall
В актуальных сейчас версиях пакета https-dns-proxy правила перехвата DNS трафика добавляются автоматически при включении соответствующей опции, поэтому описанные выше операции являются избыточными.
Нужно учитавать ещё один важный момент касательно стороннего DNS-трафика. Все современные боаузеры и мобильные устройства имеют встроенную функцию шифрования DNS (она может называться "DNS через HTTPS" и т.п. ), её необходимо отключить, чтобы все устройства и приложения в сети использовали исключительно DNS-сервер роутера.
@@ -49,6 +49,7 @@
## Зависимости
+ dnsmasq-full
+ kmod-nft-tproxy
+ Tor конфигурация: tor, tor-geoip
+ Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение
+ В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.)
@@ -59,27 +60,27 @@
**1. Установка зависимостей**
opkg update
opkg --force-overwrite install dnsmasq-full
opkg --force-overwrite install dnsmasq-full kmod-nft-tproxy
**2. Установка ruantiblock**
wget --no-check-certificate -O /tmp/ruantiblock_1.6.0-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock_1.6.0-1_all.ipk
opkg install /tmp/ruantiblock_1.6.0-1_all.ipk
rm /tmp/ruantiblock_1.6.0-1_all.ipk
wget --no-check-certificate -O /tmp/ruantiblock_2.0.0-r1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock_2.0.0-r1_all.ipk
opkg install /tmp/ruantiblock_2.0.0-r1_all.ipk
rm /tmp/ruantiblock_2.0.0-r1_all.ipk
**3. Установка luci-app-ruantiblock**
Приложение для LuCI (веб-интерфейса OpenWrt). [Подробнее тут](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/luci%E2%80%91app%E2%80%91ruantiblock).
wget --no-check-certificate -O /tmp/luci-app-ruantiblock_1.6.0-r1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-app-ruantiblock_1.6.0-r1_all.ipk
opkg install /tmp/luci-app-ruantiblock_1.6.0-r1_all.ipk
wget --no-check-certificate -O /tmp/luci-app-ruantiblock_2.0.0-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-app-ruantiblock_2.0.0-1_all.ipk
opkg install /tmp/luci-app-ruantiblock_2.0.0-1_all.ipk
wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_1.6.0-r1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-i18n-ruantiblock-ru_1.6.0-r1_all.ipk
opkg install /tmp/luci-i18n-ruantiblock-ru_1.6.0-r1_all.ipk
wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_2.0.0-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-i18n-ruantiblock-ru_2.0.0-1_all.ipk
opkg install /tmp/luci-i18n-ruantiblock-ru_2.0.0-1_all.ipk
rm /tmp/luci-app-ruantiblock_1.6.0-r1_all.ipk /tmp/luci-i18n-ruantiblock-ru_1.6.0-r1_all.ipk
rm /tmp/luci-app-ruantiblock_2.0.0-1_all.ipk /tmp/luci-i18n-ruantiblock-ru_2.0.0-1_all.ipk
rm -f /tmp/luci-modulecache/* /tmp/luci-indexcache*
/etc/init.d/rpcd restart
@@ -162,6 +163,10 @@
uci set ruantiblock.config.proxy_mode='3'
+ Выбор типа прозрачного прокси. Тип определяется действием в правилах nftables для перенаправления пакетов в прокси. Поддерживается два типа прозрачного прокси: `redirect` (`t_proxy_type='0'`) для shadowsocks-libev, redsocks и пр.; `tproxy` (`t_proxy_type='1'`) для sing-box в режиме TProxy.
uci set ruantiblock.config.t_proxy_type='1'
+ Задайте значение TCP-порта на котором принимает соединения прозрачный прокси:
uci set ruantiblock.config.t_proxy_port_tcp='1100'
@@ -228,11 +233,9 @@
**11. После установки**
Создаваемые при обновлениях конфиги со списком блокировок nftables и dnsmasq будут располагаться в `/tmp/ruantiblock` и `/tmp/dnsmasq.d`. При наличии у роутера USB (или eSATA и пр.) настоятельно рекомендуется [перенести директории с данными на внешний носитель](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81-%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%B8-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0-%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9-%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C).
Стоит упомянуть, что при вызове скрипта `/usr/bin/ruantiblock` с параметрами: `start`, `update` или `destroy` - всегда выполняется перезапуск dnsmasq.
Также, необходимо настроить шифрование DNS-трафика (dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https%E2%80%91dns%E2%80%91proxy) и пр.) и [перехват стороннего DNS-трафика](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B5%D0%B3%D0%BE-DNS-%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) хостов локальной сети. В режиме обхода блокировок `fqdn`, все хосты в локальной сети (для которых будет работать обход блокировок) должны использовать DNS-сервер роутера. Поэтому в настройках мобильных устройств и браузеров, нужно отключить опцию "безопасный DNS" (т.е. конфигурацию при которой устройство или программа использует сторонние шифрованные DNS-серверы, игнорируя роутер).
Также, необходимо настроить шифрование DNS-трафика (dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https%E2%80%91dns%E2%80%91proxy) и пр.). В режиме обхода блокировок `fqdn`, все хосты в локальной сети (для которых будет работать обход блокировок) должны использовать DNS-сервер роутера. Поэтому в настройках мобильных устройств и браузеров, нужно отключить опцию "безопасный DNS" (т.е. конфигурацию при которой устройство или программа использует сторонние шифрованные DNS-серверы, игнорируя роутер).
## Первый запуск
@@ -252,6 +255,6 @@
/usr/bin/ruantiblock status
Блок `Nftables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или IP соответствующие счётчики растут.
Блок `Transit traffic:` содержит счётчики пакетов для транзитного трафика, т.е. трафика хостов из локальной сети. Блок `Local traffic:` содержит счётчики трафика приложений самого роутера (локальных клиентов). При запросе заблокированного сайта или IP соответствующие счётчики растут.
Если возникли проблемы, смотрите [здесь...](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%95%D1%81%D0%BB%D0%B8-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B2%D0%BE%D0%B7%D0%BD%D0%B8%D0%BA%D0%BB%D0%B8-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B...)
@@ -18,33 +18,19 @@
uci set ruantiblock.config.bllist_ip_limit="30"
Параметр `ruantiblock.config.bllist_gr_excluded_nets` (тип list) может содержать шаблоны подсетей (в виде: `68.183.221.`, `149.154.162.` и пр.), адреса которых никогда не группируются (важно для VPN конфигурации, ниже подробнее):
uci add_list ruantiblock.config.bllist_gr_excluded_nets="68.183.221."
uci add_list ruantiblock.config.bllist_gr_excluded_nets="149.154.162."
и т.д.
В файле `/etc/ruantiblock/gr_excluded_nets` определяются шаблоны подсетей (в виде: `68.183.221.`, `149.154.162.` и пр.), адреса которых никогда не группируются (важно для VPN конфигурации, ниже подробнее). Формат файла: один шаблон IP подсети (/24) на строку , можно комментировать строки (# - первый символ строки). Пример:
#comment
74.125.131.
74.125.0.
При использовании VPN конфигурации необходимо добавить IP адрес подсети VPN-сервера в файл `/etc/ruantiblock/gr_excluded_nets` для исключения этой подсети из группировки списка IP адресов (иначе, в случае присутствия заблокированных адресов в подсети, парсер может сгруппировать эти адреса в запись CIDR и VPN-клиент будет пытаться заворачивать своё соединение в себя). Например, если IP адрес VPN-сервера 217.23.3.91, то нужно добавить `217.23.3.`, как было описано выше.
Также, можно применить опции суммаризации IP адресов (суммирование идущих подряд IP адресов в диапазоны CIDR). В чистом виде, без других оптимизаций, суммаризация даёт некоторое уменьшение записей (плюс в том, что в получившиеся диапазоны не попадают не заблокированные адреса). Суммаризация выполняется после группировки IP адресов, поэтому применение обеих этих оптимизаций даёт неплохой результат (суммаризация относительно тяжёлая операция и увеличивает время обработки блэклиста при обновлении). Оптимизации IP адресов применяются в обоих режмах обновления блэклиста (`ip` и `fqdn`):
uci set ruantiblock.config.bllist_summarize_ip="1"
uci set ruantiblock.config.bllist_summarize_cidr="1"
При использовании VPN конфигурации необходимо добавить IP адрес подсети VPN-сервера в парметр `ruantiblock.config.bllist_gr_excluded_nets`, для исключения этой подсети из группировки списка IP адресов (иначе, в случае присутствия заблокированных адресов в подсети, парсер может сгруппировать эти адреса в запись CIDR и VPN-клиент будет пытаться заворачивать своё соединение в себя). Например, если IP адрес VPN-сервера 217.23.3.91:
uci add_list ruantiblock.config.bllist_gr_excluded_nets="217.23.3." #тип list!
Можно добавлять несколько подсетей:
uci add_list ruantiblock.config.bllist_gr_excluded_nets="217.23.3."
uci add_list ruantiblock.config.bllist_gr_excluded_nets="209.58.142."
и т.д.
**3.** Фильтрация записей. Исключение из итоговых конфигов nftables и dnsmasq записей ненужных вам хостов по шаблонам. К примеру, если вы никогда не посещаете онлайн-казино, то можно добавить шаблоны для исключения подобных сайтов, чтобы сократить размер конфигов и, как следствие, потребление оперативной памяти. [Подробнее об этой функции...](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B0-%D0%BF%D0%BE-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0%D0%BC)
**4.** Отключение альтернативных DNS-серверов в конфиге dnsmasq сокращает количество строк конфигурации в 2 раза (в режиме обновления блэклиста `fqdn`):
@@ -53,26 +39,4 @@
Вместо провайдерского DNS-сервера можно использовать сторонние (`8.8.8.8`, `1.1.1.1` и пр.). Для провайдеров, блокирующих сторонние DNS-серверы, есть dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https%E2%80%91dns%E2%80%91proxy) и пр.
**5.** Если вы используете VPN сервис с приемлемым качеством коннекта и без ограничений по типу трафика, то можно попробовать вариант с режимами обновления `ip`:
uci set ruantiblock.config.bllist_preset="rublacklist-ip"
или
uci set ruantiblock.config.bllist_preset="zapret-info-ip"
или
uci set ruantiblock.config.bllist_preset="antifilter-ip"
в совокупности с методом оптимизации списка ip-адресов (п.2). В этом случае, в nftables будет добавляться оптимизированный список всех ip-адресов из блэклиста. Такая конфигурация приведёт к избыточному использованию VPN-соединения, но позволит иcключить из схемы разрешение имён DNS для записей блэклиста (пользовательские FQDN записи всё-равно будут использовать DNS).
**6.** Пример комбинации разных оптимизаций списка блокировок:
uci set ruantiblock.config.bllist_preset="rublacklist-ip"
uci set ruantiblock.config.bllist_ip_limit="30"
uci set ruantiblock.config.bllist_summarize_ip="1"
uci set ruantiblock.config.bllist_summarize_cidr="1"
uci commit ruantiblock
Здесь обновление блэклиста выполняется в режиме `ip`, включена группировка и суммаризация IP адресов. После применения настроек нужно обновить блэклист для получения результата:
/usr/bin/ruantiblock update
Подбирая разные комбинации параметров оптимизации можно добиться оптимального для вашего устройства баланса между размером конечных конфигов (nftables, dnsmasq) и количеством лишних IP адресов и доменов попадающих под правила в результате оптимизаций.
+2 -2
@@ -1,7 +1,7 @@
Для удаления ruantiblock можно воспользоваться скриптом `uninstall.sh`:
wget --no-check-certificate -O /tmp/uninstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/current/uninstall.sh && chmod +x /tmp/uninstall.sh && /tmp/uninstall.sh
wget --no-check-certificate -O /tmp/uninstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/2.x/uninstall.sh && chmod +x /tmp/uninstall.sh && /tmp/uninstall.sh
При перустановке ruantiblock, также, желательно сначала выполнить удаление (заранее сохранив все необходимые конфиги), а затем чистую установку...
При перустановке ruantiblock, также, желательно сначала выполнить удаление (заранее сохранив все необходимые конфиги), а затем чистую установку.
@@ -1,3 +1,5 @@
Применение описанного здесь метода возможно только для режимов обновления блэклиста использующих полный реестр (т.е. источники `zapret-info` и `rublacklist`) и являются функциональностью реализованной в модулях-парсерах. При использовании стандартного источника `ruantiblock` (без установки модуля-парсера) эти методы не работают.
При обновлении списка блокировок, механизм фильтрации позволяет отбирать в итоговые конфигурационные файлы (nftables и dnsmasq) записи по собственным шаблонам. Таким образом можно существенно сократить список доменов в конфиге dnsmasq (в режиме обновления блэклиста `fqdn`), исключив ненужные сайты, например: онлайн-казино, наркотики, порно и прочие не интересующие вас темы. Также можно применять шаблоны для фильтрации IP адресов и диапазонов CIDR. Исключение записей происходит на этапе первичного разбора, а поэтому благотворно сказывается на использовании оперативной памяти модулями-парсерами (исключённые записи не хранятся в памяти во время работы модуля). Есть отрицательный момент - процесс обновления выполняется медленнее.
## Опции для фильтрации записей