Updated

gSpot
2023-01-09 18:37:46 +03:00
parent fb9bfdceda
commit f4bcc16a53
5 changed files with 154 additions and 61 deletions
+31 -17
@@ -1,6 +1,6 @@
## Описание ## Описание
Ruantiblock - решение для обхода блокировок (при помощи Tor или VPN-соединения) с выборочной проксификацией трафика к заблокированным ресурсам (при этом доступ к остальным ресурсам осуществляется напрямую). В качестве источника списка блокировок поддерживаются выгрузки с сайтов: [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), а также список созданный самим пользователем. Включает в себя функции управления правилами iptables, списками ipset и парсер списка блокировок. Доступны конфигурации с использованием доменных имен (dnsmasq) и IP адресов (включая диапазоны CIDR).
Данная версия решения предназначена для OpenWrt. В отличии от других решений подобного типа не имеет жёсткой интеграции и привязки исключительно к OpenWrt (при этом поддерживает конфигурацию через UCI, а также имеется функциональное LuCI-приложение) и может быть перенесено на другие Linux. Вся конфигурация находится в одном месте, все операции выполняются с помощью одного скрипта (`/usr/bin/ruantiblock`), широкие возможности конфигурации. Помимо прочего, данное решение предлагает опции для собственной тонкой настройки оптимизации списка блокировок: группировка и суммаризация IP, объединение поддоменов, фильтрация записей по шаблонам... Данная версия решения предназначена для OpenWrt. В отличии от других решений подобного типа не имеет жёсткой интеграции и привязки исключительно к OpenWrt (при этом поддерживает конфигурацию через UCI, а также имеется функциональное LuCI-приложение) и может быть перенесено на другие Linux. Вся конфигурация находится в одном месте, все операции выполняются с помощью одного скрипта (`/usr/bin/ruantiblock`), широкие возможности конфигурации. Помимо прочего, данное решение предлагает опции для собственной тонкой настройки оптимизации списка блокировок: группировка и суммаризация IP, объединение поддоменов, фильтрация записей по шаблонам...
@@ -12,32 +12,32 @@ Ruantiblock - решение для обхода блокировок (при п
## Режимы прокси ## Режимы прокси
Доступны два режима проксификации трафика: с использованием сети [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)). Режим прокси определяется парметром `ruantiblock.config.proxy_mode`. `1` - Tor, `2` - VPN. Включение 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)) и прозрачного прокси (например, [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 set ruantiblock.config.proxy_mode="2"
uci commit ruantiblock uci commit ruantiblock
Данный параметр влияет, в первую очередь, на процесс создания правил iptables. В Tor конфигурации правила создаются в цепочке `nat`, при VPN конфигурации - в `mangle`. Соответственно, и удаление правил при выключении ruantiblock зависит от выбранного типа прокси. Поэтому, перед изменением этого параметра следует отключить ruantiblock (`/usr/bin/ruantiblock stop`), для корректного удаления правил предыдущей конфигурации. Данный параметр влияет, в первую очередь, на процесс создания правил iptables. В конфигурациях Tor и прозрачного прокси правила создаются в цепочке `nat`, при VPN конфигурации - в `mangle`. Соответственно, и удаление правил при выключении ruantiblock зависит от выбранного типа прокси. Поэтому, перед изменением данного параметра следует отключить ruantiblock (`/usr/bin/ruantiblock stop`), для корректного удаления правил предыдущей конфигурации!
## Режимы обновления блэклиста и модули-парсеры ## Режимы обновления блэклиста и модули-парсеры
Доступны следующие режимы обновления блэклиста: Доступны следующие режимы обновления блэклиста (первые два не требуют установки модуля-парсера блэклиста):
ruantiblock-fqdn
ruantiblock-ip
zapret-info-fqdn zapret-info-fqdn
zapret-info-ip zapret-info-ip
rublacklist-fqdn rublacklist-fqdn
rublacklist-ip rublacklist-ip
antifilter-ip antifilter-ip
ruantiblock-fqdn
ruantiblock-ip
Так можно задать в UCI: Так можно задать в UCI:
uci set ruantiblock.config.bllist_preset="zapret-info-fqdn" uci set ruantiblock.config.bllist_preset="zapret-info-fqdn"
uci commit ruantiblock uci commit ruantiblock
По сути, режим обновления блэклиста является комбинацией источника и типа обхода блокировок (`ip`, `fqdn`). По сути, режим обновления блэклиста является комбинацией источника и типа обхода блокировок (`ip`, `fqdn`). Первые два режима обновления блэклиста (`ruantiblock-fqdn`, `ruantiblock-ip`) не требуют установки модуля-парсера (см. далее).
**Типы обхода блокировок:** **Типы обхода блокировок:**
@@ -49,24 +49,26 @@ Ruantiblock - решение для обхода блокировок (при п
**Источники блэклиста:** **Источники блэклиста:**
`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 происходит один раз на одной машине, а другие получают уже готовые сформированные конфиги (не выполняя повторно одну и ту же работу).
`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). Чистый реестр от РКН в исходном виде. Содержит много лишних данных (всякие статьи, основания, судебные решения и пр. для каждой записи), что увеличивает размер файла (к тому же в кодировке CP1251). Очень надёжный источник, сбоев практически не бывает, расположен на GitHub (есть зеркала).
`rublacklist` - [https://rublacklist.net](https://rublacklist.net). Реестр от Роскомсвободы. Имеет удобный API, но иногда бывают проблемы с надёжностью (недоступность сайта и пр). `rublacklist` - [https://rublacklist.net](https://rublacklist.net). Реестр от Роскомсвободы. Имеет удобный API, но иногда бывают проблемы с надёжностью (недоступность сайта и пр).
`antifilter` - [https://antifilter.download](https://antifilter.download). Этот источник для устройств, которым не хватает оперативной памяти для полных списков блокировок. Доступен только вариант `ip` - оптимизированный список IP адресов (все адреса приведены к маске /24). Очень компактен в размере, но покрывает большое количество лишних IP адресов в диапазонах. `antifilter` - [https://antifilter.download](https://antifilter.download). Этот источник для устройств, которым не хватает оперативной памяти для полных списков блокировок. Доступен только вариант `ip` - оптимизированный список IP адресов (все адреса приведены к маске /24). Очень компактен в размере, но покрывает большое количество лишних 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 происходит один раз на одной машине, а другие получают уже готовые сформированные конфиги (не выполняя повторно одну и ту же работу).
**Модули-парсеры:** **Модули-парсеры:**
`/usr/bin/ruab_parser.lua` - стандартный модуль на Lua. Работает быстро, когда достаточно свободной оперативной памяти. Установка модуля необходима для самостоятельного формирования списка блокировок силами роутера. Модуль выкачивает данные из источника, выполняет их преобразование (включая оптимизации) в необходимый для работы формат. Модуль требуется для всех источников блэклиста (`zapret-info`, `rublacklist`, `antifilter`), кроме `ruantiblock`, который предоставляет уже готовые и оптимизированные конфиги.
`/usr/bin/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).
`/usr/bin/ruab_parser.py` - дополнительный модуль, написан на Python3 и не имеет проблем с кириллицей, кодировкой CP1251 (`zapret-info`) и пр. Очень стабильный, аккуратно раcходует память. Недостаток лишь в том, что нужно ставить Python3. [Установка](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Python%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C). `/usr/bin/ruab_parser.py` - дополнительный модуль, написан на Python3 и не имеет проблем с кириллицей, кодировкой CP1251 (`zapret-info`) и пр. Очень стабильный, аккуратно раcходует память. Недостаток лишь в том, что нужно ставить Python3. [Установка](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/Python%E2%80%91%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C).
Модуль можно задать в UCI: Установленный модуль можно включить в UCI:
uci set ruantiblock.config.bllist_module="/usr/bin/ruab_parser.py" uci set ruantiblock.config.bllist_module="/usr/bin/ruab_parser.lua"
uci commit ruantiblock uci commit ruantiblock
@@ -76,7 +78,7 @@ Ruantiblock - решение для обхода блокировок (при п
+ **Проксификация трафика локальных клиентов (`PROXY_LOCAL_CLIENTS=1`):** + **Проксификация трафика локальных клиентов (`PROXY_LOCAL_CLIENTS=1`):**
Эта опция включает обработку трафика локальных приложений роутера в ruantiblock. Т.е. различные сетевые утилиты установленные на самом роутере ходят на заблокированные сайты через Tor или VPN. Можно отключить если нет необходимости: Эта опция включает обработку трафика локальных приложений роутера в ruantiblock. Т.е. различные сетевые утилиты установленные на самом роутере ходят на заблокированные сайты через Tor или VPN. Отключить:
uci set ruantiblock.config.proxy_local_clients="0" uci set ruantiblock.config.proxy_local_clients="0"
@@ -112,11 +114,23 @@ Ruantiblock - решение для обхода блокировок (при п
uci set ruantiblock.config.enable_logging="0" uci set ruantiblock.config.enable_logging="0"
+ **Отправлять в Tor UDP-трафик (`TOR_ALLOW_UDP=1`):** + **Отправлять в Tor UDP-трафик (`TOR_ALLOW_UDP=0`):**
В режиме проксификации трафика с использованием Tor, UDP-трафик также отправляется в Tor. При отключении этой опции в Tor попадает только TCP, а UDP идёт напрямую, без обхода блокировок. Отключить: В режиме проксификации трафика с использованием Tor, UDP-трафик также отправляется в Tor. При отключении этой опции в Tor попадает только TCP, а UDP идёт напрямую, без обхода блокировок. Включить:
uci set ruantiblock.config.tor_allow_udp="0" uci set ruantiblock.config.tor_allow_udp="1"
+ **UDP-порт прозрачного прокси (`T_PROXY_PORT_UDP=10053`):**
В режиме проксификации трафика с использованием прозрачного прокси, определяет порт на который может перенаправляться UDP-трафик. Прозрачный прокси должен поддерживать UDP! Изменить порт:
uci set ruantiblock.config.t_proxy_port_udp="10053"
+ **Отправлять в прозрачный прокси UDP-трафик (`T_PROXY_ALLOW_UDP=0`):**
В режиме проксификации трафика с использованием прозрачного прокси, UDP-трафик также отправляется в прокси. Прозрачный прокси должен поддерживать UDP! При отключении этой опции в прокси попадает только TCP, а UDP идёт напрямую, без обхода блокировок. Включить:
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`):** + **Оптимизации записей в итоговых конфигах ipset и masq: группировка субдоменов и IP адресов, суммаризация IP адресов (`BLLIST_SD_LIMIT`, `BLLIST_IP_LIMIT`, `BLLIST_GR_EXCLUDED_SLD`, `BLLIST_GR_EXCLUDED_NETS`, `BLLIST_SUMMARIZE_IP`, `BLLIST_SUMMARIZE_CIDR`):**
+3 -3
@@ -21,9 +21,9 @@ OpenWrt 21.02:
OpenWrt >= 22.03: OpenWrt >= 22.03:
wget --no-check-certificate -O /tmp/ruantiblock-mod-py_0.9.5-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-py_0.9.5-0_all.ipk wget --no-check-certificate -O /tmp/ruantiblock-mod-py_0.9.6-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-py_0.9.6-0_all.ipk
opkg install /tmp/ruantiblock-mod-py_0.9.5-0_all.ipk opkg install /tmp/ruantiblock-mod-py_0.9.6-0_all.ipk
rm /tmp/ruantiblock-mod-py_0.9.5-0_all.ipk rm /tmp/ruantiblock-mod-py_0.9.6-0_all.ipk
**3. Включение модуля:** **3. Включение модуля:**
@@ -20,7 +20,7 @@
+ wget, ipset, kmod-ipt-ipset, dnsmasq-full + wget, ipset, kmod-ipt-ipset, dnsmasq-full
+ Tor конфигурация: tor, tor-geoip + Tor конфигурация: tor, tor-geoip
+ Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение + Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение
+ Lua-модуль: lua, luasocket, luasec, luabitop, iptool-lua, idn-lua (https://raw.githubusercontent.com/haste/lua-idn/master/idn.lua) + В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, ss-redir + shadowsocks и пр.)
## Установка ## Установка
@@ -31,18 +31,31 @@
**2. После запуска скрипт задаст несколько вопросов по конфигурации:** **2. После запуска скрипт задаст несколько вопросов по конфигурации:**
+ Режим прокси: Tor или VPN. + Режим прокси: 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). + Установка luci-app-ruantiblock. Приложение для LuCI (веб-интерфейса OpenWrt). [Подробнее тут](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/luci%E2%80%91app%E2%80%91ruantiblock).
При выборе Tor конфигурации скрипт устанавливает Tor (если не установлен), скачивает файл `torrc` из репозитория и устанавливает его вместо текущего конфига (старый конфиг бэкапится там же в `/etc/tor`). На конечном этапе добавляется задание для обновления блэклиста в cron: `0 3 */3 * * /usr/bin/ruantiblock update` (скорректируйте под свои требования). При выборе Tor конфигурации скрипт устанавливает Tor (если не установлен), скачивает файл `torrc` из репозитория и устанавливает его вместо текущего конфига (старый конфиг бэкапится там же в `/etc/tor`). На конечном этапе добавляется задание для обновления блэклиста в cron: `0 3 */3 * * /usr/bin/ruantiblock update` (скорректируйте под свои требования).
**3. После установки** **3. После установки**
В Tor конфигурации - проверьте работоспособность Tor: + В Tor конфигурации - если ваш провайдер блокирует входные узлы 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:
/etc/init.d/tor start /etc/init.d/tor start
В VPN конфигурации - задайте имя VPN-интерфейса (для OpenVPN обычно `tun0`, для PPtP и WireGuard имя определяет сам пользователь при создании интерфейса): + В VPN конфигурации - задайте имя VPN-интерфейса (для OpenVPN обычно `tun0`, для PPtP и WireGuard имя определяет сам пользователь при создании интерфейса):
uci set ruantiblock.config.if_vpn='tun0' uci set ruantiblock.config.if_vpn='tun0'
uci commit ruantiblock uci commit ruantiblock
@@ -51,6 +64,30 @@ _VPN-интерфейс можно задать и в веб-приложени
В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`). В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`).
+ В конфигурации прозрачного прокси - задайте значение 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 <ip адрес>`) должен быть установлен в `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 не сможет подключиться к локальному сервису!
Создаваемые при обновлениях конфиги со списком блокировок 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). Создаваемые при обновлениях конфиги со списком блокировок 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).
Стоит упомянуть, что при вызове скрипта `/usr/bin/ruantiblock` с параметрами: `start`, `update` или `destroy` - всегда выполняется перезапуск dnsmasq. Стоит упомянуть, что при вызове скрипта `/usr/bin/ruantiblock` с параметрами: `start`, `update` или `destroy` - всегда выполняется перезапуск dnsmasq.
@@ -30,8 +30,8 @@
### Конфигурация с использованием только собственных записей. ### Конфигурация с использованием только собственных записей.
Если отключить модуль-парсер: Если отключить режим обновления блэклиста:
uci set ruantiblock.config.bllist_module="" uci set ruantiblock.config.bllist_preset=""
то для создания правил ipset и dnsmasq будут применяться лишь записи пользователя, без загрузки списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). то для создания правил ipset и dnsmasq будут применяться лишь записи пользователя, без загрузки списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). Применение правил из списка пользователя происходит при выполнении команды обновления, как описано выше (`/usr/bin/ruantiblock update`). Также, можно удалить из cron задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок...
@@ -30,17 +30,36 @@
**2. Установка ruantiblock** **2. Установка ruantiblock**
wget --no-check-certificate -O /tmp/ruantiblock_0.9.5-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock_0.9.5-0_all.ipk wget --no-check-certificate -O /tmp/ruantiblock_0.9.6-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock_0.9.6-0_all.ipk
opkg install /tmp/ruantiblock_0.9.5-0_all.ipk opkg install /tmp/ruantiblock_0.9.6-0_all.ipk
rm /tmp/ruantiblock_0.9.5-0_all.ipk rm /tmp/ruantiblock_0.9.6-0_all.ipk
**3. Останов сервиса после автозапуска в конце процесса установки пакета** **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.6-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-app-ruantiblock_0.9.6-0_all.ipk
opkg install /tmp/luci-app-ruantiblock_0.9.6-0_all.ipk
wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_0.9.6-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-i18n-ruantiblock-ru_0.9.6-0_all.ipk
opkg install /tmp/luci-i18n-ruantiblock-ru_0.9.6-0_all.ipk
rm /tmp/luci-app-ruantiblock_0.9.6-0_all.ipk /tmp/luci-i18n-ruantiblock-ru_0.9.6-0_all.ipk
rm -f /tmp/luci-modulecache/* /tmp/luci-indexcache*
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
**4. Полное выключение сервиса перед изменением конфигурации**
Необходимо для корректного удаления правил iptables и других данных предыдущей конфигурации!
/usr/bin/ruantiblock destroy /usr/bin/ruantiblock destroy
**4.1 Настройка Tor-конфигурации** **5.1 Настройка Tor-конфигурации**
+ Установка Tor: + Установка Tor:
@@ -61,6 +80,18 @@
_Получить IP адрес локального интерфейса можно следующей командой: `uci get network.lan.ipaddr`._ _Получить 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: + Включение режима Tor:
uci set ruantiblock.config.proxy_mode='1' uci set ruantiblock.config.proxy_mode='1'
@@ -78,7 +109,7 @@
/etc/init.d/tor restart /etc/init.d/tor restart
**4.2 Настройка VPN-конфигурации** **5.2 Настройка VPN-конфигурации**
+ Включение режима VPN: + Включение режима VPN:
@@ -94,52 +125,63 @@
В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`). В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`).
**5. Установка модуля-парсера блэклиста (ruantiblock-mod-lua)** **4.3 Настройка конфигурации прозрачного прокси**
+ Установка зависимостей: + Включение режима прозрачного прокси:
opkg install lua luasocket luasec luabitop uci set ruantiblock.config.proxy_mode='3'
wget --no-check-certificate -O /usr/lib/lua/iptool.lua https://raw.githubusercontent.com/gSpotx2f/iptool-lua/master/5.1/iptool.lua
wget --no-check-certificate -O /usr/lib/lua/idn.lua https://raw.githubusercontent.com/haste/lua-idn/master/idn.lua
+ Установка модуля: + Задайте значение TCP-порта на котором принимает соединения прозрачный прокси:
wget --no-check-certificate -O /tmp/ruantiblock-mod-lua_0.9.5-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/ruantiblock-mod-lua_0.9.5-0_all.ipk uci set ruantiblock.config.t_proxy_port_tcp='1100'
opkg install /tmp/ruantiblock-mod-lua_0.9.5-0_all.ipk
rm /tmp/ruantiblock-mod-lua_0.9.5-0_all.ipk
uci set ruantiblock.config.bllist_module="/usr/libexec/ruantiblock/ruab_parser.lua"
uci commit ruantiblock 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 <ip адрес>`) должен быть установлен в `0.0.0.0`. В такой конфигурации Shadowsocks будет принимать соединения на всех доступных адресах (включая localhost `127.0.0.1`, необходимый для редиректа локального трафика роутера).
**6. Установка luci-app-ruantiblock** + **На примере Redsocks:** в конфигурационном файле (`/etc/redsocks.conf`) параметр `local_port` в блоке `redsocks`. Также, прозрачный прокси должен принимать входящие подключения на LAN-адресе роутера (в примере `192.168.0.1`) или на всех адресах (`0.0.0.0`), но не на localhost (`127.0.0.1`)!
Приложение для LuCI (веб-интерфейса OpenWrt). [Подробнее тут](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/luci%E2%80%91app%E2%80%91ruantiblock). redsocks {
...
local_ip = 192.168.0.1;
local_port = 1100;
...
}
wget --no-check-certificate -O /tmp/luci-app-ruantiblock_0.9.5-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-app-ruantiblock_0.9.5-0_all.ipk Если Redsocks подключен к локальному сервису, т.е. работающему на роутере, то необходимо в настройках ruantiblock отключить проксификацию трафика локальных приложений роутера:
opkg install /tmp/luci-app-ruantiblock_0.9.5-0_all.ipk
wget --no-check-certificate -O /tmp/luci-i18n-ruantiblock-ru_0.9.5-0_all.ipk https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master/current/luci-i18n-ruantiblock-ru_0.9.5-0_all.ipk uci set ruantiblock.config.proxy_local_clients="0"
opkg install /tmp/luci-i18n-ruantiblock-ru_0.9.5-0_all.ipk uci commit ruantiblock
rm /tmp/luci-app-ruantiblock_0.9.5-0_all.ipk /tmp/luci-i18n-ruantiblock-ru_0.9.5-0_all.ipk иначе 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 set commit ruantiblock
rm -f /tmp/luci-modulecache/* /tmp/luci-indexcache*
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
**7. Включение запуска ruantiblock при старте системы** **7. Включение запуска ruantiblock при старте системы**
/etc/init.d/ruantiblock enable /etc/init.d/ruantiblock enable
**4. Добавление задания в cron для регулярного обновления блэклиста**
**8. Добавление задания в cron для регулярного обновления блэклиста**
/etc/init.d/cron enable /etc/init.d/cron enable
echo "0 3 */3 * * /usr/bin/ruantiblock update" >> /etc/crontabs/root echo "0 3 */3 * * /usr/bin/ruantiblock update" >> /etc/crontabs/root
/etc/init.d/cron restart /etc/init.d/cron restart
**9. После установки** **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. После установки**
Создаваемые при обновлениях конфиги со списком блокировок 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). Создаваемые при обновлениях конфиги со списком блокировок 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).