ByeDPI + Redsocks на OpenWRT: дарим свободу локальной сети на дровах (на примере ASUS RT-N12 ROM-ОЗУ: 8-32 Мб)

в 18:26, , рубрики: byedpi, dpi, OpenWrt
ByeDPI + Redsocks на OpenWRT: дарим свободу локальной сети на дровах (на примере ASUS RT-N12 ROM-ОЗУ: 8-32 Мб) - 1

Решение проблемы обхода блокировок для всех устройств в домашней сети зачастую упирается в дешевый, древний, но исправно выполняющий свое предназначение роутер. В этой статье я расскажу, как настроить связку ByeDPI и Redsocks на роутере с OpenWRT, даже если ваш девайс далеко не топ по характеристикам.

Однако эта информация будет полезна и обладателям более современных роутеров — метод довольно универсален и относительно несложен в настройке.

Справка: основные методы обхода DPI

Прежде чем перейти к основной части, коротко расскажу о существующих методах обхода систем DPI (Deep Packet Inspection), которые используются для фильтрации интернет-трафика.

  • GoodbyeDPI — один из наиболее популярных инструментов, разработанный для обхода DPI в Windows. Он изменяет или фрагментирует пакеты данных так, чтобы их было трудно корректно распознать.

  • Zapret — еще одно решение, наиболее часто используемое для роутеров под OpenWRT, также маскирующее или фрагментирующее пакеты.
    Из плюсов: присутствует автоматический поиск рабочей конфигурации для обхода, который, правда, далеко не всегда работает.
    Из минусов: требует установки кучи зависимостей и довольно сложен в конфигурировании.

  • ByeDPI — это решение для Linux, под различные архитектуры, на основе которого созданы приложения под Андроид.

Зачем нужны ByeDPI и Redsocks?

ByeDPI — это утилита (не путать с приложением под Андроид) для обхода DPI (Deep Packet Inspection), которая изменяет сетевые пакеты таким образом, чтобы они не распознавались системами фильтрации трафика.
Но ByeDPI поднимает только SOCKS5 сервер, и чтобы пустить трафик через него, необходимо настроить прокси в каждом конкретном приложении.
К сожалению, VPN туннель реализован только в приложении ByeDPI под Андроид (и его более быстроразвивающемся на данный момент форке ByeByeDPI).

Redsocks — это прокси-инструмент, который перенаправляет трафик через SOCKS или HTTP прокси, даже если приложение не поддерживает настройку прокси напрямую.

Сочетание этих двух инструментов на роутере позволяет обходить блокировки на уровне роутера, обеспечивая свободу в домашней сети без необходимости установки ПО на каждом устройстве.

Установка OpenWRT на ASUS ASUS RT-N12

Здесь кратко опишу процесс усановки OpenWRT на роутер ASUS RT-N12 VP B1, если на вашем роутере уже стоит OpenWRT можете смело переходить к следующему разделу.

Вообще установка OpenWRT на роутер ASUS RT-N12 довольно тривиальна и подробно описана здесь и здесь, подсвечу лишь несколько моментов:

  • У меня последняя прошивка OpenWRT 23.05.5 работала нестабильно из-за недостатка памяти, также есть предупреждение на официальном сайте что драйвер Wi-Fi в ней работает некорректно;

  • Но замечательно заработала прошивка 19.07.4 +/- mwan3 в которую добавлен проприетарный Wi-Fi драйвер.

  • Правда на этой прошивке отказался работать пакет ByeDPI для OpenWRT 23.05.5, но заработал для OpenWRT 21.05.5 (об этом позже).

Способ 1:

  1. Для начала нужно скачать и установить утилиту ASUS Firmware Restoration 2.1.0.3, но можно попробовать и без неё, просто через браузер заходим на 192.168.1.1, там можно будет прошить или сбросить NVRAM.

  2. Идем в свойства сетевой карты и вбиваем вручную адреса: IP-адрес 192.168.1.10, маска подсети 255.255.255.0, основной шлюз 192.168.1.1

  3. Настоятельно рекомендуется отключить лишние сетевые адаптеры, в особенности виртуальные (VPN, NAT от VMWare и т.п.)

  4. Выключаем роутер кнопкой

  5. Вставляем сетевой кабель в любой LAN порт

  6. Зажимаем кнопку Reset (рядом с кнопкой питания) 5-10 секунд

  7. Удерживая кнопку нажатой, включаем роутер

  8. Когда индикатор питания начнет быстро мигать - кнопку Reset можно отпустить. Ваш роутер в режиме восстановления

  9. Открываем утилиту, выбираем файл прошивки и прошиваем

Но, у меня ASUS Firmware Restoration категорически отказывалась находить роутер, а также в режиме восстановления по адресу 192.168.1.1 ничего не было, так что пришлось использовать второй способ, для которого нужно включить доступ по SSH в настройках роутера.

Способ 2:

  1. Закидываем файл прошивки 19.07.4 +/- mwan3 в папку tmp через консоль (scp) или с помощью программы WinSCP

    В терминале в папке с скачанным и разархивированным файлом прошивки выполняем команды:

scp openwrt-19.07.4-rt-n12vp_b1-mwan3-squashfs-sysupgrade.bin root@192.168.1.1:/tmp  
ssh root@192.168.1.1   
cd /tmp  
mtd-unlock -d linux  
mtd-write -i openwrt-19.07.4-rt-n12vp_b1-mwan3-squashfs-sysupgrade.bin -d linux
rm openwrt-19.07.4-rt-n12vp_b1-mwan3-squashfs-sysupgrade.bin
reboot
  1. Пробуем зайти в браузере на 192.168.1.1. Если открывается веб-интерфейс, то идем дальше, если нет, пытаемся сбросить настройки или прошить по способу 1.

  2. Далее заходим без пароля и включаем Wi-Fi во вкладке по этой инструкции.

Установка ByeDPI и Redsocks

Для начала нужно скачать подходящий для вашей версии OpenWRT пакет ByeDPI отсюда.

Закидываем его в папку tmp через консоль (scp) или с помощью программы WinSCP

scp .byedpi_0.14.1-1_mipsel_24kc.ipk root@192.168.1.1:/tmp

Логинимся по SSH

ssh root@192.168.1.1

Если позволяет место, устанавливаем опциональные пакеты для более быстрой установки и проверки работы

opkg update
opkg install coreutils-sort curl grep gzip

Пробуем установить Redsocks с помощью скрипта следующей командой:

cd /tmp && wget https://github.com/emoncd /tmp && wget https://github.com/emonbhuiyan/Redsocks-OpenWRT/raw/main/install.sh && chmod +x install.sh && clear && sh install.sh && rm install.sh && clearbhuiyan/Redsocks-OpenWRT/raw/main/install.sh && chmod +x install.sh && clear && sh install.sh && rm install.sh && clear

Если появилась ошибка wget error : SSL support not available, то нужно доустановить сертификаты командой:

opkg install libustream-mbedtls ca-bundle ca-certificates

Далее открываем конфиг Redsocks

vi /etc/redsocks.conf

И прописываем в нем следующие параметры

base {
        log_debug = off;
        log_info = on;
        log = "syslog:local7";
        daemon = on;
        redirector = iptables;
}

redsocks {
        local_ip = 0.0.0.0;
        local_port = 1337;
        ip = 127.0.0.1;
        port = 1080;
        type = socks5;
}

Перезпускаем и включаем сервис Redsocks

service redsocks restart
service redsocks enable

Устанавливаем ранее скачаный пакет ByeDPI

opkg install /tmp/byedpi_0.14.1-1_mipsel_24kc.ipk

Открываем конфиг ByeDPI

vi /etc/config/byedpi

Здесь прописываем найденную на просторах интернета и подходящую для вашего провайдера конфигурацию обхода блокировок. Протестировать конфигурацию, перед тем как применить её здесь, можно с помощью приложения ByeDPIAndroid на телефоне.

config byedpi 'main'
	option enabled 1

	#	if set, all other uci settings are ignored
	option cmd_opts '--hosts /etc/config/byedpi.hosts'

Опция --hosts указывает файл со списком (потенциально) заблокированных доменов, к которым будет применяться обход DPI. Этот файл можно создать через WinSCP или командой

vi /etc/config/byedpi.hosts

Содержимое файла примерно такое

####Список доменных имен для обхода ограничений

### YouTube
youtube.com
youtu.be
ggpht.com
ytimg.com
i.ytimg.com
i9.ytimg.com
yt3.ggpht.com
l.google.com
play.google.com
youtubei.googleapis.com
wide-youtube.l.google.com
nhacmp3youtube.com
googleusercontent.com
yt3.googleusercontent.com
googleapis.com
googlevideo.com
youtubei.googleapis.com
1e100.net

###Google google.com
mtalk.google.com
manifests.googlevideo.com
googleapis.com
youtube.googleapis.com
gmailpostmastertools.googleapis.com
NS1.google.com
NS2.google.com
NS3.google.com
NS4.google.com
play.google.com
gstatic.com
googleads.g.doubleclick.net

###Новостные и погодные сервисы
msnbc.com
foxnews.com
cnn.com
dw.com
bbc.com
bbc.com/weather
bbc.co.uk
bbc.co.uk/weather
static.files.bbci.co.uk
mybbc-analytics.files.bbci.co.uk
weather.files.bbci.co.uk
nav.files.bbci.co.uk
m.files.bbci.co.uk
inforesist.org
france24.com
accuweather.com
meteoblue.com
open-meteo.com
openweathermap.org
weatherstack.com
worldweatheronline.com
wunderground.com
currenttime.tv

###Мессенджеры
whatsapp.com
whatsapp.net
static.whatsapp.net
g.whatsapp.net
time.android.com
web.whatsapp.com
signal.org
getsession.org
amazon.com
amazonaws.com

###Социальные сети
facebook.com
x.com
twitter.com
instagram.com

###Торрент-трекеры
rutracker.org
rutor.info
rutor.is
mega-tor.org
kinozal.tv
#nnm-club.me
#nnm-club.ws
#tfile.me
#tfile-home.org
#tfile1.cc
#megatfile.cc
#megapeer.org
#megapeer.ru
tapochek.net
#tparser.org
#tparser.me
rustorka.com
#uniongang.tv
fast-torrent.ru

###Каталоги медиаконтента для программ 
rezka.ag
hdrezka.ag
hdrezka.me
filmix.co
filmix.cc
seasonvar.ru

###Книги
lib.rus.ec
flibusta.is
flibs.me
flisland.net
flibusta.site

###Разное
7-zip.org
edem.tv
msfree.su
4pda.to
protonvpn.com
proton.me
drive.proton.me
tuta.com
whois.domaintools.com
dnsleaktest.com
ipleak.net
github.com
objects.githubusercontent.com
openvpn.net
community.openvpn.net
openwrt.org
lastpass.com
delinea.com
dnscheck.tools
cloudflare.com
cloudflare-dns.com
1dot1dot1dot1.cloudflare-dns.com
controld.com
umbrella.com
cisco.com
quad9.net
deb.oxen.io
ntc.party
akamaitechnologies.com
deploy.static.akamaitechnologies.com
akamaistream.net
AX0.AKAMAISTREAM.NET
AX1.AKAMAISTREAM.NET
AX2.AKAMAISTREAM.NET
AX3.AKAMAISTREAM.NET
NS2-32.AKAMAISTREAM.NET
NS3-32.AKAMAISTREAM.NET
NS6-32.AKAMAISTREAM.NET
P5.AKAMAISTREAM.NET
P6.AKAMAISTREAM.NET
P7.AKAMAISTREAM.NET
P8.AKAMAISTREAM.NET
149.34.0.0/16
cloudfront.net
datapacket.com
wholesale.adamo.es

###Ubuntu и форки ubuntu.com
archive.ubuntu.com
linuxmint.com
packages.linuxmint.com
tuxedocomputers.com
os.tuxedocomputers.com
mirror.init7.net
kde.org
ubuntucinnamon.org
23.192.0.0/11
23.128.64.0/23

###Проверка Tor
check.torproject.org

Перезпускаем и включаем сервис ByeDPI

service byedpi restart
service byedpi enable

Проверить результат можно с помощью тестирования скорости загрузки домена googlevideo.com

curl --connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o/dev/null

Автор: DipodDP

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js