Skip to content
forked from bol-van/zapret

DPI bypass multi platform on Keenetic

Notifications You must be signed in to change notification settings

ittps-pro/kn-dpi

 
 

Repository files navigation

Подробная обновляемая @nik инструкция настройки репозитория Zapret от bol-van на Keenetic.

Краткое описание.

Автономное, без задействования сторонних серверов, средство противодействия DPI. Может помочь обойти замедления сайтов http(s), сигнатурный анализ tcp и udp протоколов, например с целью замедления YouTube.

Существуют режимы обхода TPWS и NFQWS. Режим NFQWS имеет ряд преимуществ пред режимом TPWS. Больше параметров модификации TCP соединения на уровне пакетов. Реализуется через обработчик очереди NFQUEUE и raw сокеты, а также возможность модификации трафика по протоколу QUIC.

P.S. Это не VPN и не прокси, это средство для обмана (подмены) пакетов tcp и udp протокола, не режет скорость, повышается анонимность, а также не ломает то, что и так хорошо работало.

По необходимости улучшаются: config, hostlists, zapret. После обновления хотя бы одного из них, обязательно перезагружаем entware(openwrt) В конце инструкции вас ждут полезные команды.

Технические требования.

(рекомендуемые) Keenetic Viva kn-1912 равным или более 256мб ОЗУ и наличием USB порта.

(минимальные) Keenetic Extra, Viva с менее 256мб ОЗУ и наличием USB порта.

Подготовка.

(обязательно) Проверить, что установленны все пакеты под категорией OPKG в наборах компонентов в настройках, также протокол IPv6 и Модули ядра подсистемы Netfilter (он появится в списке пакетов только после установки пакета "Протокол IPv6").

(обязательно) Необходимо заменить в настройках роутера DNS-серверы провайдера на публичные. Прописываем IP адреса DNS - 8.8.8.8 и 77.88.8.8, и не забываем поставить галочку "игнорировать DNS предлагаемые провайдером интернета".

(обязательно) Установка системы пакетов репозитория Entware на USB-накопитель. Или не очень хороший метод Установка OPKG Entware на встроенную память роутера.

(опционально) Можно настроить, но не обязательно, если совсем ничего не поможет. Прокси-серверы DNS-over-TLS и DNS-over-HTTPS для шифрования DNS-запросов.

Все дальнейшие команды выполняются не в cli роутера, а в среде entware.

Подключение по SSH к роутеру через "putty", например если адрес вашего роутера 192.168.1.1 а порт 22 или 222 если активировали сервер SSH

Логин:

root

Пароль:

keenetic

Если увидите "(config)>" значит вошли под admin, чтобы продолжить, вводим:

exec sh

Если видим BusyBox v1.36.1 (XXXX-XX-XX xx:xx:xx UTC) built-in shell (ash), переходим к установке, левой кнопкой мыши нажимая на квадратики копируем код, а правой вставляем в putty.

Установка.

1. Обновляем пакеты opkg.

opkg update

2. Устанавливаем пакеты ipset:

opkg install coreutils-sort curl git-http grep gzip ipset iptables kmod_ndms nano xtables-addons_legacy

3. Загружаем репозитории Zapret:

cd /opt/tmp
git clone --depth=1 https://github.com/bol-van/zapret.git
Если выдает ошибку - fatal: could not create leading directories of 'zapret/.git', откройте этот раскрывающий список, в ином случае, следуйте инструкции ниже
  1. Переходим https://github.com/bol-van/zapret.git, скачайте zip архив нажатием на code далее download zip
  2. Далее выгружаем архив через интерфейс роутера по пути: Приложения>флэшка>папка opkg>папка tmp>вверху "загрузить файл в выбранную папку", также это можно сдлеать через SMB протокол, если вы активировали его заранее
  3. Открываем putty, авторизуемся
  4. Вводим
    cd /opt/tmp
    unzip zapret-master.zip
    cd zapret-master
    sh install_easy.sh
  5. Пошел процесс, далее по инструкции..

4. Начнинаем устновку, выполняем скрипт (если у вас до этого была ошибка, пункт пропускаем, вы уже это сделали ранее, переходим к 5 пункту):

cd zapret
./install_easy.sh

5. Далее (будут спрашивать, 3 раза отвечаем Y, затем enter после каждого раза):

y

6. Далее нас будут много о чем спрашивать, везде нажимаем ENTER, пока не увидим надпись press enter to continue, а затем снова жмем ENTER.

7. Удаляем ненужное:

rm -rf /opt/tmp/*

8. Создадим правило для автозапуска Zapret при включении роутера:

ln -fs /opt/zapret/init.d/sysv/zapret /opt/etc/init.d/S90-zapret

9. Загружаем готовый стартовый скрипт с dnsmasq внутри:

cd /opt/zapret/init.d/sysv
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/opt/zapret/init.d/sysv/zapret

10. Загружаем готовый скрипт, чтобы роутер не забывал правила:

cd /opt/etc/ndm/netfilter.d
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/opt/etc/ndm/netfilter.d/000-zapret.sh

11. Исполняем:

chmod +x /opt/etc/ndm/netfilter.d/000-zapret.sh

12. Загружаем готовый скрипт для перевода net.netfilter.nf_conntrack_checksum в 0:

cd /opt/etc/init.d
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/opt/etc/init.d/S00fix

13. Исполняем:

chmod +x /opt/etc/init.d/S00fix

14. (обновляемый пункт) Загружаем готовый конфиг Zapret, подходит для большинста провайдеров с pppoe (Тестировался на Ростелеком, Дом.ру):

cd /opt/zapret
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/opt/zapret/config
Или такой, разницу сможете ощутить после завершения цикла настройки (сменил первый сегмент фейка с disorder2 на split2, а также ttl на знаение 6).
cd /opt/zapret
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/opt/zapret_alt/config

Так как вы вставили мой конфиг, вы также перенесли несколько настроек, если у вас авторизация у провайдера pppoe, а роутер с ОЗУ более 256мб, то переходим к 15 шагу.

IFACE_WAN=ppp0
MODE_FILTER=autohostlist

Для начала узнаем имя внешнего сетевого интерфейса (WAN) на роутере. Его можно узнать воспользовавшись командой ifconfig, которая выведет все сетевые интерфейсы в системе. Просто находим тот интерфейс, у которого будет ваш внешний IP адрес. В моем случае – это ppp0, в вашем же, если у вам провайдер выдает адрес по статике или DHCP, значит у вас eth3. Запоминаем.

ifconfig

Если у вас роутер с ОЗУ менее 256мб или авторизация у провайдера не pppoe, а динамика или статика по динамике, то правим конфиг Zapret, редактором, командой ниже.

nano /opt/zapret/config

Если у вас роутер с ОЗУ менее 256мб, ищем строку MODE_FILTER=autohostlist и на:

MODE_FILTER=hostlist

Прописываем интерфейс провайдера в строке IFACE_WAN=ваш интерфейс, например:

IFACE_WAN=eth3

Также можно прописать несколько используемых WAN интерфейсов через пробел, например:

IFACE_WAN="eth3 usb0"

(опционально, надо проверить) Если необходимо направить трафик не на всю сеть, а например только гостевую сеть, vlan, опеределенный порт или l2tp, уберите решетку в #IFACE_LAN=eth0 и укажите 1 или несколько интерфейсов (узнать какой интерфейс за что отвечает, можно все той же командой ifconfig):

IFACE_LAN=br0

Или br0 - это бридж основной сети, br1 - vlan гостевой сети, ezcfg0 - частный VPN сервер IKEv2/IPsec и т.д.:

IFACE_LAN="br0 br1 ezcfg0"

Если закончили править, сохраняем CTRL+S, затем CTRL+X для выхода.

15. (обновляемый пункт) Далее выбираем, что будем ускорять:

Если необходимо ускорить только youtube, загружаем:

cd /opt/zapret/ipset
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/hostlists/youtube/zapret-hosts-user.txt

Если необходимо ускорить youtube и соц. сети f, i, t(x):

cd /opt/zapret/ipset
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/hostlists/yfit/zapret-hosts-user.txt

Если необходимо ускорить все что можно, то:

cd /opt/zapret/ipset
curl -O https://raw.githubusercontent.com/nikrays/Zapret-on-Keenetic/master/hostlists/blacklist-russia/zapret-hosts-user.txt

16. Перезагружаем entware(openwrt) командой ниже:

/opt/etc/init.d/rc.unslung restart

Готово, проверяем.

Если не заработало, открываем снова конфиг:

nano /opt/zapret/config

Обращаем внимание на:

NFQWS_OPT_DESYNC="--dpi-desync=fake,disorder2 --dpi-desync-split-pos=1 --dpi-desync-ttl=0 --dpi-desync-fooling=md5sig,badsum --dpi-desync-repeats=6 --dpi-desync-any-protocol --dpi-desync-cutoff=d4" 

Можно попробовать менять значение ttl от 0 до 12 или же сменить значения dpi-desync с split2 на disorber2 ниже несколько примеров:

NFQWS_OPT_DESYNC="--dpi-desync=split2"
NFQWS_OPT_DESYNC="--dpi-desync=fake,split2 --dpi-desync-ttl=2 --dpi-desync-fooling=badsum"
NFQWS_OPT_DESYNC="--dpi-desync=fake,disorder2 --dpi-desync-ttl=3 --dpi-desync-fooling=badsum"
NFQWS_OPT_DESYNC="--dpi-desync=fake,split2 --dpi-desync-ttl=6 --dpi-desync-fooling=badsum"
NFQWS_OPT_DESYNC="--dpi-desync=fake,split2 --dpi-desync-ttl=3 --dpi-desync-fooling=badsum"
NFQWS_OPT_DESYNC="--dpi-desync=fake,split2 --dpi-desync-ttl=6 --dpi-desync-fooling=md5sig"
NFQWS_OPT_DESYNC="--dpi-desync=fake,split2 --dpi-desync-ttl=6 --dpi-desync-ttl6=2 --dpi-desync-split-pos=1 --wssize 1:6 --dpi-desync-fooling=md5sig"

После этого перезагружаем entware(openwrt) и так до тех пор, пока не достигните результата.

/opt/etc/init.d/rc.unslung restart

Или

/opt/zapret/init.d/sysv/zapret restart

P.S.:

Также можно воспользоваться автоподбором. Автоподбор параметров, у каждого могут быть индивидуальными

Следует прогнать blockcheck по нескольким замедленным сайтам и выявить общий характер замедленний. Разные сайты могут быть замедленны по-разному, нужно искать такую технику, которая работает на большинстве. Чтобы записать вывод blockcheck.sh в файл, выполните : ./blockcheck.sh | tee /tmp/blockcheck.txt

/opt/zapret/blockcheck.sh | tee /opt/zapret/blockcheck.txt

Проанализируйте какие методы дурения DPI работают, в соответствии с ними настройте /opt/zapret/config.

Имейте в виду, что у провайдеров может быть несколько DPI или запросы могут идти через разные каналы по методу балансировки нагрузки. Балансировка может означать, что на разных ветках разные DPI или они находятся на разных хопах. Такая ситуация может выражаться в нестабильности работы обхода. Дернули несколько раз curl. То работает, то connection reset или редирект. blockcheck.sh выдает странноватые результаты. То split работает на 2-м. хопе, то на 4-м. Достоверность результата вызывает сомнения. В этом случае задайте несколько повторов одного и того же теста. Тест будет считаться успешным только, если все попытки пройдут успешно.

При использовании autottl следует протестировать как можно больше разных доменов. Эта техника может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах она стабильна, на третьих полный хаос, и проще отказаться.

Blockcheck имеет 3 уровня сканирования. Цель режима quick - максимально быстро найти хоть что-то работающее. standard дает возможность провести исследование как и на что реагирует DPI в плане методов обхода. force дает максимум проверок даже в случаях, когда ресурс работает без обхода или с более простыми стратегиями.

Автохостлист находится по адресу (Сюда идет пополнение доменов на те к которым вы пытаетесь достучаться, например рутор, чуть позже он автоматически туда попадает):

nano /opt/zapret/ipset/zapret-hosts-auto.txt

Ручной список доменов:

nano /opt/zapret/ipset/zapret-hosts-user.txt

Запустить NFQWS и проверять работоспособность с помощью команды:

/opt/zapret/init.d/sysv/zapret start

Для перезагрузки NFQWS использовать команду:

/opt/zapret/init.d/sysv/zapret restart

Для остановки NFQWS использовать команду:

/opt/zapret/init.d/sysv/zapret stop

Сделать backup entware(openwrt) с Zapret:

cd /opt
tar cvzf /opt/backup-`date -I`.tar.gz *

Для очистки содержимого накопителя, чтобы например, попробовать все заново:

rm -rf /opt/*

Чтобы восстановить backup entware(openwrt) с Zapret, достаточно снова создать папку install и загрузить в нее ранее созданный backup, после чего переопределить накопитель в менеджере OPKG выбрав "не выбран" затем снова выбрать "накопитель", ждем когда закончится процесс развертывания. Далее вставляем скрипт ниже в параметр "Сценарий initrc" в менеджере OPKG, после перезагружаем роутер.

/opt/etc/init.d/rc.unslung

Обновить репозиторий Zapret можно выполнив эту команду (разработчик в последнее время активизировался и регулярно правит код):

cd /opt/zapret
git pull --rebase

#zapret #bol-van #keenetic #youtube #ускорение #ростелеком

About

DPI bypass multi platform on Keenetic

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 80.7%
  • Shell 18.6%
  • Other 0.7%