Автоматическая установка с помощью скрипта - gSpotx2f/ruantiblock_wiki_v0.9 GitHub Wiki

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

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

  • Для скрипта-инсталлятора необходим полноценный 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. Необходимо скачать скрипт 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

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

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

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

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

  • В Tor конфигурации - если у вас недоступны входные узлы 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:

    /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 <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 не сможет подключиться к локальному сервису!

Создаваемые при обновлениях конфиги со списком блокировок 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** ⚠️