diff --git a/Home.md b/Home.md index b358a6b..c0dcce2 100644 --- a/Home.md +++ b/Home.md @@ -1,15 +1,21 @@ ## Описание -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), а также список созданный самим пользователем. Включает в себя функции управления правилами iptables, списками ipset и парсер списка блокировок. Доступны конфигурации с использованием доменных имен (dnsmasq) и IP адресов (включая диапазоны CIDR). +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). Данная версия решения предназначена для OpenWrt. В отличии от других решений подобного типа не имеет жёсткой интеграции и привязки исключительно к OpenWrt (при этом поддерживает конфигурацию через UCI, а также имеется функциональное LuCI-приложение) и может быть перенесено на другие Linux. Вся конфигурация находится в одном месте, все операции выполняются с помощью одного скрипта (`/usr/bin/ruantiblock`), широкие возможности конфигурации. Помимо прочего, данное решение предлагает опции для собственной тонкой настройки оптимизации списка блокировок: группировка и суммаризация IP, объединение поддоменов, фильтрация записей по шаблонам... +Текущая актуальная ветка ruantiblock (для OpenWrt >= 23.05) [v1.x](https://github.com/gSpotx2f/ruantiblock_openwrt). Старая ветка (для OpenWrt <= 22.03, более не развивается) [v0.9](https://github.com/gSpotx2f/ruantiblock_openwrt/tree/0.9). -## [Автоматическая установка с помощью скрипта](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) -## [Самостоятельная установка и настройка](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 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) -## [Самостоятельная установка и настройка v1.1 (OpenWrt 23.05 и snapshot)](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-v1.1) +## [Самостоятельная установка и настройка 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 (OpenWrt 21.02, 22.03)](https://github.com/gSpotx2f/ruantiblock_wiki_v0.9/wiki) ## [Использование бесплатных 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) @@ -21,7 +27,7 @@ Ruantiblock - решение для обхода блокировок (при п uci set ruantiblock.config.proxy_mode="2" uci commit ruantiblock -Данный параметр влияет, в первую очередь, на процесс создания правил iptables. В конфигурациях Tor и прозрачного прокси правила создаются в цепочке `nat`, при VPN конфигурации - в `mangle`. Соответственно, и удаление правил при выключении ruantiblock зависит от выбранного типа прокси. Поэтому, перед изменением данного параметра следует отключить ruantiblock (`/usr/bin/ruantiblock stop`), для корректного удаления правил предыдущей конфигурации! +Данный параметр влияет, в первую очередь, на процесс создания правил nftables. ## Режимы обновления блэклиста и модули-парсеры @@ -47,14 +53,14 @@ Ruantiblock - решение для обхода блокировок (при п Обход блокировок может выполняться в одном из двух вариантов: -1. `ip` - модули загружают из блэклиста все IP адреса и диапазоны CIDR, которые содержатся в записях, и они сразу помещаются в соответствующие ipset'ы. Данный вариант не задействует в своей работе dnsmasq, т.е список блокировок статичен и формируется только при обновлении. +1. `ip` - модули загружают из блэклиста все IP адреса и диапазоны CIDR, которые содержатся в записях, и они сразу помещаются в соответствующие nftset'ы. Данный вариант не задействует в своей работе dnsmasq, т.е список блокировок статичен и формируется только при обновлении. -2. `fqdn` - из блэклиста извлекаются доменные имена (FQDN). Из записей, в которых отсутствует доменное имя, извлекаются IP адреса и CIDR диапазоны. Домены заносятся в конфиг dnsmasq и, далее, dnsmasq формирует временный список ipset по мере обращения к этим доменам, записи добавляются и удаляются динамически на основе DNS-запросов и таймаута. Т.е. домены обрабатывает dnsmasq, а CIDR диапазоны и IP адреса помещаются сразу в ipset. В этом варианте разрешение доменного имени в IP адрес происходит при обращении к заблокированному сайту, следовательно IP адрес сайта всегда будет актуальным (даже если устарел в самом списке блокировок). +2. `fqdn` - из блэклиста извлекаются доменные имена (FQDN). Из записей, в которых отсутствует доменное имя, извлекаются IP адреса и CIDR диапазоны. Домены заносятся в конфиг dnsmasq и, далее, dnsmasq формирует временный список nftset по мере обращения к этим доменам, записи добавляются и удаляются динамически на основе DNS-запросов и таймаута. Т.е. домены обрабатывает dnsmasq, а CIDR диапазоны и IP адреса помещаются сразу в nftset. В этом варианте разрешение доменного имени в IP адрес происходит при обращении к заблокированному сайту, следовательно IP адрес сайта всегда будет актуальным (даже если устарел в самом списке блокировок). **Источники блэклиста:** -`ruantiblock` - [https://github.com/gSpotx2f/ruantiblock_blacklist](https://github.com/gSpotx2f/ruantiblock_blacklist). Заранее созданные конфиги для ipset и dnsmasq. Загружаются уже готовые файлы, без выполнения каких-либо оптимизаций и обработок. Обновляется раз в сутки. Этот источник даёт блэклист для стандартной конфигурации ruantiblock и ваш роутер не выполняет никакой тяжёлой работы по обработке данных. Включен по умолчанию и не требует установки модуля-парсера. -Можно [организовать собственный источник](https://github.com/gSpotx2f/ruantiblock_blacklist) заранее подготовленных конфигов со своими настройками, которые формируются вне роутера (например, на выделенном сервере или ПК и загружаются на GitHub). Это может быть полезно при наличии нескольких роутеров (использующих данное решение для обхода блокировок), где формирование конфигов ipset и dnsmasq происходит один раз на одной машине, а другие получают уже готовые сформированные конфиги (не выполняя повторно одну и ту же работу). +`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 (есть зеркала). @@ -86,11 +92,11 @@ Ruantiblock - решение для обхода блокировок (при п uci set ruantiblock.config.proxy_local_clients="0" -+ **Очистка ipset перед обновлением блэклиста (`IPSET_CLEAR_SETS=1`):** ++ **Очистка сетов nftables перед обновлением блэклиста (`NFTSET_CLEAR_SETS=1`):** Включение этой опции позволяет освободить некоторое количество оперативной памяти (зависит от текущего размера списка блокировок) перед обновлением блэклиста. Недостаток в том, что во время обновления не применяются правила отбора трафика в Tor или VPN, т.е. обход блокировок не работает до завершения обновления блэклиста. Следует применять лишь в случае проблем со свободной оперативной памятью. Включить: - uci set ruantiblock.config.ipset_clear_sets="1" + uci set ruantiblock.config.nftset_clear_sets="1" + **Режим фильтра хостов (ALLOWED_HOSTS_MODE=0):** @@ -112,18 +118,6 @@ Ruantiblock - решение для обхода блокировок (при п ruantiblock.config.if_vpn="tun0" -+ **Запись событий в syslog (`ENABLE_LOGGING=1`):** - -Опция включает запись событий в системный лог. Отключить: - - uci set ruantiblock.config.enable_logging="0" - -+ **Отправлять в Tor UDP-трафик (`TOR_ALLOW_UDP=0`):** - -В режиме проксификации трафика с использованием Tor, UDP-трафик также отправляется в Tor. При отключении этой опции в Tor попадает только TCP, а UDP идёт напрямую, без обхода блокировок. Включить: - - uci set ruantiblock.config.tor_allow_udp="1" - + **UDP-порт прозрачного прокси (`T_PROXY_PORT_UDP=10053`):** В режиме проксификации трафика с использованием прозрачного прокси, определяет порт на который может перенаправляться UDP-трафик. Прозрачный прокси должен поддерживать UDP! Изменить порт: @@ -136,7 +130,33 @@ Ruantiblock - решение для обхода блокировок (при п uci set ruantiblock.config.t_proxy_allow_udp="1" -+ **Оптимизации записей в итоговых конфигах ipset и masq: группировка субдоменов и IP адресов, суммаризация IP адресов (`BLLIST_SD_LIMIT`, `BLLIST_IP_LIMIT`, `BLLIST_GR_EXCLUDED_SLD`, `BLLIST_GR_EXCLUDED_NETS`, `BLLIST_SUMMARIZE_IP`, `BLLIST_SUMMARIZE_CIDR`):** ++ **Запись событий в syslog (`ENABLE_LOGGING=1`):** + +Опция включает запись событий в системный лог. Отключить: + + uci set ruantiblock.config.enable_logging="0" + ++ **Включение режима полного прокси (ENABLE_FPROXY=0):** + +При включении этой опции, весь трафик хостов заданных в переменной `FPROXY_LIST` будет отправляться в прокси, без применения правил блэклиста. Включить: + + uci set ruantiblock.config.enable_fproxy="1" + ++ **Список IP адресов для режима полного прокси (FPROXY_LIST=""):** + +Добавление хостов в список: + + uci add_list ruantiblock.config.fproxy_list="192.168.0.10" + uci add_list ruantiblock.config.fproxy_list="192.168.0.15" + и т.д. + ++ **Скачивание блэклиста через прокси при обновлении (ENABLE_BLLIST_PROXY=0):** + +Во время обновления блэклист скачивается через прокси. Необходимо, если источник блэклиста заблокирован. Включить: + + uci set ruantiblock.config.enable_bllist_proxy="1" + ++ **Оптимизации записей в итоговых конфигах nftables и dnsmasq: группировка субдоменов и IP адресов, суммаризация IP адресов (`BLLIST_SD_LIMIT`, `BLLIST_IP_LIMIT`, `BLLIST_GR_EXCLUDED_SLD`, `BLLIST_GR_EXCLUDED_NETS`, `BLLIST_SUMMARIZE_IP`, `BLLIST_SUMMARIZE_CIDR`):** [Подробнее здесь](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)... @@ -180,18 +200,18 @@ Tor также имеет свой собственный резолвер, ко ## Параметры запуска: - ruantiblock start # Включение ruantiblock. Создаются списки ipset, правила iptables и пр. - ruantiblock stop # Выключение ruantiblock. Очищаются все списки ipset, удаляются правила iptables. Трафик идет стандартным способом, Tor или VPN не используется - ruantiblock destroy # То же, что и stop + удаление всех списков ipset и очистка файлов ruantiblock.dnsmasq и ruantiblock.ip + ruantiblock start # Включение ruantiblock. Создаются правила nftables и пр. + ruantiblock stop # Выключение ruantiblock. Очищаются все списки nftset, удаляются правила nftables. Трафик идет стандартным способом, Tor или VPN не используется + ruantiblock destroy # То же, что и stop + удаление всех списков nftset, удаление таблицы nftables и очистка файлов ruantiblock.dnsmasq и ruantiblock.ip ruantiblock restart # Рестарт - ruantiblock reload # Пересоздание цепочки и правил iptables (а также таблицы маршутизации при VPN-конфигурации) - ruantiblock update # Обновление блэклиста и списков ipset + ruantiblock reload # Пересоздание цепочки и правил nftables (а также таблицы маршутизации при VPN-конфигурации) + ruantiblock update # Обновление блэклиста и списков nftset ruantiblock force-update # Принудительное обновление блэклиста (может потребоваться если предыдущее обновление выполнено некорректно или было прервано в процессе выполнения) ruantiblock data-files # Создание файлов ruantiblock.dnsmasq и ruantiblock.ip, без обновления сетевой конфигурации - ruantiblock status # Вывод текущего статуса, а также общей инфо (кол-во записей в списках ipset, дата последнего обновления блэклиста и пр.) + ruantiblock status # Вывод текущего статуса, а также общей инфо (кол-во записей в списках nftset, дата последнего обновления блэклиста и пр.) -Перед изменением конфигурации ruantiblock необходимо обязательно выполнить удаление всех сетов и правил iptables: +Перед изменением конфигурации ruantiblock необходимо обязательно выполнить удаление всех сетов и правил nftables: /usr/bin/ruantiblock destroy diff --git a/Lua‑модуль.md b/Lua‑модуль.md index 2d04a8e..17ab4d1 100644 --- a/Lua‑модуль.md +++ b/Lua‑модуль.md @@ -10,18 +10,14 @@ **3. Скачивание файлов и установка:** -OpenWrt <= 22.03: +OpenWrt >= 23.05: - wget --no-check-certificate -O /tmp/ruantiblock-mod-lua_0.9.7-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/22.03/ruantiblock-mod-lua_0.9.7-1_all.ipk - opkg install /tmp/ruantiblock-mod-lua_0.9.7-1_all.ipk - rm /tmp/ruantiblock-mod-lua_0.9.7-1_all.ipk - -OpenWrt 23.05 и snapshot: - - wget --no-check-certificate -O /tmp/ruantiblock-mod-lua_1.3-2_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/23.05/ruantiblock-mod-lua_1.3-2_all.ipk + wget --no-check-certificate -O /tmp/ruantiblock-mod-lua_1.3-2_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-lua_1.3-2_all.ipk opkg install /tmp/ruantiblock-mod-lua_1.3-2_all.ipk rm /tmp/ruantiblock-mod-lua_1.3-2_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) + **4. Включение модуля:** uci set ruantiblock.config.bllist_module="/usr/libexec/ruantiblock/ruab_parser.lua" diff --git a/Python‑модуль.md b/Python‑модуль.md index ebcefcf..19b84c7 100644 --- a/Python‑модуль.md +++ b/Python‑модуль.md @@ -7,30 +7,14 @@ **2. Скачивание файлов и установка:** -OpenWrt 19.07: +OpenWrt >= 23.05: - wget --no-check-certificate -O /tmp/ruantiblock-mod-py_0.9.0-2_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/19.07/ruantiblock-mod-py_0.9.0-2_all.ipk - opkg install /tmp/ruantiblock-mod-py_0.9.0-2_all.ipk - rm /tmp/ruantiblock-mod-py_0.9.0-2_all.ipk - -OpenWrt 21.02: - - wget --no-check-certificate -O /tmp/ruantiblock-mod-py_0.9.4-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/21.02/ruantiblock-mod-py_0.9.4-1_all.ipk - opkg install /tmp/ruantiblock-mod-py_0.9.4-1_all.ipk - rm /tmp/ruantiblock-mod-py_0.9.4-1_all.ipk - -OpenWrt 22.03: - - wget --no-check-certificate -O /tmp/ruantiblock-mod-py_0.9.7-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/22.03/ruantiblock-mod-py_0.9.7-1_all.ipk - opkg install /tmp/ruantiblock-mod-py_0.9.7-1_all.ipk - rm /tmp/ruantiblock-mod-py_0.9.7-1_all.ipk - -OpenWrt 23.05 и snapshot: - - wget --no-check-certificate -O /tmp/ruantiblock-mod-py_1.3-2_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/23.05/ruantiblock-mod-py_1.3-2_all.ipk + wget --no-check-certificate -O /tmp/ruantiblock-mod-py_1.3-2_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-py_1.3-2_all.ipk opkg install /tmp/ruantiblock-mod-py_1.3-2_all.ipk rm /tmp/ruantiblock-mod-py_1.3-2_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) + **3. Включение модуля:** uci set ruantiblock.config.bllist_module="/usr/libexec/ruantiblock/ruab_parser.py" diff --git a/luci‑app‑ruantiblock.md b/luci‑app‑ruantiblock.md index 78533ab..5b0edf9 100644 --- a/luci‑app‑ruantiblock.md +++ b/luci‑app‑ruantiblock.md @@ -8,14 +8,6 @@ luci-app-ruantiblock - web-приложение (служба в термино + OpenWrt >= 19.07. LuCI, начиная с версии OpenWrt 19.07, перходит на новый формат приложений. Старый формат с Lua-бэкэндом ещё поддерживается, но новые приложения необходимо писать с использованием другой библиотеки (на клиентской стороне, JS + JSON-RPC). Данное приложение написано в новом формате, а поэтому работа на более старых версиях не гарантируется. -## Использование - -Есть одно замечание по настройкам: опции режимов прокси (Tor, VPN и прозрачный прокси), на вкладке "Настройки", доступны только в выключенном состоянии ruantiblock. - -![](https://github.com/gSpotx2f/ruantiblock_openwrt/blob/master/screenshots/01.jpg) -![](https://github.com/gSpotx2f/ruantiblock_openwrt/blob/master/screenshots/02.jpg) - - ## Сообщение "Ошибка маршрутизации VPN" См. [здесь...](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 a5765b0..0584c83 100644 --- a/Автоматическая-установка-с-помощью-скрипта.md +++ b/Автоматическая-установка-с-помощью-скрипта.md @@ -3,21 +3,13 @@ ## Начальные требования -+ Для скрипта-инсталлятора необходим полноценный wget, умеющий работать с https: - - opkg install wget - -+ Для версий OpenWrt >= 22.03 необходимо установить пакет iptables-legacy: - - opkg install iptables-legacy kmod-ipt-nat kmod-ipt-nat-extra - + Для VPN конфигурации необходимо настроенное и работающее VPN-соединение. В случае OpenVPN, помимо конфигурирования самого клиента, в настройках сети нужно создать интерфейс (например, с названием `VPN`) для устройства `tun0` и добавить его в зону `wan` межсетевого экрана. При использовании Wireguard или PPtP необходимо, чтобы VPN-интерфейс был добавлен в зону `wan` межсетевого экрана. -+ В стандартной конфигурации конфиги ipset и dnsmasq со списками блокировок пишутся при обновлении в tmpfs, т.е. в оперативную память (`/tmp/ruantiblock` и `/tmp/dnsmasq.d` соответственно). При старте системы после перезагрузки происходит автоматическое обновление блэклиста. При недостаточном количестве памяти (128Мб и менее) или просто для удобства, можно [перенести директории с данными на внешний носитель](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) после установки. ++ В стандартной конфигурации конфиги nftset и dnsmasq со списками блокировок пишутся при обновлении в tmpfs, т.е. в оперативную память (`/tmp/ruantiblock` и `/tmp/dnsmasq.d` соответственно). При старте системы после перезагрузки происходит автоматическое обновление блэклиста. При недостаточном количестве памяти (128Мб и менее) или просто для удобства, можно [перенести директории с данными на внешний носитель](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) после установки. ## Зависимости -+ wget, ipset, kmod-ipt-ipset, dnsmasq-full ++ dnsmasq-full + Tor конфигурация: tor, tor-geoip + Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение + В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.) @@ -27,7 +19,7 @@ **1. Необходимо скачать скрипт `autoinstall.sh` в `/tmp`, разрешить выполнение и запустить:** - wget --no-check-certificate -O /tmp/autoinstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/0.9/autoinstall/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/current/autoinstall.sh && chmod +x /tmp/autoinstall.sh && /tmp/autoinstall.sh **2. После запуска скрипт задаст несколько вопросов по конфигурации:** @@ -88,7 +80,13 @@ иначе Redsocks не сможет подключиться к локальному сервису! -Создаваемые при обновлениях конфиги со списком блокировок ipset и 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). +В конфигурациях VPN и прозрачного прокси имеет смысл добавить IP адрес вашего VPN-сервера (или прокси-сервера) в список IP адресов исключаемых из обхода блокировок. Это гарантирует что служебный трафик самого VPN-тунеля (или соединения с прокси) всегда будет проходить напрямую, не попадая в правила ruantiblock. Например, если IP адрес VPN-сервера 217.23.3.91: + + uci set ruantiblock.config.bypass_ip_mode="1" + 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. @@ -108,10 +106,10 @@ После всего выше проделанного, попробуйте зайти на какой-нибудь заблокированный сайт с вашего ПК или др. устройства в локальной сети. Обратите внимание, что после запуска Tor может инициализироваться на протяжении нескольких минут... -Можно проверить идут ли пакеты через правила iptables в выводе статуса ruantiblock в консоли: +Можно проверить идут ли пакеты через правила nftables в выводе статуса ruantiblock в консоли: /usr/bin/ruantiblock status -Блок `Iptables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или IP соответствующие счётчики растут. +Блок `Nftables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или 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 fe0c848..aadf185 100644 --- a/Если-после-установки-возникли-проблемы....md +++ b/Если-после-установки-возникли-проблемы....md @@ -1,10 +1,10 @@ **1. Убедитесь, что ruantiblock включен** -Выполните в консоли : +Выполните в консоли: /usr/bin/ruantiblock status -Вывод статуса не должен содержать ошибок. Если есть ошибки связанные с iptables или ipset - выполните: +Вывод статуса не должен содержать ошибок. Если есть ошибки связанные с nftables - выполните: /usr/bin/ruantiblock destroy rm /var/run/ruantiblock* @@ -15,7 +15,7 @@ /usr/bin/ruantiblock start /usr/bin/ruantiblock update -При перезапуске службы "firewall" в OpenWrt удаляется вся конфигурация iptables и, соответственно, ruantiblock приходит в выключенное состояние. Поэтому, если в системе используются какие-либо скрипты с перезапуском "firewall", в них следует прописать и перезапуск ruantiblock: `/usr/bin/ruantiblock restart`. +При перезапуске службы "firewall" в OpenWrt удаляется вся конфигурация nftables и, соответственно, ruantiblock приходит в выключенное состояние. Поэтому, если в системе используются какие-либо скрипты с перезапуском "firewall", в них следует прописать и перезапуск ruantiblock: `/usr/bin/ruantiblock restart`. **2. Проверьте запущен ли Tor или VPN клиент** @@ -66,28 +66,26 @@ Провайдеры на своих 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. Проверьте попадает ли трафик к заблокированным сайтам в цепочку ruantiblock в iptables** +**6. Проверьте попадает ли трафик к заблокированным сайтам в цепочку blacklist в таблице r nftables** -Выполните в консоли : +Выполните в консоли: /usr/bin/ruantiblock status -Блок `Iptables rules:` содержит счётчики правил для CIDR-диапазонов (`rc`), IP адресов (`ri`) и IP адресов, которые добавляет dnsmasq (`rd`). При запросе заблокированного сайта или IP соответствующие счётчики растут. +Блок `Nftables rules` содержит счётчики правил для CIDR-диапазонов (`c`), IP адресов (`i`) и IP адресов, которые добавляет dnsmasq (`d`). При запросе заблокированного сайта или IP соответствующие счётчики растут. -**7. Проверьте добавляет ли dnsmasq IP адреса заблокированных доменов из своего конфига в ipset `rd`** +**7. Проверьте добавляет ли dnsmasq IP адреса заблокированных доменов из своего конфига в nftset `d`** -Выполните в консоли : +При запросе заблокированного домена dnsmasq разрешает доменное имя в IP адрес и помещает его в nftset. Далее, спустя некоторое время, этот IP адрес удаляется из сета. - /usr/bin/ruantiblock status +Выполните в консоли: -В блоке `Ip sets:` сет с именем `rd`. При запросе заблокированного домена dnsmasq разрешает доменное имя в IP адрес и помещает его в ipset. Счётчик `Number of entries:` у сета `rd` должен увеличиваться при запросе новых заблокированных ресурсов. Далее, спустя некоторое время, этот IP адрес удаляется из сета. + nft list set ip r d -Можно увидеть сами IP адреса (если они есть в данный момент): +В выводе можно увидеть эти IP адреса (в блоке `elements = { ... }`), если они есть в данный момент. Также, можно смотреть добавляемые dnsmasq IP адреса в веб-интерфейсе на странице статистике в таблице `Dnsmasq` в реальном времени. - ipset list rd - -Если при обращении к заблокированному домену dnsmasq не добавляет его IP адрес в свой ipset, то причиной может быть отсутствие обращений к dnsmasq (DNS-серверу) со стороны ОС вашего ПК (или другого устройства). Локальный резолвер ОС часто кэширует полученные адреса и не делает запрос, следовательно, dnsmasq не добавляет IP адрес в ipset и вы получаете "заглушку" от провайдера для данного сайта. По истечении таймаута записи в кэше всё опять работает правильно. В этой ситуации можно либо подождать пока запись будет удалена из кэша по таймауту, либо очистить DNS-кэш ОС. Для Windiows всё просто: `ipconfig /flushdns`, для других ОС сложнее - ищите в Google. Также, не повредит очистить кэш браузера. Попробуйте больше разных заблокированных сайтов для тестирования... +Если при обращении к заблокированному домену dnsmasq не добавляет его IP адрес в свой nftset, то причиной может быть отсутствие обращений к dnsmasq (DNS-серверу) со стороны ОС вашего ПК (или другого устройства). Локальный резолвер ОС часто кэширует полученные адреса и не делает запрос, следовательно, dnsmasq не добавляет IP адрес в nftset и вы получаете "заглушку" от провайдера для данного сайта. По истечении таймаута записи в кэше всё опять работает правильно. В этой ситуации можно либо подождать пока запись будет удалена из кэша по таймауту, либо очистить DNS-кэш ОС. Для Windiows всё просто: `ipconfig /flushdns`, для других ОС сложнее - ищите в Google. Также, не повредит очистить кэш браузера. Попробуйте больше разных заблокированных сайтов для тестирования... **8. Если возникают проблемы с нехваткой оперативной памяти** @@ -99,7 +97,7 @@ Killed Module run attempt 1: failed [/usr/libexec/ruantiblock/ruab_parser.lua] -и приводит к краху интерпретатора. Или же роутер просто зависает. Если при обновлении блэклиста в логе роутера появляются ошибки `Module error!` или `kernel: Out of memory` с трэйсами ядра, попробуйте выполнить в консоли команду (создание конфигов без перезагрузки dnsmasq и без изменения конфигурации ipset): +и приводит к краху интерпретатора. Или же роутер просто зависает. Если при обновлении блэклиста в логе роутера появляются ошибки `Module error!` или `kernel: Out of memory` с трэйсами ядра, попробуйте выполнить в консоли команду (создание конфигов без перезагрузки dnsmasq и без изменения конфигурации nftables): /usr/bin/ruantiblock.sh data-files @@ -107,7 +105,7 @@ Следующая конфигурация даёт самый минимальный размер списка блокировок (и требует менее всего памяти): - uci set ruantiblock.config.ipset_clear_sets="1" + uci set ruantiblock.config.nftset_clear_sets="1" uci set ruantiblock.config.bllist_preset="antifilter-ip" uci set ruantiblock.config.bllist_ip_limit="0" uci set ruantiblock.config.bllist_summarize_ip="0" diff --git a/Записи-пользователя-в-блэклисте.md b/Записи-пользователя-в-блэклисте.md index 63dd096..86c9d10 100644 --- a/Записи-пользователя-в-блэклисте.md +++ b/Записи-пользователя-в-блэклисте.md @@ -3,7 +3,7 @@ uci set ruantiblock.config.add_user_entries="1" uci commit ruantiblock -Нужно создать текстовый файл с записями (IP, CIDR или FQDN, каждая запись в новой строке) `/etc/ruantiblock/user_entries`. В записях FQDN можно задать DNS-сервер для разрешения данного домена (через пробел). Также можно комментировать строки (`#` - первый символ строки). +Записи нужно добавить в текстовый файл `/etc/ruantiblock/user_entries` (IP, CIDR или FQDN, каждая запись в новой строке). В записях FQDN можно задать DNS-сервер для разрешения данного домена (через пробел). Также можно комментировать строки (`#` - первый символ строки). Пример файла `/etc/ruantiblock/user_entries`: @@ -18,7 +18,7 @@ # CIDR 74.125.0.0/16 -Есть возможность задать общий DNS-сервер только для пользовательских записей: +Есть возможность задать общий DNS-сервер только для пользовательских FQDN-записей: uci set ruantiblock.config.user_entries_dns="1.1.1.1#53" # значение в виде пустой строки отключает опцию uci commit ruantiblock @@ -39,4 +39,4 @@ uci set ruantiblock.config.bllist_preset="" uci commit ruantiblock -то для создания правил ipset и dnsmasq будут применяться лишь записи пользователя, без загрузки списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). Применение правил из списка пользователя происходит при выполнении команды обновления, как описано выше (`/usr/bin/ruantiblock update`). Также, можно удалить из cron задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок... +то для создания правил nftables и dnsmasq будут применяться лишь записи пользователя, без загрузки списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). Применение правил из списка пользователя происходит при выполнении команды обновления, как описано выше (`/usr/bin/ruantiblock update`). Также, можно удалить из cron задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок... diff --git a/Исключение-хостов-из-обхода-блокировок.md b/Исключение-хостов-из-обхода-блокировок.md new file mode 100644 index 0000000..cd6d1fb --- /dev/null +++ b/Исключение-хостов-из-обхода-блокировок.md @@ -0,0 +1,32 @@ +Можно исключить из обхода блокировок некоторые адреса, диапазоны или сайты. Это может быть полезно, например, если в блэклисте находится целая подсеть (диапазон), а вам необходим прямой доступ к одному из хостов этой сети и т.п. Записи, которые указаны в файле `/etc/ruantiblock/bypass_entries` будут всегда игнорироваться при обходе блокировок (т.е. всегда доступны напрямую, без проксификации, вне зависимости от того находятся ли они в блэклисте или нет). Данная опция реализована при помощи отдельных правил nftables (которые применяются перед правилами отбора пакетов в блэклист), т.е. не зависит от выбранного блэклиста и его содержимого. Включение опции: + + uci set ruantiblock.config.bypass_mode="1" + uci commit ruantiblock + +Записи нужно добавить в текстовый файл `/etc/ruantiblock/bypass_entries` (IP, CIDR или FQDN, каждая запись в новой строке). В записях FQDN можно задать DNS-сервер для разрешения данного домена (через пробел). Также можно комментировать строки (`#` - первый символ строки). + +Пример файла `/etc/ruantiblock/bypass_entries`: + + # FQDN + domain.net + # FQDN с DNS-сервером + sub.domain.com 8.8.8.8 + # FQDN с DNS-сервером и портом. #53 - порт, не комментарий + sub.domain.com 8.8.8.8#53 + # ip + 74.125.131.19 + # CIDR + 74.125.0.0/16 + +Есть возможность задать общий DNS-сервер только для исключаемых FQDN-записей: + + uci set ruantiblock.config.bypass_entries_dns="1.1.1.1#53" # значение в виде пустой строки отключает опцию + uci commit ruantiblock + +Если в какой-либо записи (как в примере выше) указан свой DNS-сервер - то для этого домена используется только он. + +Для применения списка исключений необходимо выполнить обновление блэклиста: + + /usr/bin/ruantiblock update + +Также, желательно очистить кэш DNS в ОС вашего ПК (в Windows: `ipconfig /flushdns`), и на роутере перезапустить dnsmasq `/etc/init.d/dnsmasq restart`, чтобы он тоже очистил кэш. diff --git a/Перенос-директории-данных-на-внешний-носитель.md b/Перенос-директории-данных-на-внешний-носитель.md index e050f65..4b7e02d 100644 --- a/Перенос-директории-данных-на-внешний-носитель.md +++ b/Перенос-директории-данных-на-внешний-носитель.md @@ -1,4 +1,4 @@ -После установки ruantiblock можно перенести директории с данными (`/tmp/ruantiblock` и `/tmp/dnsmasq.d`, которые содежржат создаваемые модулями файлы со списками блокировок для ipset и dnsmasq) на внешний носитель, т.е. на флешку или HDD подключенные к роутеру. При стандартной установке файлы со списками блокировок находятся в оперативной памяти, что может быть нежелательно если свободной памяти мало. Расположение данных на внешнем носителе позволяет сохранить список блокировок после перезагрузки роутера, а также отключить автоматическое обновление блэклиста каждый раз при старте системы. +После установки ruantiblock можно перенести директории с данными (`/tmp/ruantiblock` и `/tmp/dnsmasq.d`, которые содежржат создаваемые модулями файлы со списками блокировок для nftables и dnsmasq) на внешний носитель, т.е. на флешку или HDD подключенные к роутеру. При стандартной установке файлы со списками блокировок находятся в оперативной памяти, что может быть нежелательно если свободной памяти мало. Расположение данных на внешнем носителе позволяет сохранить список блокировок после перезагрузки роутера, а также отключить автоматическое обновление блэклиста каждый раз при старте системы. Для переноса директорий, естественно, необходимо наличие подключенного и настроенного внешнего диска с файловой системой ext. Далее предполагается что диск смонтирован в `/opt`. **1.** Перенос директорий данных в `/opt/var/ruantiblock` (на внешний диск): diff --git a/Самостоятельная-установка-и-настройка-v1.1.md b/Самостоятельная-установка-и-настройка-v1.1.md deleted file mode 100644 index 6056ff9..0000000 --- a/Самостоятельная-установка-и-настройка-v1.1.md +++ /dev/null @@ -1,207 +0,0 @@ -# Ruantiblock v1.x совместим только с OpenWrt 23.05 или прошивками собранными из snapshot. В стабильной версии OpenWrt 22.03 dnsmasq не имеет поддержки nftables! - -## Начальные требования - -+ Для VPN конфигурации необходимо настроенное и работающее VPN-соединение. В случае OpenVPN, помимо конфигурирования самого клиента, в настройках сети нужно создать интерфейс (например, с названием `VPN`) для устройства `tun0` и добавить его в зону `wan` межсетевого экрана. При использовании Wireguard или PPtP необходимо, чтобы VPN-интерфейс был добавлен в зону `wan` межсетевого экрана. -+ В стандартной конфигурации конфиги nftset и dnsmasq со списками блокировок пишутся при обновлении в tmpfs, т.е. в оперативную память (`/tmp/ruantiblock` и `/tmp/dnsmasq.d` соответственно). При старте системы после перезагрузки происходит автоматическое обновление блэклиста. При недостаточном количестве памяти (128Мб и менее) или просто для удобства, можно [перенести директории с данными на внешний носитель](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) после установки. - - -## Зависимости - -+ dnsmasq-full -+ Tor конфигурация: tor, tor-geoip -+ Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение -+ В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.) - - -## Установка - -**1. Установка зависимостей** - - opkg update - opkg install libubox20230523 - opkg --force-overwrite install dnsmasq-full - - -**2. Установка ruantiblock** - - wget --no-check-certificate -O /tmp/ruantiblock_1.3-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/23.05/ruantiblock_1.3-0_all.ipk - opkg install /tmp/ruantiblock_1.3-0_all.ipk - rm /tmp/ruantiblock_1.3-0_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.3-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/23.05/luci-app-ruantiblock_1.3-0_all.ipk - opkg install /tmp/luci-app-ruantiblock_1.3-0_all.ipk - - wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_1.3-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/23.05/luci-i18n-ruantiblock-ru_1.3-0_all.ipk - opkg install /tmp/luci-i18n-ruantiblock-ru_1.3-0_all.ipk - - rm /tmp/luci-app-ruantiblock_1.3-0_all.ipk /tmp/luci-i18n-ruantiblock-ru_1.3-0_all.ipk - - rm -f /tmp/luci-modulecache/* /tmp/luci-indexcache* - /etc/init.d/rpcd restart - /etc/init.d/uhttpd restart - - -**4. Полное выключение сервиса перед изменением конфигурации** - -Необходимо для корректного удаления правил nftables и других данных предыдущей конфигурации! - - /usr/bin/ruantiblock destroy - - -**5.1 Настройка Tor-конфигурации** - -+ Установка Tor: - - opkg install tor tor-geoip - /etc/init.d/tor enabled - -+ Бэкап текущего конфига Tor: - - cp -f /etc/tor/torrc /etc/tor/torrc.bak - -+ Установка конфига Tor для ruantiblock: - - wget --no-check-certificate -O /etc/tor/torrc https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/tor/etc/tor/torrc - -+ В конфиге Tor (`/etc/tor/torrc`), в параметре `TransPort` необходимо задать IP адрес локального интерфейса роутера (по умолчанию `192.168.1.1`): - - TransPort 192.168.1.1:9040 - - _Получить IP адрес локального интерфейса можно следующей командой: `uci get network.lan.ipaddr`._ - -+ Если у вас недоступны входные узлы Tor, то необходимо настроить мосты. Далее, пример конфигурации с маскировкой Tor-трафика с помощью утилиты obfs4proxy. Установка obfs4proxy: - - opkg install obfs4proxy - - Получить адреса мостов можно на странице [https://bridges.torproject.org/options/](https://bridges.torproject.org/options/). Выберите вариант `obfs4` в выпадающем списке. Каждая строка является адресом входного узла. Нужно добавить их в конфиг Tor (`/etc/torrc`), предварив каждую директивой `Bridge`, включить использование мостов и подключить obfs4proxy. Пример записи в `/etc/torrc`: - - Bridge obfs4 217.160.214.85:8080 B90D1A479D416987DE8CE14BD80B22C0B90917CE cert=A2NvKQ6Fb/sovF+i3qmZqCN8WJsYtupPKltQbmFCLmm4CyMD0LSkN6J+i+E04rUJzAY0DQ iat-mode=0 - Bridge obfs4 51.158.146.93:9003 74EEC1AA79F664B6827D092A44C69FF6738A8F58 cert=JySUZrPCrLEVNm9O/oMV2EGueXyJlqNjHRm6ie6FBOAti/nA4arWKAM30PRi/5EFZSXieA iat-mode=0 - Bridge obfs4 185.177.207.179:8443 35B6556F164FB4568F90A9570428724B2C77D353 cert=Zdsd5ZgCxGV/ok/GwRFLN/6zIVVTdBbhJ3f7AhO1fvJ370nENc2Z7wk3lRJE07tgLK2FZg iat-mode=0 - UseBridges 1 - ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy - -+ Включение режима Tor: - - uci set ruantiblock.config.proxy_mode='1' - -+ Настройки dnsmasq для прямого доступа к .onion ресурсам: - - uci set dhcp.@dnsmasq[0].rebind_domain='onion' - -+ Сохранение изменений в uci: - - uci commit - -+ Перезапуск Tor: - - /etc/init.d/tor restart - - -**5.2 Настройка VPN-конфигурации** - -+ Включение режима VPN: - - uci set ruantiblock.config.proxy_mode='2' - -+ Установка параметра с именем VPN-интерфейса (для OpenVPN обычно `tun0`, для PPtP и WireGuard имя определяет сам пользователь при создании интерфейса): - - uci set ruantiblock.config.if_vpn='tun0' - uci commit ruantiblock - - _VPN-интерфейс можно задать и в веб-приложении: `Ruantiblock` -> `Настройки` -> `VPN`._ - -В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`). - - -**5.3 Настройка конфигурации прозрачного прокси** - -+ Включение режима прозрачного прокси: - - uci set ruantiblock.config.proxy_mode='3' - -+ Задайте значение TCP-порта на котором принимает соединения прозрачный прокси: - - uci set ruantiblock.config.t_proxy_port_tcp='1100' - 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` в блоке соответствующего сервера). - Если вам необходимо, чтобы трафик локальных приложений роутера также обходил блокировки, то параметр конфигурации Shadowsocks `local_address` (или значение параметра запуска `ss-redir -b `) должен быть установлен в `0.0.0.0`. В такой конфигурации Shadowsocks будет принимать соединения на всех доступных адресах (включая localhost `127.0.0.1`, необходимый для редиректа локального трафика роутера). - - + **На примере Redsocks:** в конфигурационном файле (`/etc/redsocks.conf`) параметр `local_port` в блоке `redsocks`. Также, прозрачный прокси должен принимать входящие подключения на LAN-адресе роутера (в примере `192.168.0.1`) или на всех адресах (`0.0.0.0`), но не на localhost (`127.0.0.1`)! - - redsocks { - ... - local_ip = 192.168.0.1; - local_port = 1100; - ... - } - - Если Redsocks подключен к локальному сервису, т.е. работающему на роутере, то необходимо в настройках ruantiblock отключить проксификацию трафика локальных приложений роутера: - - uci set ruantiblock.config.proxy_local_clients="0" - uci commit ruantiblock - - иначе Redsocks не сможет подключиться к локальному сервису! - - -**6. Выбор списка блокировок** - -По умолчанию, используется пустой список (только [записи пользователя](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)), который вы можете формировать самостоятельно добавляя лишь необходимые вам хосты. Для включения полного обхода блокировок необходимо задать соответствующий режим обновления блэклиста: - - uci set ruantiblock.config.bllist_preset="ruantiblock-fqdn" - uci commit ruantiblock - - -**7. Включение запуска ruantiblock при старте системы** - - /etc/init.d/ruantiblock enable - - -**8. Добавление задания в cron для регулярного обновления блэклиста** - - /etc/init.d/cron enable - echo "0 3 */3 * * /usr/bin/ruantiblock update" >> /etc/crontabs/root - /etc/init.d/cron restart - - -**9. Дополнительно, установка модуля-парсера блэклиста** - -Для создания собственной конфигурации списка блокировок из любого доступного источника (`zapret-info`, `rublacklist`, `antifilter`) необходимо установить модуль-парсер блэклиста. Стандартный: Lua-модуль [ruantiblock-mod-lua](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Lua%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C). Дополнительный [ruantiblock-mod-py](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Python%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C) делает всё то же, что и ruantiblock-mod-lua, но написан на Python. - - -**10. После установки** - -Создаваемые при обновлениях конфиги со списком блокировок 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-серверы, игнорируя роутер). - - -## Первый запуск - -По завершении настройки перезагрузите устройство, затем проверьте включен ли ruantiblock и обновился ли список блокировок при старте: - - /usr/bin/ruantiblock status - -Если не возникло никаких ошибок, попробуйте выполнить обновление списка блокировок: - - /usr/bin/ruantiblock update - - -После всего выше проделанного, попробуйте зайти на какой-нибудь заблокированный сайт с вашего ПК или др. устройства в локальной сети. Обратите внимание, что после запуска Tor может инициализироваться на протяжении нескольких минут... - -Можно проверить идут ли пакеты через правила nftables в выводе статуса ruantiblock в консоли: - - /usr/bin/ruantiblock status - -Блок `Nftables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или 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 6fd1d28..546042a 100644 --- a/Самостоятельная-установка-и-настройка.md +++ b/Самостоятельная-установка-и-настройка.md @@ -1,20 +1,12 @@ ## Начальные требования -+ Для скачивания файлов необходим полноценный wget, умеющий работать с https: - - opkg install wget - -+ Для версий OpenWrt >= 22.03 необходимо установить пакет iptables-legacy: - - opkg install iptables-legacy kmod-ipt-nat kmod-ipt-nat-extra - + Для VPN конфигурации необходимо настроенное и работающее VPN-соединение. В случае OpenVPN, помимо конфигурирования самого клиента, в настройках сети нужно создать интерфейс (например, с названием `VPN`) для устройства `tun0` и добавить его в зону `wan` межсетевого экрана. При использовании Wireguard или PPtP необходимо, чтобы VPN-интерфейс был добавлен в зону `wan` межсетевого экрана. -+ В стандартной конфигурации конфиги ipset и dnsmasq со списками блокировок пишутся при обновлении в tmpfs, т.е. в оперативную память (`/tmp/ruantiblock` и `/tmp/dnsmasq.d` соответственно). При старте системы после перезагрузки происходит автоматическое обновление блэклиста. При недостаточном количестве памяти (128Мб и менее) или просто для удобства, можно [перенести директории с данными на внешний носитель](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) после установки. ++ В стандартной конфигурации конфиги nftset и dnsmasq со списками блокировок пишутся при обновлении в tmpfs, т.е. в оперативную память (`/tmp/ruantiblock` и `/tmp/dnsmasq.d` соответственно). При старте системы после перезагрузки происходит автоматическое обновление блэклиста. При недостаточном количестве памяти (128Мб и менее) или просто для удобства, можно [перенести директории с данными на внешний носитель](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) после установки. ## Зависимости -+ wget, ipset, kmod-ipt-ipset, dnsmasq-full ++ dnsmasq-full + Tor конфигурация: tor, tor-geoip + Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение + В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.) @@ -25,27 +17,27 @@ **1. Установка зависимостей** opkg update - opkg --force-overwrite install ipset kmod-ipt-ipset dnsmasq-full + opkg --force-overwrite install dnsmasq-full **2. Установка ruantiblock** - wget --no-check-certificate -O /tmp/ruantiblock_0.9.7-1_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/22.03/ruantiblock_0.9.7-1_all.ipk - opkg install /tmp/ruantiblock_0.9.7-1_all.ipk - rm /tmp/ruantiblock_0.9.7-1_all.ipk + wget --no-check-certificate -O /tmp/ruantiblock_1.3-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock_1.3-0_all.ipk + opkg install /tmp/ruantiblock_1.3-0_all.ipk + rm /tmp/ruantiblock_1.3-0_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_0.9.7-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/22.03/luci-app-ruantiblock_0.9.7-0_all.ipk - opkg install /tmp/luci-app-ruantiblock_0.9.7-0_all.ipk + wget --no-check-certificate -O /tmp/luci-app-ruantiblock_1.3-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-app-ruantiblock_1.3-0_all.ipk + opkg install /tmp/luci-app-ruantiblock_1.3-0_all.ipk - wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_0.9.7-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/22.03/luci-i18n-ruantiblock-ru_0.9.7-0_all.ipk - opkg install /tmp/luci-i18n-ruantiblock-ru_0.9.7-0_all.ipk + wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_1.3-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-i18n-ruantiblock-ru_1.3-0_all.ipk + opkg install /tmp/luci-i18n-ruantiblock-ru_1.3-0_all.ipk - rm /tmp/luci-app-ruantiblock_0.9.7-0_all.ipk /tmp/luci-i18n-ruantiblock-ru_0.9.7-0_all.ipk + rm /tmp/luci-app-ruantiblock_1.3-0_all.ipk /tmp/luci-i18n-ruantiblock-ru_1.3-0_all.ipk rm -f /tmp/luci-modulecache/* /tmp/luci-indexcache* /etc/init.d/rpcd restart @@ -54,7 +46,7 @@ **4. Полное выключение сервиса перед изменением конфигурации** -Необходимо для корректного удаления правил iptables и других данных предыдущей конфигурации! +Необходимо для корректного удаления правил nftables и других данных предыдущей конфигурации! /usr/bin/ruantiblock destroy @@ -120,7 +112,7 @@ uci set ruantiblock.config.if_vpn='tun0' uci commit ruantiblock - _VPN-интерфейс можно задать и в веб-приложении: `Ruantiblock` -> `Настройки` -> `VPN` (вкладка `VPN` доступна только при выключенной службе Ruantiblock!)._ + _VPN-интерфейс можно задать и в веб-приложении: `Ruantiblock` -> `Настройки` -> `VPN`._ В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`). @@ -156,7 +148,16 @@ иначе Redsocks не сможет подключиться к локальному сервису! -**6. Выбор списка блокировок** +**6. Добавление IP адреса VPN-сервера или прокси в список IP адресов исключаемых из обхода блокировок** + +В конфигурациях VPN и прозрачного прокси имеет смысл добавить IP адрес вашего VPN-сервера (или прокси-сервера) в список IP адресов исключаемых из обхода блокировок. Это гарантирует что служебный трафик самого VPN-тунеля (или соединения с прокси) всегда будет проходить напрямую, не попадая в правила ruantiblock. Например, если IP адрес VPN-сервера 217.23.3.91: + + uci set ruantiblock.config.bypass_ip_mode="1" + uci add_list ruantiblock.config.bypass_ip_list="217.23.3.91" + uci commit ruantiblock + + +**7. Выбор списка блокировок** По умолчанию, используется пустой список (только [записи пользователя](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)), который вы можете формировать самостоятельно добавляя лишь необходимые вам хосты. Для включения полного обхода блокировок необходимо задать соответствующий режим обновления блэклиста: @@ -164,26 +165,26 @@ uci commit ruantiblock -**7. Включение запуска ruantiblock при старте системы** +**8. Включение запуска ruantiblock при старте системы** /etc/init.d/ruantiblock enable -**8. Добавление задания в cron для регулярного обновления блэклиста** +**9. Добавление задания в cron для регулярного обновления блэклиста** /etc/init.d/cron enable echo "0 3 */3 * * /usr/bin/ruantiblock update" >> /etc/crontabs/root /etc/init.d/cron restart -**9. Дополнительно, установка модуля-парсера блэклиста** +**10. Дополнительно, установка модуля-парсера блэклиста** Для создания собственной конфигурации списка блокировок из любого доступного источника (`zapret-info`, `rublacklist`, `antifilter`) необходимо установить модуль-парсер блэклиста. Стандартный: Lua-модуль [ruantiblock-mod-lua](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Lua%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C). Дополнительный [ruantiblock-mod-py](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Python%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C) делает всё то же, что и ruantiblock-mod-lua, но написан на Python. -**10. После установки** +**11. После установки** -Создаваемые при обновлениях конфиги со списком блокировок ipset и 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). +Создаваемые при обновлениях конфиги со списком блокировок 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. @@ -203,10 +204,10 @@ После всего выше проделанного, попробуйте зайти на какой-нибудь заблокированный сайт с вашего ПК или др. устройства в локальной сети. Обратите внимание, что после запуска Tor может инициализироваться на протяжении нескольких минут... -Можно проверить идут ли пакеты через правила iptables в выводе статуса ruantiblock в консоли: +Можно проверить идут ли пакеты через правила nftables в выводе статуса ruantiblock в консоли: /usr/bin/ruantiblock status -Блок `Iptables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или IP соответствующие счётчики растут. +Блок `Nftables rules:` содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или 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 e3d228a..05e2565 100644 --- a/Способы-оптимизации-и-сокращения-количества-записей-в-списке-блокировок.md +++ b/Способы-оптимизации-и-сокращения-количества-записей-в-списке-блокировок.md @@ -1,6 +1,6 @@ Оптимизация и уменьшение количества записей в списке блокировок возможны только для режимов обновления блэклиста использующих полный реестр, т.е. источники `zapret-info` и `rublacklist`. Другие два источника (`antifilter`, `ruantiblock`) предоставляют уже оптимизированный список блокировок и описанные ниже методы оптимизации с ними не работают. -Некоторые методы уменьшения количества записей в итоговых конфигах ipset и dnsmasq (в примерах опции UCI): +Некоторые методы уменьшения количества записей в итоговых конфигах nftables и dnsmasq (в примерах опции UCI): **1.** Оптимизация списка доменов в конфиге dnsmasq, путём группировки субдоменов (3 ур-ня и выше) под одной записью 2-го уровня (SLD). Вместо нескольких записей субдоменов в конфиг dnsmasq добавляется всего одна запись второго уровня. Количество субдоменов в реестре, необходимое для срабатывания этой группировки, определяется в опции `ruantiblock.config.bllist_sd_limit`. По умолчанию: 16. Т.е. если в реестре встречается >16 субдоменов `*.domain.com`, то вместо них добавляется одна запись `domain.com` и весь трафик ко всем субдоменам domain.com проходит через прокси (включая и те сайты в зоне domain.com, которых нет в реестре). Установка значения: @@ -13,7 +13,7 @@ Такая оптимизация довольно эффективна и позволяет сократить конфигурацию dnsmasq, но не заблокированные субдомены также попадают под правила обхода блокировок. Данные оптимизации применяются только в режимах обновления блэклиста `fqdn` (`rublacklist-fqdn`, `zapret-info-fqdn`). -**2.** Оптимизация списка IP адресов для ipset. Принцип такой же, как и в предыдущем пункте, только группировка выполняется по принадлежности IP адреса к подсети класса C (/24). Необходимое для срабатывания этой группировки количество IP адресов (принадлежащих одной подсети) в реестре определяется опцией `ruantiblock.config.bllist_ip_limit`. Например, если значение 30, то при наличии в реестре >30 адресов одной подсети /24 (к примеру: `192.168.1.1`, `192.168.1.2` ... `192.168.1.31`) вместо них будет добавлена одна запись для всей подсети: `192.168.1.0/24`. Таким образом, сокращается размер списка ipset, но под правила для блокировок попадает некоторое количество не заблокированных IP адресов. Установка значения: +**2.** Оптимизация списка IP адресов для nftables. Принцип такой же, как и в предыдущем пункте, только группировка выполняется по принадлежности IP адреса к подсети класса C (/24). Необходимое для срабатывания этой группировки количество IP адресов (принадлежащих одной подсети) в реестре определяется опцией `ruantiblock.config.bllist_ip_limit`. Например, если значение 30, то при наличии в реестре >30 адресов одной подсети /24 (к примеру: `192.168.1.1`, `192.168.1.2` ... `192.168.1.31`) вместо них будет добавлена одна запись для всей подсети: `192.168.1.0/24`. Таким образом, сокращается размер списка nftables, но под правила для блокировок попадает некоторое количество не заблокированных IP адресов. Установка значения: uci set ruantiblock.config.bllist_ip_limit="30" @@ -38,7 +38,7 @@ uci add_list ruantiblock.config.bllist_gr_excluded_nets="209.58.142." и т.д. -**3.** Фильтрация записей. Исключение из итоговых конфигов ipset и 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) +**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`): @@ -54,7 +54,7 @@ или uci set ruantiblock.config.bllist_preset="antifilter-ip" -в совокупности с методом оптимизации списка ip-адресов (п.2). В этом случае, в ipset будет добавляться оптимизированный список всех ip-адресов из блэклиста. Такая конфигурация приведёт к избыточному использованию VPN-соединения, но позволит иcключить из схемы разрешение имён DNS для записей блэклиста (пользовательские FQDN записи всё-равно будут использовать DNS). +в совокупности с методом оптимизации списка ip-адресов (п.2). В этом случае, в nftables будет добавляться оптимизированный список всех ip-адресов из блэклиста. Такая конфигурация приведёт к избыточному использованию VPN-соединения, но позволит иcключить из схемы разрешение имён DNS для записей блэклиста (пользовательские FQDN записи всё-равно будут использовать DNS). **6.** Пример комбинации разных оптимизаций списка блокировок: @@ -68,4 +68,4 @@ /usr/bin/ruantiblock update -Подбирая разные комбинации параметров оптимизации можно добиться оптимального для вашего устройства баланса между размером конечных конфигов (ipset, dnsmasq) и количеством лишних IP адресов и доменов попадающих под правила в результате оптимизаций. +Подбирая разные комбинации параметров оптимизации можно добиться оптимального для вашего устройства баланса между размером конечных конфигов (nftables, dnsmasq) и количеством лишних IP адресов и доменов попадающих под правила в результате оптимизаций. diff --git a/Удаление-ruantiblock.md b/Удаление-ruantiblock.md index f0ae4ca..160a27b 100644 --- a/Удаление-ruantiblock.md +++ b/Удаление-ruantiblock.md @@ -1,6 +1,6 @@ Для удаления ruantiblock можно воспользоваться скриптом `uninstall.sh`: - wget --no-check-certificate -O /tmp/uninstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/0.9/autoinstall/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/current/uninstall.sh && chmod +x /tmp/uninstall.sh && /tmp/uninstall.sh При перустановке ruantiblock, также, желательно сначала выполнить удаление (заранее сохранив все необходимые конфиги), а затем чистую установку... diff --git a/Фильтрация-записей-блэклиста-по-шаблонам.md b/Фильтрация-записей-блэклиста-по-шаблонам.md index 7a5fe4b..a7c8386 100644 --- a/Фильтрация-записей-блэклиста-по-шаблонам.md +++ b/Фильтрация-записей-блэклиста-по-шаблонам.md @@ -1,4 +1,4 @@ -При обновлении списка блокировок, механизм фильтрации позволяет отбирать в итоговые конфигурационные файлы (ipset и dnsmasq) записи по собственным шаблонам. Таким образом можно существенно сократить список доменов в конфиге dnsmasq (в режиме обновления блэклиста `fqdn`), исключив ненужные сайты, например: онлайн-казино, наркотики, порно и прочие не интересующие вас темы. Также можно применять шаблоны для фильтрации IP адресов и диапазонов CIDR. Исключение записей происходит на этапе первичного разбора, а поэтому благотворно сказывается на использовании оперативной памяти модулями-парсерами (исключённые записи не хранятся в памяти во время работы модуля). Есть отрицательный момент - процесс обновления выполняется медленнее. +При обновлении списка блокировок, механизм фильтрации позволяет отбирать в итоговые конфигурационные файлы (nftables и dnsmasq) записи по собственным шаблонам. Таким образом можно существенно сократить список доменов в конфиге dnsmasq (в режиме обновления блэклиста `fqdn`), исключив ненужные сайты, например: онлайн-казино, наркотики, порно и прочие не интересующие вас темы. Также можно применять шаблоны для фильтрации IP адресов и диапазонов CIDR. Исключение записей происходит на этапе первичного разбора, а поэтому благотворно сказывается на использовании оперативной памяти модулями-парсерами (исключённые записи не хранятся в памяти во время работы модуля). Есть отрицательный момент - процесс обновления выполняется медленнее. ## Опции для фильтрации записей