From ceac89e2d8ecb535d2fd01c609cfdcd08d05f1e4 Mon Sep 17 00:00:00 2001 From: gSpot Date: Sun, 3 Nov 2024 02:27:11 +0300 Subject: [PATCH] Updated --- Home.md | 68 +++++------ Lua‑модуль.md | 8 +- Python‑модуль.md | 8 +- luci‑app‑ruantiblock.md | 2 +- Автоматическая-установка-с-помощью-скрипта.md | 17 ++- Если-после-установки-возникли-проблемы....md | 20 ++-- Записи-пользователя-в-блэклисте.md | 111 ++++++++++++++++-- Исключение-хостов-из-обхода-блокировок.md | 2 +- ...ние-бесплатных-Shadowsocks-прокси-проекта-Outline.md | 1 + ...для-совместной-работы-с-прокси-сервером-sing‑box.md | 76 +++++++++++- Перехват-стороннего-DNS-трафика.md | 3 + Самостоятельная-установка-и-настройка.md | 29 +++-- ...ии-и-сокращения-количества-записей-в-списке-блокировок.md | 40 +------ Удаление-ruantiblock.md | 4 +- Фильтрация-записей-блэклиста-по-шаблонам.md | 2 + 15 files changed, 267 insertions(+), 124 deletions(-) diff --git a/Home.md b/Home.md index 1b5dc9c..848be1f 100644 --- a/Home.md +++ b/Home.md @@ -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) ## Параметры запуска: diff --git a/Lua‑модуль.md b/Lua‑модуль.md index 0820fdd..1941dbd 100644 --- a/Lua‑модуль.md +++ b/Lua‑модуль.md @@ -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. Включение модуля:** diff --git a/Python‑модуль.md b/Python‑модуль.md index 006423e..16deee1 100644 --- a/Python‑модуль.md +++ b/Python‑модуль.md @@ -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. Включение модуля:** diff --git a/luci‑app‑ruantiblock.md b/luci‑app‑ruantiblock.md index 5b0edf9..1981fb0 100644 --- a/luci‑app‑ruantiblock.md +++ b/luci‑app‑ruantiblock.md @@ -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) diff --git a/Автоматическая-установка-с-помощью-скрипта.md b/Автоматическая-установка-с-помощью-скрипта.md index 1be432e..c086925 100644 --- a/Автоматическая-установка-с-помощью-скрипта.md +++ b/Автоматическая-установка-с-помощью-скрипта.md @@ -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...) diff --git a/Если-после-установки-возникли-проблемы....md b/Если-после-установки-возникли-проблемы....md index aadf185..f8d8a1f 100644 --- a/Если-после-установки-возникли-проблемы....md +++ b/Если-после-установки-возникли-проблемы....md @@ -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) также можно добавить в удалённые записи пользователя (формат файла совместим) и не использовать модуль-парсер вообще. + +Ну и, естественно, можно использовать свои собственные списки заблокированных хостов и решать самостоятельно какое количество записей будет в вашем блэклисте. diff --git a/Записи-пользователя-в-блэклисте.md b/Записи-пользователя-в-блэклисте.md index 85856dc..131fd72 100644 --- a/Записи-пользователя-в-блэклисте.md +++ b/Записи-пользователя-в-блэклисте.md @@ -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` для соответствующих инстансов. diff --git a/Исключение-хостов-из-обхода-блокировок.md b/Исключение-хостов-из-обхода-блокировок.md index cd6d1fb..879a2cd 100644 --- a/Исключение-хостов-из-обхода-блокировок.md +++ b/Исключение-хостов-из-обхода-блокировок.md @@ -1,4 +1,4 @@ -Можно исключить из обхода блокировок некоторые адреса, диапазоны или сайты. Это может быть полезно, например, если в блэклисте находится целая подсеть (диапазон), а вам необходим прямой доступ к одному из хостов этой сети и т.п. Записи, которые указаны в файле `/etc/ruantiblock/bypass_entries` будут всегда игнорироваться при обходе блокировок (т.е. всегда доступны напрямую, без проксификации, вне зависимости от того находятся ли они в блэклисте или нет). Данная опция реализована при помощи отдельных правил nftables (которые применяются перед правилами отбора пакетов в блэклист), т.е. не зависит от выбранного блэклиста и его содержимого. Включение опции: +Можно исключить из обхода блокировок некоторые адреса, диапазоны или сайты. Это может быть полезно, например, если в блэклисте находится целая подсеть (диапазон), а вам необходим прямой доступ к одному из хостов этой сети и т.п. Записи, которые указаны в файле `/etc/ruantiblock/bypass_entries` будут всегда игнорироваться при обходе блокировок (т.е. всегда доступны напрямую, без проксификации, вне зависимости от того находятся ли они в блэклисте или нет). Данная опция реализована при помощи отдельных правил nftables (которые применяются перед правилами отбора пакетов в блэклист), т.е. не зависит от выбранного блэклиста и его содержимого. Действие этой опции также распространяется на все экземпляры записей пользователя. Включение опции: uci set ruantiblock.config.bypass_mode="1" uci commit ruantiblock diff --git a/Использование-бесплатных-Shadowsocks-прокси-проекта-Outline.md b/Использование-бесплатных-Shadowsocks-прокси-проекта-Outline.md index b365936..f9b3804 100644 --- a/Использование-бесплатных-Shadowsocks-прокси-проекта-Outline.md +++ b/Использование-бесплатных-Shadowsocks-прокси-проекта-Outline.md @@ -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 diff --git a/Настройка-ruantiblock-для-совместной-работы-с-прокси-сервером-sing‑box.md b/Настройка-ruantiblock-для-совместной-работы-с-прокси-сервером-sing‑box.md index 702e84f..3b529e0 100644 --- a/Настройка-ruantiblock-для-совместной-работы-с-прокси-сервером-sing‑box.md +++ b/Настройка-ruantiblock-для-совместной-работы-с-прокси-сервером-sing‑box.md @@ -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_port": , + "method": "", + "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 diff --git a/Перехват-стороннего-DNS-трафика.md b/Перехват-стороннего-DNS-трафика.md index 922aa37..9a5b07c 100644 --- a/Перехват-стороннего-DNS-трафика.md +++ b/Перехват-стороннего-DNS-трафика.md @@ -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-сервер роутера. diff --git a/Самостоятельная-установка-и-настройка.md b/Самостоятельная-установка-и-настройка.md index f088bc3..ef333ab 100644 --- a/Самостоятельная-установка-и-настройка.md +++ b/Самостоятельная-установка-и-настройка.md @@ -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...) diff --git a/Способы-оптимизации-и-сокращения-количества-записей-в-списке-блокировок.md b/Способы-оптимизации-и-сокращения-количества-записей-в-списке-блокировок.md index 6363806..5c3f1cd 100644 --- a/Способы-оптимизации-и-сокращения-количества-записей-в-списке-блокировок.md +++ b/Способы-оптимизации-и-сокращения-количества-записей-в-списке-блокировок.md @@ -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 адресов и доменов попадающих под правила в результате оптимизаций. diff --git a/Удаление-ruantiblock.md b/Удаление-ruantiblock.md index 160a27b..656aa46 100644 --- a/Удаление-ruantiblock.md +++ b/Удаление-ruantiblock.md @@ -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, также, желательно сначала выполнить удаление (заранее сохранив все необходимые конфиги), а затем чистую установку. diff --git a/Фильтрация-записей-блэклиста-по-шаблонам.md b/Фильтрация-записей-блэклиста-по-шаблонам.md index a7c8386..1774283 100644 --- a/Фильтрация-записей-блэклиста-по-шаблонам.md +++ b/Фильтрация-записей-блэклиста-по-шаблонам.md @@ -1,3 +1,5 @@ +Применение описанного здесь метода возможно только для режимов обновления блэклиста использующих полный реестр (т.е. источники `zapret-info` и `rublacklist`) и являются функциональностью реализованной в модулях-парсерах. При использовании стандартного источника `ruantiblock` (без установки модуля-парсера) эти методы не работают. + При обновлении списка блокировок, механизм фильтрации позволяет отбирать в итоговые конфигурационные файлы (nftables и dnsmasq) записи по собственным шаблонам. Таким образом можно существенно сократить список доменов в конфиге dnsmasq (в режиме обновления блэклиста `fqdn`), исключив ненужные сайты, например: онлайн-казино, наркотики, порно и прочие не интересующие вас темы. Также можно применять шаблоны для фильтрации IP адресов и диапазонов CIDR. Исключение записей происходит на этапе первичного разбора, а поэтому благотворно сказывается на использовании оперативной памяти модулями-парсерами (исключённые записи не хранятся в памяти во время работы модуля). Есть отрицательный момент - процесс обновления выполняется медленнее. ## Опции для фильтрации записей