diff --git a/Home.md b/Home.md index 6039552..ee0188f 100644 --- a/Home.md +++ b/Home.md @@ -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, объединение поддоменов, фильтрация записей по шаблонам... @@ -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 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-ip rublacklist-fqdn rublacklist-ip antifilter-ip - ruantiblock-fqdn - ruantiblock-ip Так можно задать в UCI: uci set ruantiblock.config.bllist_preset="zapret-info-fqdn" 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 (есть зеркала). `rublacklist` - [https://rublacklist.net](https://rublacklist.net). Реестр от Роскомсвободы. Имеет удобный API, но иногда бывают проблемы с надёжностью (недоступность сайта и пр). `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). -Модуль можно задать в 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 @@ -76,7 +78,7 @@ Ruantiblock - решение для обхода блокировок (при п + **Проксификация трафика локальных клиентов (`PROXY_LOCAL_CLIENTS=1`):** -Эта опция включает обработку трафика локальных приложений роутера в ruantiblock. Т.е. различные сетевые утилиты установленные на самом роутере ходят на заблокированные сайты через Tor или VPN. Можно отключить если нет необходимости: +Эта опция включает обработку трафика локальных приложений роутера в ruantiblock. Т.е. различные сетевые утилиты установленные на самом роутере ходят на заблокированные сайты через Tor или VPN. Отключить: uci set ruantiblock.config.proxy_local_clients="0" @@ -112,11 +114,23 @@ Ruantiblock - решение для обхода блокировок (при п 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`):** diff --git a/Python‑модуль.md b/Python‑модуль.md index ffa0baf..ece5936 100644 --- a/Python‑модуль.md +++ b/Python‑модуль.md @@ -21,9 +21,9 @@ OpenWrt 21.02: 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 - opkg install /tmp/ruantiblock-mod-py_0.9.5-0_all.ipk - rm /tmp/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.6-0_all.ipk + rm /tmp/ruantiblock-mod-py_0.9.6-0_all.ipk **3. Включение модуля:** diff --git a/Автоматическая-установка-с-помощью-скрипта.md b/Автоматическая-установка-с-помощью-скрипта.md index 06453b2..a1aad66 100644 --- a/Автоматическая-установка-с-помощью-скрипта.md +++ b/Автоматическая-установка-с-помощью-скрипта.md @@ -20,7 +20,7 @@ + wget, ipset, kmod-ipt-ipset, dnsmasq-full + Tor конфигурация: tor, tor-geoip + Для 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,25 +31,62 @@ **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). При выборе Tor конфигурации скрипт устанавливает Tor (если не установлен), скачивает файл `torrc` из репозитория и устанавливает его вместо текущего конфига (старый конфиг бэкапится там же в `/etc/tor`). На конечном этапе добавляется задание для обновления блэклиста в cron: `0 3 */3 * * /usr/bin/ruantiblock update` (скорректируйте под свои требования). **3. После установки** -В Tor конфигурации - проверьте работоспособность Tor: ++ В Tor конфигурации - если ваш провайдер блокирует входные узлы Tor, то необходимо настроить мосты. Далее, пример конфигурации с маскировкой Tor-трафика с помощью утилиты obfs4proxy. Установка obfs4proxy: - /etc/init.d/tor start + opkg install obfs4proxy -В VPN конфигурации - задайте имя VPN-интерфейса (для OpenVPN обычно `tun0`, для PPtP и WireGuard имя определяет сам пользователь при создании интерфейса): + Получить адреса мостов можно на странице [https://bridges.torproject.org/options/](https://bridges.torproject.org/options/). Выберите вариант `obfs4` в выпадающем списке. Каждая строка является адресом входного узла. Нужно добавить их в конфиг Tor (`/etc/torrc`), предварив каждую директивой `Bridge`, включить использование мостов и подключить obfs4proxy. Пример записи в `/etc/torrc`: - uci set ruantiblock.config.if_vpn='tun0' - uci commit ruantiblock + 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 -_VPN-интерфейс можно задать и в веб-приложении: `Ruantiblock` -> `Настройки` -> `VPN` (вкладка `VPN` доступна только при выключенной службе Ruantiblock!)._ + После внесения изменений проверьте работоспособность Tor: -В конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр `route-noexec`, иначе OpenVPN добавит правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него. Для PPtP и WireGuard необходимо отключить маршрут по умолчанию (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.defaultroute=0`) и использование получаемых DNS-серверов (`uci set network.ИМЯ_VPN_ИНТЕРФЕЙСА.peerdns=0`). + /etc/init.d/tor start + ++ В VPN конфигурации - задайте имя VPN-интерфейса (для OpenVPN обычно `tun0`, для PPtP и WireGuard имя определяет сам пользователь при создании интерфейса): + + uci set ruantiblock.config.if_vpn='tun0' + uci commit ruantiblock + + _VPN-интерфейс можно задать и в веб-приложении: `Ruantiblock` -> `Настройки` -> `VPN` (вкладка `VPN` доступна только при выключенной службе Ruantiblock!)._ + + В конфигурационном файле 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 `) должен быть установлен в `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). diff --git a/Записи-пользователя-в-блэклисте.md b/Записи-пользователя-в-блэклисте.md index 21082d3..90d4279 100644 --- a/Записи-пользователя-в-блэклисте.md +++ b/Записи-пользователя-в-блэклисте.md @@ -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 задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок... diff --git a/Самостоятельная-установка-и-настройка.md b/Самостоятельная-установка-и-настройка.md index 20133c1..b8be55b 100644 --- a/Самостоятельная-установка-и-настройка.md +++ b/Самостоятельная-установка-и-настройка.md @@ -30,17 +30,36 @@ **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 - opkg install /tmp/ruantiblock_0.9.5-0_all.ipk - rm /tmp/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.6-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 -**4.1 Настройка Tor-конфигурации** +**5.1 Настройка Tor-конфигурации** + Установка Tor: @@ -61,6 +80,18 @@ _Получить 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' @@ -78,7 +109,7 @@ /etc/init.d/tor restart -**4.2 Настройка VPN-конфигурации** +**5.2 Настройка 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`). -**5. Установка модуля-парсера блэклиста (ruantiblock-mod-lua)** +**4.3 Настройка конфигурации прозрачного прокси** -+ Установка зависимостей: ++ Включение режима прозрачного прокси: - opkg install lua luasocket luasec luabitop - 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 + uci set ruantiblock.config.proxy_mode='3' -+ Установка модуля: ++ Задайте значение 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 - 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 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`, необходимый для редиректа локального трафика роутера). -**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 - opkg install /tmp/luci-app-ruantiblock_0.9.5-0_all.ipk + Если Redsocks подключен к локальному сервису, т.е. работающему на роутере, то необходимо в настройках ruantiblock отключить проксификацию трафика локальных приложений роутера: - 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 - opkg install /tmp/luci-i18n-ruantiblock-ru_0.9.5-0_all.ipk + uci set ruantiblock.config.proxy_local_clients="0" + 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 при старте системы** /etc/init.d/ruantiblock enable -**4. Добавление задания в cron для регулярного обновления блэклиста** + +**8. Добавление задания в cron для регулярного обновления блэклиста** /etc/init.d/cron enable echo "0 3 */3 * * /usr/bin/ruantiblock update" >> /etc/crontabs/root /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).