30
Автоматическая установка с помощью скрипта
gSpot edited this page 2026-02-19 18:59:40 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Далее описана установка с помощью скрипта-инсталлятора (autoinstall.sh), который выполнит установку необходимых зависимостей, скачивание файлов из репозитория и первичную настройку.

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

  • Для VPN конфигурации необходимо настроенное и работающее VPN-соединение.

  • В настройках сети OpenWrt (в разделе Интерфейсы) нужно создать интерфейс с названием VPN. Протокол интерфейса зависит от типа вашего VPN: для некоторых популярных (Wireguard, OpenConnect, PPTP и др.) присутствуют соответствующие варианты в списке выбора; в случае OpenVPN - неуправляемый интерфейс, к котому привязано сетевое устройство tun0. Пример создания неуправляемого интерфейса для OpenVPN (сетевое устройство tun0) из консоли с помощью UCI:

    uci batch << EOI
    set network.VPN='interface'
    set network.VPN.proto='none'
    set network.VPN.device='tun0'
    set network.VPN.defaultroute='0'
    set network.VPN.peerdns='0'
    set network.VPN.delegate='0'
    set network.VPN.auto='1'
    EOI
    uci commit network
    service network restart
    
  • Далее нужно добавить новую зону межсетевого экрана под названием vpn (разрешить исходящий трафик и маскарадинг, запретить входящий и перенаправление) и добавить в неё созданный ранее интерфейс OpenWrt VPN:

    section_name=$(uci add firewall zone)
    uci batch << EOI
    set firewall.${section_name}.name='vpn'
    set firewall.${section_name}.input='REJECT'
    set firewall.${section_name}.output='ACCEPT'
    set firewall.${section_name}.forward='REJECT'
    set firewall.${section_name}.masq='1'
    add_list firewall.${section_name}.network='VPN'
    EOI
    section_name=$(uci add firewall forwarding)
    uci batch << EOI
    set firewall.${section_name}.src='lan'
    set firewall.${section_name}.dest='vpn'
    EOI
    uci commit firewall
    service firewall restart
    
  • Для всех видов VPN необходимо отключить маршрут по умолчанию в VPN-туннель (иначе весь трафик полностью будет заворачиваться в VPN) и использование DNS получаемых от VPN-сервера:

    uci set network.VPN.defaultroute=0
    uci set network.VPN.peerdns=0
    uci commit network
    
  • При использовании OpenVPN, в конфигурационном файле OpenVPN-клиента обязательно должен присутствовать параметр route-noexec, иначе OpenVPN будет добавлять правило маршрутизации по умолчанию на свой интерфейс и весь трафик пойдет через него.

  • В стандартной конфигурации конфиги nftset и dnsmasq со списками блокировок пишутся при обновлении в tmpfs, т.е. в оперативную память (/tmp/ruantiblock и /tmp/dnsmasq.d соответственно). При старте системы после перезагрузки происходит автоматическое обновление блэклиста. При недостаточном количестве памяти (128Мб и менее) или просто для удобства, можно перенести директории с данными на внешний носитель после установки.

Зависимости

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

Установка

1. Необходимо скачать скрипт autoinstall.sh в /tmp, разрешить выполнение и запустить:

OpenWrt >= 25.12:

wget --no-check-certificate -O /tmp/autoinstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/2.x/apk/autoinstall.sh && chmod +x /tmp/autoinstall.sh && /tmp/autoinstall.sh

OpenWrt <= 24.10:

wget --no-check-certificate -O /tmp/autoinstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/2.x/autoinstall.sh && chmod +x /tmp/autoinstall.sh && /tmp/autoinstall.sh

2. После запуска скрипт задаст несколько вопросов по конфигурации:

  • Режим прокси: Tor, VPN или прозрачный прокси.
  • Выбор списка блокировок: собственный список (только записи пользователя) или весь блэклист полностью.
  • Установка luci-app-ruantiblock. Приложение для LuCI (веб-интерфейса OpenWrt). Подробнее тут.
  • Установка https-dns-proxy для шифрования DNS.

При выборе Tor конфигурации скрипт устанавливает Tor (если не установлен), скачивает файл torrc из репозитория и устанавливает его вместо текущего конфига (старый конфиг бэкапится там же в /etc/tor). На конечном этапе добавляется задание для обновления блэклиста в cron: 0 3 */3 * * /usr/bin/ruantiblock update (скорректируйте под свои требования).

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

  • В Tor конфигурации - если у вас недоступны входные узлы Tor, то необходимо настроить мосты. Далее, пример конфигурации с маскировкой Tor-трафика с помощью утилиты obfs4proxy. Установка obfs4proxy:

    OpenWrt >= 25.12:

    apk add obfs4proxy
    

    OpenWrt <= 24.10:

    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:

    /etc/init.d/tor start
    
  • В VPN конфигурации - задайте имя VPN-интерфейса (для OpenVPN обычно tun0, для Wireguard, OpenConnect, PPTP и пр. имя определяет сам пользователь при создании интерфейса):

    uci set ruantiblock.config.if_vpn='tun0'
    uci commit ruantiblock
    

    VPN-интерфейс можно задать и в веб-приложении: Ruantiblock -> Настройки -> Режим VPN.

  • В конфигурации прозрачного прокси - задайте значение TCP-порта на котором принимает соединения прозрачный прокси:

    uci set ruantiblock.config.t_proxy_port_tcp='1100'
    

    Если в качестве прокси-сервера предполагается использовать sing-box или xray в режиме TProxy, то задайте значение t_proxy_type='1':

    uci set ruantiblock.config.t_proxy_type='1'
    

    Применение настроек UCI:

    uci commit ruantiblock
    
    • На примере Shadowsocks с использованием ss-redir: значение TCP-порта должно соответствовать локальному порту указанному в корфигурации ss-redir (значение параметра запуска ss-redir -l <порт> или параметр local_port в конфиге Shadowsocks /etc/shadowsocks.json или параметр local_port в UCI-конфиге /etc/config/shadowsocks-libev в блоке соответствующего сервера). Если вам необходимо, чтобы трафик локальных приложений роутера также обходил блокировки, то параметр конфигурации 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 не сможет подключиться к локальному сервису!

В конфигурациях VPN и прозрачного прокси имеет смысл добавить IP адрес вашего VPN-сервера (или прокси-сервера) в список хостов исключаемых из обхода блокировок. Это гарантирует что служебный трафик самого VPN-тунеля (или соединения с прокси) всегда будет проходить напрямую, не попадая в правила ruantiblock.

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

Также, необходимо настроить шифрование DNS-трафика (dnscrypt-proxy, https-dns-proxy и пр.). В режиме обхода блокировок 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 соответствующие счётчики растут.

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