Самостоятельная установка и настройка - gSpotx2f/ruantiblock_wiki_v0.9 GitHub Wiki

Начальные требования

  • Для скачивания файлов необходим полноценный 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Мб и менее) или просто для удобства, можно перенести директории с данными на внешний носитель после установки.

Зависимости

  • wget, ipset, kmod-ipt-ipset, dnsmasq-full
  • Tor конфигурация: tor, tor-geoip
  • Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение
  • В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.)

Установка

1. Установка зависимостей

opkg update
opkg --force-overwrite install ipset kmod-ipt-ipset 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

3. Установка luci-app-ruantiblock

Приложение для LuCI (веб-интерфейса OpenWrt). Подробнее тут.

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-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

rm /tmp/luci-app-ruantiblock_0.9.7-0_all.ipk /tmp/luci-i18n-ruantiblock-ru_0.9.7-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

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/. Выберите вариант 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 (вкладка VPN доступна только при выключенной службе Ruantiblock!).

В конфигурационном файле 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 <ip адрес>) должен быть установлен в 0.0.0.0. В такой конфигурации Shadowsocks будет принимать соединения на всех доступных адресах (включая localhost 127.0.0.1, необходимый для редиректа локального трафика роутера). Также необходимо отключить перенаправление трафика в shadowsocks:

      uci set shadowsocks-libev.ss_rules.disabled="1"
      uci commit shadowsocks-libev
      /etc/init.d/shadowsocks-libev restart
      
    • На примере 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. Выбор списка блокировок

По умолчанию, используется пустой список (только записи пользователя), который вы можете формировать самостоятельно добавляя лишь необходимые вам хосты. Для включения полного обхода блокировок необходимо задать соответствующий режим обновления блэклиста:

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. Дополнительный ruantiblock-mod-py делает всё то же, что и ruantiblock-mod-lua, но написан на Python.

10. После установки

Создаваемые при обновлениях конфиги со списком блокировок ipset и dnsmasq будут располагаться в /tmp/ruantiblock и /tmp/dnsmasq.d. При наличии у роутера USB (или eSATA и пр.) настоятельно рекомендуется перенести директории с данными на внешний носитель.

Стоит упомянуть, что при вызове скрипта /usr/bin/ruantiblock с параметрами: start, update или destroy - всегда выполняется перезапуск dnsmasq.

Также, необходимо настроить шифрование DNS-трафика (dnscrypt-proxy, https-dns-proxy и пр.) и перехват стороннего DNS-трафика хостов локальной сети. В режиме обхода блокировок fqdn, все хосты в локальной сети (для которых будет работать обход блокировок) должны использовать DNS-сервер роутера. Поэтому в настройках мобильных устройств и браузеров, нужно отключить опцию "безопасный DNS" (т.е. конфигурацию при которой устройство или программа использует сторонние шифрованные DNS-серверы, игнорируя роутер).

Первый запуск

По завершении настройки перезагрузите устройство, затем проверьте включен ли ruantiblock и обновился ли список блокировок при старте:

/usr/bin/ruantiblock status

Если не возникло никаких ошибок, попробуйте выполнить обновление списка блокировок:

/usr/bin/ruantiblock update

После всего выше проделанного, попробуйте зайти на какой-нибудь заблокированный сайт с вашего ПК или др. устройства в локальной сети. Обратите внимание, что после запуска Tor может инициализироваться на протяжении нескольких минут...

Можно проверить идут ли пакеты через правила iptables в выводе статуса ruantiblock в консоли:

/usr/bin/ruantiblock status

Блок Iptables rules: содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или IP соответствующие счётчики растут.

Если возникли проблемы, смотрите здесь...

⚠️ **GitHub.com Fallback** ⚠️