Планируется ли портирование на linux?)
Так на Linux есть zapret от bol-van сам пробовал все работает.
Для Linux есть zapret.
zapret сложный. Хотелось бы GUI.
Времена нынче смутные. Нужно развиваться, думать, иначе есть вероятность остаться за бортом и утонуть в чебурнэте. Огромная благодарность разработчикам, что пишут такой софт.
Да, разобрался. По этой инструкции.
Итак, установил zapret (без лишних файлов и конфигов, только бинарники, пути сборки мои, на примере Ubuntu):
sudo apt install gcc g++ make git libnetfilter-queue-dev zlib1g-dev iptables
git clone --depth=1 https://github.com/bol-van/zapret
cd zapret
make
sudo cp /home/denis/zapret/binaries/my/ip2net /usr/local/bin/ip2net
sudo cp /home/denis/zapret/binaries/my/mdig /usr/local/bin/mdig
sudo cp /home/denis/zapret/binaries/my/nfqws /usr/local/bin/nfqws
sudo cp /home/denis/zapret/binaries/my/tpws /usr/local/bin/tpws
rm -rd /home/denis/zapret
Впрочем, можно не компилировать, а скопировать готовые для своей архитектуры. Но готовые бинарники статические (static), а не shared. Со своим встроенным libnetfilter, видимо. Зависимости можно посмотреть с помощью readelf -d
Создал файл /home/denis/youtube-domain.txt с содержимым:
googlevideo.com
Дальше, в Терминале 1:
sudo nfqws --qnum=200 --dpi-desync=disorder2 --dpi-desync-split-pos=1 --hostlist=/home/denis/youtube-domain.txt
(для завершения Ctrl+C)
Путь к txt файлу, естественно ваш.
Если терминал случайно закрылся, программа может остаться висеть в памяти. Убить её можно в диспетчере задач. Правда, придётся от root. Можно узнать ID процесса и выполнить sudo kill ID
(указав нужный ID) или sudo killall nfqws
В Терминале 2 выполняю две команды (добавление iptables правил, они добавляются до перезагрузки компа, о том, как сохранить на постоянной основе, пока умолчим):
sudo iptables -I OUTPUT -o enp1s0 -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
sudo ip6tables -I OUTPUT -o enp1s0 -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
Для ipv4 и ipv6. Сетевой интерфейс у меня enp1s0. У вас может быть другой. Узнать можно командой ip link
Посмотреть список правил:
sudo iptables -L -n
Проверка скачивания чего-нибудь. Сначала установим yt-dlp из pip (в ~/.local, а потому .local/bin должен быть в PATH):
sudo apt install python3-pip ffmpeg curl
export PATH=$HOME/.local/bin:$PATH
pip3 install -U yt-dlp
Обновление yt-dlp:
pip3 install -U yt-dlp
Скачивание:
yt-dlp 'YOUTUBE ССЫЛКА' -f 137 --no-config --downloader=curl --downloader-args="--http1.1"
curl хорош для тестов, потому что качает весь URL в однопоток (не кусками) и более детально показывает скорость. Но его замедляет уже сам YouTube, правда, не так сильно (2xrealtime bitrate/time). Т.е. должно качаться в два раза быстрее продолжительности видео или аудио. Чем выше качество, тем выше скорость скачивания (для аудио совсем маленькая скорость это норм).
--http1.1
можно заменить на --http3-only
но нужен curl с поддержкой http3/quic (распакованный бинарник закиньте в /usr/local/bin, т.е. sudo cp /path/to/curl /usr/local/bin/curl
, при необходимости сделайте исполняемым sudo chmod +x /usr/local/bin/curl
Или просто:
yt-dlp 'YOUTUBE ССЫЛКА' -f 137
Можно, например -f 137+251
Список форматов:
yt-dlp 'YOUTUBE ССЫЛКА' -F
Для удаления правил надо добавить те же строчки, но заменить -I (значит Insert) на -D (значит Delete). Т.е. будет:
sudo iptables -D OUTPUT -o enp1s0 -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
sudo ip6tables -D OUTPUT -o enp1s0 -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
Проверим, что правила удалились:
sudo iptables -L -n
Удалить yt-dlp из pip (например, чтобы установить из другого источника) можно командой:
pip3 uninstall yt-dlp
Пишите провайдеров, потому что звездопляски для некоторых провайдеров бесполезны. Win или linux - неважно. Пашет только VPN. (Говоря про ютуб)
Yota Новосибирск (тариф для модема, 4G модем подключен Ethernet кабелем к компу с Xubuntu 22.04). Работает сейчас. Подрезать скорость начали с 1 августа 2024.
Ростелеком Новосибирск. Настроил по описанной выше инструкции, показывает 8K.
Только автор zapret этому никак не способствует своим безразличием к новичкам.
У вас есть целая куча readme на github и этот форум. Если их изучить и иметь базовые навыки работы в linux системах, то все довольно просто работает.
ByeDPI нормально работает. Пример:
./ciadpi --fake 2 --split 3 --ttl 4 -M dcsmix --hosts russia-blacklist.txt --auto=none
(russia-blacklist.txt взять из GoodbyeDPI)
Потом 0.0.0.0:1080 в прокси прописать, и всё.
Прокси в Хроме проще всего ставить через Proxy SwitchyOmega.
Если дописать & exit 0
то терминал можно не держать открытым.
iptables правила могут сохранить команды:
sudo iptables-save
sudo ip6tables-save
Для удобства sudo можно сделать без пароля:
sudo visudo
укажите:
user ALL=(ALL:ALL) NOPASSWD: ALL
где user ваше имя пользователя
Ctrl+O (O буква) сохранение
Ctrl+X выход
На убунте вместо user используется %sudo (все члены группы sudo, в других дистрах этой группы нет).
iptables-save оказывается не сохраняет после перезагрузки, а сохраняет в некий файл, который потом надо restore. В общем, сложно. В Debian и Ubuntu есть пакет iptables-persistent. Я не стал с ним связываться. Погуглите сами как сохранить на постоянной основе. Как оказалось, там много подводных камней и дистроспецифично.
Зато, я наконец-то нашёл способ как обойти блок openvpn протокола на йоте:
sudo nfqws --qnum=200 --dpi-desync=fake --dpi-desync-cutoff=d4 --dpi-desync-repeats=6 --dpi-desync-ttl=7 --dpi-desync-any-protocol=1 --hostlist=/home/denis/openvpn.txt & exit 0
Работает с теми же iptables правилами, если openvpn tcp:443. openvpn.txt содержит домен openvpn сервера. Wireshark маркирует такие пакеты как TCP и SSL, а не OpenVPN.
Посмотреть, запущен ли nfqws можно такой командой:
ps -e | grep nfqws
Не удаляйте это, пожалуйства. Пусть будет небольшое отступление от темы.
Очень простой не требующий даже прав root способ заключается в использовании бинарника tpws из пакета zapret в режиме прокси:
./tpws --debug=1 --bind-addr 127.0.0.1 --port=1080 --socks --hostlist=hosts --split-pos=1 --split-any-protocol --disorder
Файл hosts со списком доменов лежит рядом с бинарником tpws в данном случае.
Соответственно, в браузере нужно сконфигурить доступ в сеть через сокс-прокси 127.0.0.1 по 1080 порту.
Не уверен что параметры обхода DPI самые оптимальные, это у всех по-разному нужно подбирать.
А вообще я сделал .desktop файл в который прописал простой баш-скрипт, который уже запускает tpws.
.desktop можно в автозагрузку или просто жамкать когда нада, но сейчас все идет к тому, что нужно systemd-unit просто делать и пусть оно запускается вместе с системой.