В статье я расскажу как установить RuAntiBlock, для обхода блокировок в том числе и Youtube. Все актуальные способы ускорения Ютуб я собрал в тг канале - для Smart TV, Android , IOS, ПК, итд.
Далее описана установка с помощью скрипта-инсталлятора (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
Tor конфигурация: tor, tor-geoip
Для VPN конфигурации необходимо заранее установить и настроить VPN-соединение
В конфигурации прозрачного прокси, также, нужно заранее установить и настроить все необходимые компоненты (например, Shadowsocks + ss-redir и пр.)
Установка
Необходимо скачать скрипт autoinstall.sh
в /tmp
, разрешить выполнение и запустить:
wget --no-check-certificate -O /tmp/autoinstall.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock_openwrt/master/autoinstall/current/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
, для 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'
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 не сможет подключиться к локальному сервису!
uci set ruantiblock.config.bypass_ip_mode="1"
uci add_list ruantiblock.config.bypass_ip_list="217.23.3.91"
uci commit ruantiblock
В конфигурациях VPN и прозрачного прокси имеет смысл добавить IP адрес вашего VPN-сервера (или прокси-сервера) в список IP адресов исключаемых из обхода блокировок. Это гарантирует что служебный трафик самого VPN-тунеля (или соединения с прокси) всегда будет проходить напрямую, не попадая в правила ruantiblock. Например, если IP адрес VPN-сервера 217.23.3.91:
uci set ruantiblock.config.bypass_ip_mode="1"
uci add_list ruantiblock.config.bypass_ip_list="217.23.3.91"
uci commit ruantiblock
Создаваемые при обновлениях конфиги со списком блокировок nftables и 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 может инициализироваться на протяжении нескольких минут...
Можно проверить идут ли пакеты через правила nftables в выводе статуса ruantiblock в консоли:
/usr/bin/ruantiblock status
Блок Nftables rules:
содержит счётчики правил для IP адресов, CIDR-диапазонов и IP адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или IP соответствующие счётчики растут.
Комментарии (5)
stangri
18.09.2024 07:48section_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
-->
uci batch << EOI add firewall zone set firewall.@zone[-1].input='REJECT' ... EOI
Sleuthhound
Любопытно.
А можете собрать и протестироовать пакеты под текущую актуальную openwrt - 23.05.4
Кстате версию openwrt можно определить автоматом так
cat /etc/openwrt_release | grep ^DISTRIB_RELEASE | awk -F '=' '{print $2}' | tr -d '
AcidWave
Не сможет.