Как оказалось, не только VLESS-сообщество задается вопросами, что да как. Сложно сказать, как сейчас "правильно", и как будет правильно, скажем, через 6 месяцев. Но в целом, нашлась в теории очень неплохая и многообещающая схема, которая по состоянию на 1 квартал 2025 года сочетает в себе камуфляж "под https-сайт" с отсечкой active probing и прочих источников проблем. На примере другого vpn (ocserv) достаточно подробно изложено на English вот здесь. Думаю, что для тех, у кого хост в зоне .ru, схема избыточная вне зависимости от протокола vpn, поскольку "товарищ майор" от российского хостинга получит любые логи за миллисекунды. А благодаря этим логам всякие ваши усилия в направлении "как правильно" превратятся в мартышкин труд. В целом, сама идея создания vpn на российском хосте в настоящее время по абсурдности близка к ведению доверительной и откровенной переписки в сервисах VK или через сервер mail.yandex.ru. Но, у каждого свой путь и свои возможности к пониманию Вселенной... Опуская нюансы про другой вариант vpn, в свободном изложении на русском языке общие для VLESS шаги следуюшие:
Провайдер должен обеспечить вас доменом, а для домена уже вы сами, через админский web-интерфейс, должны создать несколько адресных записей;
И сам домен, и дополнительно созданные адресные записи должны быть замкнуты на один и тот же IP! Если IP вашего vpn-сервера НЕ будет (или почему-то не может) совпадать с IP вашего же камуфляжного сайта, то вся затея не имеет смысла;
На вашем сервере должны крутиться три сервиса: 3.1 haproxy - это frontend для TCP на 443; 3.2 web-сервер по вашему выбору (например, Nginx или Apache) - в качестве первого backend. Этот backend сидит на одной адресной записи и слушает какой-нибудь свободный порт (например, 127.0.0.1:8448). На него haproxy будет слать всякий мусорный не-vpn траффик (active probing, индийский и китайский brute-force, разных патриотичных интернет-сатрапов и т.п.), а на самом web-сервере у вас будет крутиться камуфляжный "сайт" с какой-нибудь замысловатой капчей на входе;
3.3 сервер вашего vpn - второй backend, который слушает другой свободный порт (например, 127.0.0.1:8443).
Порты 8443 и 8448 должны быть закрыты всего для внешнего траффика по ipv4 и ipv6.
Далее, видимо, получаете на связку "домен + обе адресные записи" автообновляемый сертификат Letsencrypt, завязанный на единый IP, и тем самым вы должны обеспечить безусловное и объективное объяснение того, почему на вашем IP адресе "шелестит" криптованный траффик.
Хоть у haproxy поистине огромные возможности при проксировании нешифрованного (http) траффика, но "глушить" (то есть, пытаться расшифровывать) входящий SSL-траффик до http-уровня haproxy нормально не может. Но это, видимо, и не особо нужно, поскольку SNI-функционал на уровне заголовков у haproxy работает, как часы. А значит, если на входе будет траффик с заголовком, не содержащим прямое указание на адресную запись вашего vpn, то смело шлите такой траффик на web-сервер (8448). Пусть азиатские брутфорсеры, всякие патриотично настроенные поклонники безсполезного интернета ваши капчи разгадывают.
Если же в заголовке входящего SSL-траффика haproxy поймает указание на адресную запись вашего vpn, то шлите такой траффик на соответствующий порт, чтобы сервер vpn смог проверить, является ли запрос авторизованным или нет.
При начальном рассмотрении, в теории, метод должен быть рабочий для любого vpn в принципе. Буду пробовать в течение Апреля, для начала и ради смеха на каком-нибудь доступном россйском хосте, типа vdsina. Думаю, что на haproxy можно будет подвесить еще один backend, например, для скрипта автобана всяких назойливых "посетителей".
Уважаемый Keenet, благодарю Вас за важную и очень полезную работу! Переустановка удалась с первой попытки. Только я не стал проверять, как новая версия встанет поверх старой, а просто сохранил ряд файлов для режима 'hostlist', потом снес старую версию и установил новую. Возможно, для Вас и остальных пользвателей будет полезно небольшое дополнение к Вашей инструкции, приведенное ниже. В нем речь о том, как создать несколько задач для cron, которые упростят работу и использование функционала NFQWS. Одна задача будет проверять обновление исходников 1 раз в сутки, вторая будет регулярно сбрасывать кэши всех уровней и освобождать память, а третья, которую можно создать только под OpenWrt, так же с целью освобождения памяти роутера, будет очищать логи один раз в сутки . Вот код для Entware на примере редактора nano:
# nano /opt/var/spool/cron/crontabs/root
в конце существующего в файле текста перед сохранением добавляем:
0 2 * * * git -C /opt/zapret pull
*/30 * * * * echo 3 > /proc/sys/vm/drop_caches
Код для OpenWrt:
# crontab -e
в конце существующего в файле перед сохранением добавляем:
0 2 * * * git -C /opt/zapret pull
*/30 * * * * echo 3 > /proc/sys/vm/drop_caches
0 4 * * * logrotate /etc/logrotate.conf
И еще, пара интересных наблюдений, которые могут быть полезны для всех пользователей:
прекращаем проверять работоспособность обхода с использованием curl через сервер selectel.ru. На сервере стоит скрипт, который отправляет в РКН информацию о том, с какого IP прошел успешный тест закачки youtube. А провайдер потом снова меняем настройки блокировок;
пользователям Android лучше отказаться от использования приложения SmartTube по тем же соображениям. Видимо, к русскоязычному разрабу РКН подобрал "ключик". Так что, лучше используйте приложение LibreTube
Цитата из Вступления к инструкции "...Информация может быть полезна для владельцев роутеров с поддержкой Entware (Keenetic с прошивкой от 2.11 и выше, а также еще ряд марок) и роутеров на основе прошивки OpenWrt версии не ниже 22..."
Отличные новости, поздравляю Вас! Думаю, что все владельцы роутеров под OpenWrt будут Вам благодарны, если Вы здесь поделитесь Вашим вариантом установки, который привел к успеху. Не сомневаюсь, что сегодня по тем же "граблям" бегает масса людей. Поэтому, будет замечательно, если Вы по шагам опишете процесс: от форматирования USB под доп. хранилище до практического успешного запуска сервиса tpws под OpenWrt.
Здравствуйте! Скорее всего, проблема связана с тем, что при копировании текста из pdf в какой-либо файл на роутере, присходит искажение или пропажа символов. Поэтому в инструкции есть отдельное примечание об этом. Попробуйте проверить, в этом ли проблема, вот каким способом: откройте и сохраните пустой файл с расширением txt в текстовом редакторе, самом простом, типа Notepad на Windows, и сначала вставьте скопированный текст из pdf туда, в этот самый пустой файл. Если при копировании происходит искажение или пропажа символов, Вы это сможете заметить и при необходимости исправить ошибку в ручном режиме. Но, скорее всего, это даже делать не придется: в современных операционках чаще всего используется несколько кодовых страниц, поэтому при копировании и вставке форматированного текста из pdf в файл формата txt, в котором текст лишен атрибутов, сама Windows подберет для проблемных символов все необходимые замены.
Михаил, у Вас остались закоменнтированными строки, которые как раз должны работать - присвоение значения переменной ARGS только для ipv6 без ipv4 и консольное сообщение о том, что TPWS запускается в режиме только для ipv6:
ARGS="--daemon --bind-addr $IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
echo "IPv6 is available. Starting TPWS only for IPv6 = $IPV6_ADDR"
Вот эти строки как раз нужно оставить без комментария, а предыдущие две, где присвоение ARGS делается для сценария совместной работы ipv4 + ipv6 и предусмотрено соответствующее консольное сообщение o запуске TPWS в обоих адресных пространствах, нужно как раз закомментировать:
# ARGS="--daemon --bind-addr $IPV4_ADDR,$IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
# echo "IPv6 is available. Starting TPWS for both IPv4 = $IPV4_ADDR and IPv6 = $IPV6_ADDR"
У Вас, видимо, пока запускается сценарий, который нужно закомментировать, и закомментирован тот, который нужно запустить.
Извиняюсь, что я сразу сам не убрал '#' там, где было нужно.
Согласен, Ваш вариант кода в этой части:
start() {
# Wait for the interface to be ready
while ! ip link show $INTERFACE | grep -q "state UP"; do
sleep 5
done
IPV4_ADDR=$(ip -4 addr show dev $INTERFACE | grep inet | awk '{print $2}' | cut -d/ -f1)
IPV6_ADDR=$(ip -6 addr show dev $INTERFACE scope global | grep inet6 | awk '{print $2}' | cut -d/ -f1)
действительно более логичен. Пометил этот кусок кода под оптимизацию в дальнейших обновлениях инструкции. Прекрасный образец мощи коллективного разума :-)
На примере Google DoH для ipv6 имеет такой синтаксис (один реквизит - строка с адресом):
https://[2001:4860:4860::8888]/dns-query
DoT на том же адресе выглядит так (два реквизита - адрес + TLS domain name):
Если все так, не думали ее накатить поверх не самой новой 22.03.5?
И еще, принципиальный вопрос для успешной работы OpenWrt: как Вы с родной китайской прошивки на OpenWrt переходили? Просто подложили модулю обновления, встроенному в штатную прошивку китайца, бинарник OpenWrt, скачанный из секции Sysupgrade? Или же пошли непростым, но верным путем - сначала залили бинарник из секции Kernel, а уже поверх него накатывали бинарник из секции Sysupgrade? Спрашиваю потому, что по моему опыту установки OpenWrt на старые добрые белые Keenetic прошивка из Sysupgrade вроде вставала через модуль обновления оригинальной прошивки роутера без проблем. А вот при эксплуатации творилась всякая ерунда, начиная с пятиминутной загрузки после каждого reboot. Все это вылечилось только после сброса роутера джампером на плате, заливкой бинарника из Kernel и последующей установкой бинарника из Sysupgrade.
Михаил, если файл по Вашей ссылке актуален то, видимо, Вы меня неверно поняли. По ссылке у Вас сейчас указано вот так:
...
else
ARGS="--daemon --bind-addr $IPV4_ADDR,$IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
echo "IPv6 is available. Starting TPWS for both IPv4 = $IPV4_ADDR and IPv6 = $IPV6_ADDR"
#ARGS="--daemon --bind-addr $IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
#echo "IPv6 is available. Starting TPWS only for IPv6 = $IPV6_ADDR"
fi
...
То есть переменная ARGS в одном условии поочередно определяется дважды и создаются два противоречащих друг другу консольных сообщения. Я же предлагал Вам сделать вот так (уберите строки 3 и 4 из кода выше):
...
else
#ARGS="--daemon --bind-addr $IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
#echo "IPv6 is available. Starting TPWS only for IPv6 = $IPV6_ADDR"
fi
...
Особо повлиять на работу TPWS эта правка не сможет, но лишние теложвижения в коде, а так же ошибочные информационные сообщения генерировать нет смысла.
Относительно того, что при рабочем ipv6 сервис заводится, но YouTube не работает, я Вам ранее написал: попробуйте решить вопрос с DNS через DoH и DoT для ipv6.
Приветствую Вас! Спасибо Вам за обратную связь. Идея периодических обновлений абсолютно верная, на мой взгляд. Сейчас, поскольку инструкция стала общей для TPWS и NFQWS, я думаю, что не стоить частить с обновлениями. Нужно подкопить значимый объем апгрейдов и новых данных и добавить его в новую редакцию инструкции. Иначе есть шанс, что изобилие ссылок сделает инструкцию еще менее полезной копией Q+A на Хабре. Речь о том, что находить актуальную редакцию и обходить чьи-то чужие "грабли" будет очень сложно.
"...tpws запускается, не пропадает но ютуб не открывается..." очень похоже на то, что у Вас нет активной конфигурации DNS через DoH и DoT для ipv6. Или, как минимум, DNS запросы от TPWS в адресном пространстве ipv6 заканчиваются ничем. Из-за требований "рыбнадзора" провайдеры массово заблокировали проброс всех пакетов ipv6 через ipv4, который раньше позволял комфортно тестировать функционал ipv6 параллельно с ipv4. В итоге, если у Вас сервис поднимается на ipv6, а запросы DNS ipv6 через ipv4 заглушены провайдером и на роутере (или где-то в Вашей сети) нет собственного DNS-сервера для ipv6 пространства, то вполне логично, что сервис TPWS хоть и работает, но безрезультатно. Он что-то просит, но ему никто не отвечает. Проверьте настройки роутера в части DNS через DoH и DoT для ipv6: если их нет, а есть только для ipv4, создайте их и для ipv6. Снова reboot и проверьте, что поменяется. Гарантии, что будет работать, как Вы понимаете, нет. Скорее даже есть ожидание, что если Ваш провайдер из услужливых сатрапов "рыбнадзора", то он после хендшейка мог по ipv6 вообще весь трафик загасить. Типа, вот Вам адресок, уважаемый клиент, но трафика по нему у Вас не будет никакого. Собственно, именно этого "рыбнадзор" и добивался от провайдеров, поскольку рабочий ipv6 это другая степень свободы... Как прописать DNS через DoH и DoT для ipv6, хелпа много. Насколько я помню, запись оформляется аналогично записи для ipv4, только адрес из пространства ipv6 для DNS сервера указывается между скобками []. Если не поможет, то пусть пока TPWS на ipv4 поработает при отключенном ipv6 на роутере.
Думаю, что объяснение есть. Где-то пару недель назад "Рыбнадзор" в рамках своего "джихада" с YouTube и Signal потребовал от провайдеров прекратить комфортный для пользователей режим тестирования ipv6 параллельно с ipv4. Этот режим был доступен далеко не у всех, но рубить его стали для всех. В начале эта ситуация привела к тому, что у кого-го совсем пропала раздача адресов в пространстве ipv6 и присваивался только ipv4 от провйдера, у кого-то провайдер продолжил раздавать адреса в пространстве ipv6 параллельно с ipv4, но трафик по ним зарезал в ноль. А у кого-то полностью отвалилась раздача ipv4, и присваивался только ipv6, но все иностранные DNS с поддержкой ipv6 оказались под блокировкой, а у тех у кого DNS завязаны на провайдера или на Yandex (aka Judas), доступ был только к адресному пространству ipv6 внутри страны. А оно мизерное. Номинально, в теории, ipv6 и ipv4 и не должны работать одновременно. Но хотя бы один из них должен работать. У Вас, видимо, штатно работает только ipv4. А что касается ipv6, предполагаю, что Ваш провайдер ловит "отрыжку" этих экспериментов "Рыбнадзора" и в этом, скорее всего, вся проблема. Если работает по ipv4, то просто отключите присвоение адреса из пространства ipv6 от провайдера на уровне роутера хотя бы на месяц и давайте посмотрим, что там будет в итоге. Насколько сейчас эта ситуация искусственно заведена в тупик и перегрета, можно вот тут почитать:
А насчет скрипта, можно его модифицировать так, чтобы принудительно делался выбор в пользу ipv6 без ipv4, если при наличии ipv4 и адрес в ipv6 доступен. Вот эти строки:
else ARGS="--daemon --bind-addr $IPV4_ADDR,$IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
echo "IPv6 is available. Starting TPWS for both IPv4 and IPv6 = $IPV6_ADDR"
fi
измените вот так:
else ARGS="--daemon --bind-addr $IPV6_ADDR --port $PORT --disorder --tlsrec=sni --split-pos=2 --pidfile $PIDFILE --hostlist $HOSTLISTFILE --hostlist-exclude $PASSLISTFILE"
echo "IPv6 is available. Starting TPWS only for IPv6 = $IPV6_ADDR"
fi
и сообщите, как прошло. Если хотя бы локально у Вас заработает, тогда будем обновлять инструкцию для всех.
Михаил, без оформления правил и на Keenetic сервис TPWS прекращает работу в течение 5-15 минут. Но на Keenetic таких проблем с правилами не возникает. Особенно непонятно, почему идет задвоение и даже затроение правил. Возможно, что на OpenWrt есть двоякая интерпретация 'firewall.user' Если это может быть не только файл, но и папка, то давайте так попробуем:
Заходим по SSH, далее:
# mcedit /etc/firewall.user/nftables_config.sh
в редакторе вставляем текст скрипта из 3.2.7.2 версия для OpenWrt (nftables) в последней редакции, сохраняем изменения и выходим
Далее:
# chmod +x /etc/firewall.user/nftables_config.sh
# /etc/firewall.user/nftables_config.sh
# mcedit /etc/rc.local
в этом файле перед exit 0 вставляем строку:
/etc/firewall.user/nftables_config.sh
Сохраняем изменения и выходим. Отправляем роутер в reboot, после загрузки останавливаем TPWS принудительно руками и снова запускаем руками. Поделитесь, что получилось в итоге.
Спасибо Вам за положительную оценку! Не могу объяснить на уровне железа, но по какой-то причине связка "Keenetic серии KN + Synology DS923+ NAS" отказывалась поднимать любой сервис обхода, пока хотя бы один сервер из пары FTP-SFTP был неактивен. С момента подъема обоих вариантов сервера проблем не было ни по TPWS, ни по NFQWS. Курьез... но решился именно так.
Приветствую Вас! Очень рассчитываю на то, что вот этот вариант подробной инструкции, который обощает различные методы установки обхода блокировок, поможет Вам в решении насущных вопросов. Тут как раз есть детализация по установке NFQWS с учетом моего положительного опыта, а так же наиболее актуальная методика по установке TPWS:
Здравствуйте, Михаил! Ваш случай сподвиг меня на изучение метода обхода блокировки через NFQWS, который позволяет вернуть YouTube на телевизоры и ТВ-боксы. Я его опробовал, все работает на Keenetic серии KN. С учетом моего опыта установки была сформирована единая инструкция по ряду методов обхода блокировок. В новую версию инструкции вошла "матрица аналогий" между папками Entware и OpenWrt. Вот ссылки на новую версию:
Уважаемый nkha, большое спасибо Вам за Ваш труд! Рассчитываю на то, что Вы и Ваши читатели поддержите инициативу по распространению единой инструкции по обходу DPI различными методами. Настоящий материал Вашего авторства взят за основу в той части единой инструкции, которая касается zapret-TPWS. Я, как и многие неопытные пользователи, не сразу разобрался в вопросах установки и в той массе сотен вопросов и ответов на Хабре, которая обычно следует за публикацией подобных проектов. Чтобы облегчить установку средств обхода DPI для неискушенных пользователей, и была создана детальная инструкция по различным методам. Сама инструкция в наиболее актуальной версии доступна по ссылке:
Уважаемый Keenet, большое спасибо Вам за Ваш труд! Рассчитываю на то, что Вы и Ваши читатели поддержите инициативу по распространению единой инструкции по обходу DPI различными методами. Настоящий материал Вашего авторства взят за основу в той части единой инструкции, которая касается zapret-NFQWS. Я, как и многие неопытные пользователи, не сразу разобрался в вопросах установки и в той массе сотен вопросов и ответов на Хабре, которая обычно следует за публикацией подобных проектов. Чтобы облегчить установку средств обхода DPI для неискушенных пользователей, и была создана детальная инструкция по различным методам. Сама инструкция в наиболее актуальной версии доступна по ссылке:
Как оказалось, не только VLESS-сообщество задается вопросами, что да как. Сложно сказать, как сейчас "правильно", и как будет правильно, скажем, через 6 месяцев. Но в целом, нашлась в теории очень неплохая и многообещающая схема, которая по состоянию на 1 квартал 2025 года сочетает в себе камуфляж "под https-сайт" с отсечкой active probing и прочих источников проблем. На примере другого vpn (ocserv) достаточно подробно изложено на English вот здесь. Думаю, что для тех, у кого хост в зоне .ru, схема избыточная вне зависимости от протокола vpn, поскольку "товарищ майор" от российского хостинга получит любые логи за миллисекунды. А благодаря этим логам всякие ваши усилия в направлении "как правильно" превратятся в мартышкин труд. В целом, сама идея создания vpn на российском хосте в настоящее время по абсурдности близка к ведению доверительной и откровенной переписки в сервисах VK или через сервер mail.yandex.ru. Но, у каждого свой путь и свои возможности к пониманию Вселенной...
Опуская нюансы про другой вариант vpn, в свободном изложении на русском языке общие для VLESS шаги следуюшие:
Провайдер должен обеспечить вас доменом, а для домена уже вы сами, через админский web-интерфейс, должны создать несколько адресных записей;
И сам домен, и дополнительно созданные адресные записи должны быть замкнуты на один и тот же IP! Если IP вашего vpn-сервера НЕ будет (или почему-то не может) совпадать с IP вашего же камуфляжного сайта, то вся затея не имеет смысла;
На вашем сервере должны крутиться три сервиса:
3.1 haproxy - это frontend для TCP на 443;
3.2 web-сервер по вашему выбору (например, Nginx или Apache) - в качестве первого backend. Этот backend сидит на одной адресной записи и слушает какой-нибудь свободный порт (например, 127.0.0.1:8448). На него haproxy будет слать всякий мусорный не-vpn траффик (active probing, индийский и китайский brute-force, разных патриотичных интернет-сатрапов и т.п.), а на самом web-сервере у вас будет крутиться камуфляжный "сайт" с какой-нибудь замысловатой капчей на входе;
3.3 сервер вашего vpn - второй backend, который слушает другой свободный порт (например, 127.0.0.1:8443).
Порты 8443 и 8448 должны быть закрыты всего для внешнего траффика по ipv4 и ipv6.
Далее, видимо, получаете на связку "домен + обе адресные записи" автообновляемый сертификат Letsencrypt, завязанный на единый IP, и тем самым вы должны обеспечить безусловное и объективное объяснение того, почему на вашем IP адресе "шелестит" криптованный траффик.
Хоть у haproxy поистине огромные возможности при проксировании нешифрованного (http) траффика, но "глушить" (то есть, пытаться расшифровывать) входящий SSL-траффик до http-уровня haproxy нормально не может. Но это, видимо, и не особо нужно, поскольку SNI-функционал на уровне заголовков у haproxy работает, как часы. А значит, если на входе будет траффик с заголовком, не содержащим прямое указание на адресную запись вашего vpn, то смело шлите такой траффик на web-сервер (8448). Пусть азиатские брутфорсеры, всякие патриотично настроенные поклонники безсполезного интернета ваши капчи разгадывают.
Если же в заголовке входящего SSL-траффика haproxy поймает указание на адресную запись вашего vpn, то шлите такой траффик на соответствующий порт, чтобы сервер vpn смог проверить, является ли запрос авторизованным или нет.
При начальном рассмотрении, в теории, метод должен быть рабочий для любого vpn в принципе. Буду пробовать в течение Апреля, для начала и ради смеха на каком-нибудь доступном россйском хосте, типа vdsina. Думаю, что на haproxy можно будет подвесить еще один backend, например, для скрипта автобана всяких назойливых "посетителей".
Уважаемый Keenet, приветствую Вас! Благодарю Вас за необходимую работу, Ваш сценарий вновь сработал без каких-либо проблем на версии 69.5
Уважаемый Keenet, благодарю Вас за важную и очень полезную работу! Переустановка удалась с первой попытки. Только я не стал проверять, как новая версия встанет поверх старой, а просто сохранил ряд файлов для режима 'hostlist', потом снес старую версию и установил новую. Возможно, для Вас и остальных пользвателей будет полезно небольшое дополнение к Вашей инструкции, приведенное ниже. В нем речь о том, как создать несколько задач для cron, которые упростят работу и использование функционала NFQWS. Одна задача будет проверять обновление исходников 1 раз в сутки, вторая будет регулярно сбрасывать кэши всех уровней и освобождать память, а третья, которую можно создать только под OpenWrt, так же с целью освобождения памяти роутера, будет очищать логи один раз в сутки . Вот код для Entware на примере редактора nano:
# nano /opt/var/spool/cron/crontabs/root
в конце существующего в файле текста перед сохранением добавляем:
0 2 * * * git -C /opt/zapret pull
*/30 * * * * echo 3 > /proc/sys/vm/drop_caches
Код для OpenWrt:
# crontab -e
в конце существующего в файле перед сохранением добавляем:
0 2 * * * git -C /opt/zapret pull
*/30 * * * * echo 3 > /proc/sys/vm/drop_caches
0 4 * * * logrotate /etc/logrotate.conf
И еще, пара интересных наблюдений, которые могут быть полезны для всех пользователей:
прекращаем проверять работоспособность обхода с использованием curl через сервер selectel.ru. На сервере стоит скрипт, который отправляет в РКН информацию о том, с какого IP прошел успешный тест закачки youtube. А провайдер потом снова меняем настройки блокировок;
пользователям Android лучше отказаться от использования приложения SmartTube по тем же соображениям. Видимо, к русскоязычному разрабу РКН подобрал "ключик". Так что, лучше используйте приложение LibreTube
Уважаемый Keenet! Большое СПАСИБО Вам, добрый человек!
Цитата из Вступления к инструкции "...Информация может быть полезна для владельцев роутеров с поддержкой Entware (Keenetic с прошивкой от 2.11 и выше, а также еще ряд марок) и роутеров на основе прошивки OpenWrt версии не ниже 22..."
С учетом различий между встроенным функционалом DNS у Keenetic и в OpenWrt попробуйте вот так файл оформить:
Перед изменением файла проверьте Вашу версию https-dns-proxy:
opkg list-installed | grep https-dns-proxy
при наличии обновки накатите ее.
Отличные новости, поздравляю Вас! Думаю, что все владельцы роутеров под OpenWrt будут Вам благодарны, если Вы здесь поделитесь Вашим вариантом установки, который привел к успеху. Не сомневаюсь, что сегодня по тем же "граблям" бегает масса людей. Поэтому, будет замечательно, если Вы по шагам опишете процесс: от форматирования USB под доп. хранилище до практического успешного запуска сервиса tpws под OpenWrt.
Здравствуйте! Скорее всего, проблема связана с тем, что при копировании текста из pdf в какой-либо файл на роутере, присходит искажение или пропажа символов. Поэтому в инструкции есть отдельное примечание об этом. Попробуйте проверить, в этом ли проблема, вот каким способом: откройте и сохраните пустой файл с расширением txt в текстовом редакторе, самом простом, типа Notepad на Windows, и сначала вставьте скопированный текст из pdf туда, в этот самый пустой файл. Если при копировании происходит искажение или пропажа символов, Вы это сможете заметить и при необходимости исправить ошибку в ручном режиме. Но, скорее всего, это даже делать не придется: в современных операционках чаще всего используется несколько кодовых страниц, поэтому при копировании и вставке форматированного текста из pdf в файл формата txt, в котором текст лишен атрибутов, сама Windows подберет для проблемных символов все необходимые замены.
Михаил, у Вас остались закоменнтированными строки, которые как раз должны работать - присвоение значения переменной ARGS только для ipv6 без ipv4 и консольное сообщение о том, что TPWS запускается в режиме только для ipv6:
Вот эти строки как раз нужно оставить без комментария, а предыдущие две, где присвоение ARGS делается для сценария совместной работы ipv4 + ipv6 и предусмотрено соответствующее консольное сообщение o запуске TPWS в обоих адресных пространствах, нужно как раз закомментировать:
У Вас, видимо, пока запускается сценарий, который нужно закомментировать, и закомментирован тот, который нужно запустить.
Извиняюсь, что я сразу сам не убрал '#' там, где было нужно.
Согласен, Ваш вариант кода в этой части:
действительно более логичен. Пометил этот кусок кода под оптимизацию в дальнейших обновлениях инструкции. Прекрасный образец мощи коллективного разума :-)
На примере Google DoH для ipv6 имеет такой синтаксис (один реквизит - строка с адресом):
DoT на том же адресе выглядит так (два реквизита - адрес + TLS domain name):
Михаил, уточните, пожалуйста, вот какой момент. Если я верно идентифицирую Ваше железо, то на него уже есть версия 23.05.4:
https://firmware-selector.openwrt.org/?version=23.05.4&target=ramips%2Fmt7620&id=xiaomi_miwifi-mini
Если все так, не думали ее накатить поверх не самой новой 22.03.5?
И еще, принципиальный вопрос для успешной работы OpenWrt: как Вы с родной китайской прошивки на OpenWrt переходили? Просто подложили модулю обновления, встроенному в штатную прошивку китайца, бинарник OpenWrt, скачанный из секции Sysupgrade? Или же пошли непростым, но верным путем - сначала залили бинарник из секции Kernel, а уже поверх него накатывали бинарник из секции Sysupgrade? Спрашиваю потому, что по моему опыту установки OpenWrt на старые добрые белые Keenetic прошивка из Sysupgrade вроде вставала через модуль обновления оригинальной прошивки роутера без проблем. А вот при эксплуатации творилась всякая ерунда, начиная с пятиминутной загрузки после каждого reboot. Все это вылечилось только после сброса роутера джампером на плате, заливкой бинарника из Kernel и последующей установкой бинарника из Sysupgrade.
Михаил, если файл по Вашей ссылке актуален то, видимо, Вы меня неверно поняли. По ссылке у Вас сейчас указано вот так:
То есть переменная ARGS в одном условии поочередно определяется дважды и создаются два противоречащих друг другу консольных сообщения. Я же предлагал Вам сделать вот так (уберите строки 3 и 4 из кода выше):
Особо повлиять на работу TPWS эта правка не сможет, но лишние теложвижения в коде, а так же ошибочные информационные сообщения генерировать нет смысла.
Относительно того, что при рабочем ipv6 сервис заводится, но YouTube не работает, я Вам ранее написал: попробуйте решить вопрос с DNS через DoH и DoT для ipv6.
Приветствую Вас! Спасибо Вам за обратную связь. Идея периодических обновлений абсолютно верная, на мой взгляд. Сейчас, поскольку инструкция стала общей для TPWS и NFQWS, я думаю, что не стоить частить с обновлениями. Нужно подкопить значимый объем апгрейдов и новых данных и добавить его в новую редакцию инструкции. Иначе есть шанс, что изобилие ссылок сделает инструкцию еще менее полезной копией Q+A на Хабре. Речь о том, что находить актуальную редакцию и обходить чьи-то чужие "грабли" будет очень сложно.
"...tpws запускается, не пропадает но ютуб не открывается..." очень похоже на то, что у Вас нет активной конфигурации DNS через DoH и DoT для ipv6. Или, как минимум, DNS запросы от TPWS в адресном пространстве ipv6 заканчиваются ничем. Из-за требований "рыбнадзора" провайдеры массово заблокировали проброс всех пакетов ipv6 через ipv4, который раньше позволял комфортно тестировать функционал ipv6 параллельно с ipv4. В итоге, если у Вас сервис поднимается на ipv6, а запросы DNS ipv6 через ipv4 заглушены провайдером и на роутере (или где-то в Вашей сети) нет собственного DNS-сервера для ipv6 пространства, то вполне логично, что сервис TPWS хоть и работает, но безрезультатно. Он что-то просит, но ему никто не отвечает. Проверьте настройки роутера в части DNS через DoH и DoT для ipv6: если их нет, а есть только для ipv4, создайте их и для ipv6. Снова reboot и проверьте, что поменяется. Гарантии, что будет работать, как Вы понимаете, нет. Скорее даже есть ожидание, что если Ваш провайдер из услужливых сатрапов "рыбнадзора", то он после хендшейка мог по ipv6 вообще весь трафик загасить. Типа, вот Вам адресок, уважаемый клиент, но трафика по нему у Вас не будет никакого. Собственно, именно этого "рыбнадзор" и добивался от провайдеров, поскольку рабочий ipv6 это другая степень свободы... Как прописать DNS через DoH и DoT для ipv6, хелпа много. Насколько я помню, запись оформляется аналогично записи для ipv4, только адрес из пространства ipv6 для DNS сервера указывается между скобками []. Если не поможет, то пусть пока TPWS на ipv4 поработает при отключенном ipv6 на роутере.
Думаю, что объяснение есть. Где-то пару недель назад "Рыбнадзор" в рамках своего "джихада" с YouTube и Signal потребовал от провайдеров прекратить комфортный для пользователей режим тестирования ipv6 параллельно с ipv4. Этот режим был доступен далеко не у всех, но рубить его стали для всех. В начале эта ситуация привела к тому, что у кого-го совсем пропала раздача адресов в пространстве ipv6 и присваивался только ipv4 от провйдера, у кого-то провайдер продолжил раздавать адреса в пространстве ipv6 параллельно с ipv4, но трафик по ним зарезал в ноль. А у кого-то полностью отвалилась раздача ipv4, и присваивался только ipv6, но все иностранные DNS с поддержкой ipv6 оказались под блокировкой, а у тех у кого DNS завязаны на провайдера или на Yandex (aka Judas), доступ был только к адресному пространству ipv6 внутри страны. А оно мизерное. Номинально, в теории, ipv6 и ipv4 и не должны работать одновременно. Но хотя бы один из них должен работать. У Вас, видимо, штатно работает только ipv4. А что касается ipv6, предполагаю, что Ваш провайдер ловит "отрыжку" этих экспериментов "Рыбнадзора" и в этом, скорее всего, вся проблема. Если работает по ipv4, то просто отключите присвоение адреса из пространства ipv6 от провайдера на уровне роутера хотя бы на месяц и давайте посмотрим, что там будет в итоге. Насколько сейчас эта ситуация искусственно заведена в тупик и перегрета, можно вот тут почитать:
https://pikabu.ru/story/regionalnyie_provayderyi_teryayut_klientov_izza_zamedleniya_youtube_11697042
А насчет скрипта, можно его модифицировать так, чтобы принудительно делался выбор в пользу ipv6 без ipv4, если при наличии ipv4 и адрес в ipv6 доступен. Вот эти строки:
измените вот так:
и сообщите, как прошло. Если хотя бы локально у Вас заработает, тогда будем обновлять инструкцию для всех.
Михаил, без оформления правил и на Keenetic сервис TPWS прекращает работу в течение 5-15 минут. Но на Keenetic таких проблем с правилами не возникает. Особенно непонятно, почему идет задвоение и даже затроение правил. Возможно, что на OpenWrt есть двоякая интерпретация 'firewall.user' Если это может быть не только файл, но и папка, то давайте так попробуем:
Заходим по SSH, далее:
# mcedit /etc/firewall.user/nftables_config.sh
в редакторе вставляем текст скрипта из 3.2.7.2 версия для OpenWrt (nftables) в последней редакции, сохраняем изменения и выходим
Далее:
# chmod +x /etc/firewall.user/nftables_config.sh
# /etc/firewall.user/nftables_config.sh
# mcedit /etc/rc.local
в этом файле перед exit 0 вставляем строку:
/etc/firewall.user/nftables_config.sh
Сохраняем изменения и выходим. Отправляем роутер в reboot, после загрузки останавливаем TPWS принудительно руками и снова запускаем руками. Поделитесь, что получилось в итоге.
Спасибо Вам за положительную оценку! Не могу объяснить на уровне железа, но по какой-то причине связка "Keenetic серии KN + Synology DS923+ NAS" отказывалась поднимать любой сервис обхода, пока хотя бы один сервер из пары FTP-SFTP был неактивен. С момента подъема обоих вариантов сервера проблем не было ни по TPWS, ни по NFQWS. Курьез... но решился именно так.
Приветствую Вас! Очень рассчитываю на то, что вот этот вариант подробной инструкции, который обощает различные методы установки обхода блокировок, поможет Вам в решении насущных вопросов. Тут как раз есть детализация по установке NFQWS с учетом моего положительного опыта, а так же наиболее актуальная методика по установке TPWS:
https://drive.proton.me/urls/H4X0HPQFT8#gt5mCGHQcTeL
https://www.fileconvoy.com/dfl.php?id=gbf8f8b0dfc5a3e4e10005600288a6c2eb35b562594
Здравствуйте, Михаил! Ваш случай сподвиг меня на изучение метода обхода блокировки через NFQWS, который позволяет вернуть YouTube на телевизоры и ТВ-боксы. Я его опробовал, все работает на Keenetic серии KN. С учетом моего опыта установки была сформирована единая инструкция по ряду методов обхода блокировок. В новую версию инструкции вошла "матрица аналогий" между папками Entware и OpenWrt. Вот ссылки на новую версию:
https://www.fileconvoy.com/dfl.php?id=gbf8f8b0dfc5a3e4e10005600288a6c2eb35b562594
https://drive.proton.me/urls/H4X0HPQFT8#gt5mCGHQcTeL
Что касается постоянной ошибки 'syntax error, unexpected iif' - давайте проверим, а работает ли nftables вообще, как должен. В консоли запустите:
nft --version
и поделитесь результатом.
Но, вполне вероятно, есть смысл сразу сделать вот так:
opkg remove nftables
opkg purge nftables
opkg update
opkg upgrade
opkg install nftables
opkg install kmod-nft-core
opkg install kmod-nft-compat
opkg install kmod-nft-nat
opkg install kmod-nft-ipv4 kmod-nft-ipv6
opkg install libnftnl11
opkg install kmod-nf-conntrack
opkg install kmod-nft-fib
opkg install kmod-nft-offload
opkg install luci-app-nft-qos
после установки пакетов:
/etc/init.d/nftables enable
/etc/init.d/nftables start
проверка корректности работы nftables:
nft list ruleset
Если вывод будет содержать какие-либо правила для nftables, то сервис работает.
Уважаемый nkha, большое спасибо Вам за Ваш труд! Рассчитываю на то, что Вы и Ваши читатели поддержите инициативу по распространению единой инструкции по обходу DPI различными методами. Настоящий материал Вашего авторства взят за основу в той части единой инструкции, которая касается zapret-TPWS. Я, как и многие неопытные пользователи, не сразу разобрался в вопросах установки и в той массе сотен вопросов и ответов на Хабре, которая обычно следует за публикацией подобных проектов. Чтобы облегчить установку средств обхода DPI для неискушенных пользователей, и была создана детальная инструкция по различным методам. Сама инструкция в наиболее актуальной версии доступна по ссылке:
https://drive.proton.me/urls/H4X0HPQFT8#gt5mCGHQcTeL
и
зеркало здесь (должно работать до 10.09.2024):
https://www.fileconvoy.com/dfl.php?id=gbf8f8b0dfc5a3e4e10005600288a6c2eb35b562594
Уважаемый Keenet, большое спасибо Вам за Ваш труд! Рассчитываю на то, что Вы и Ваши читатели поддержите инициативу по распространению единой инструкции по обходу DPI различными методами. Настоящий материал Вашего авторства взят за основу в той части единой инструкции, которая касается zapret-NFQWS. Я, как и многие неопытные пользователи, не сразу разобрался в вопросах установки и в той массе сотен вопросов и ответов на Хабре, которая обычно следует за публикацией подобных проектов. Чтобы облегчить установку средств обхода DPI для неискушенных пользователей, и была создана детальная инструкция по различным методам. Сама инструкция в наиболее актуальной версии доступна по ссылке:
https://drive.proton.me/urls/H4X0HPQFT8#gt5mCGHQcTeL
и
зеркало здесь (должно работать до 10.09.2024):
https://www.fileconvoy.com/dfl.php?id=gbf8f8b0dfc5a3e4e10005600288a6c2eb35b562594