Бесплатный WARP от Cloudflare
В разделе «VPN» появился выключатель «Бесплатный WARP». Ни почты, ни оплаты,
ни ключей: движок в поставке несёт готовый клиент Cloudflare, регистрируется
сам и сам хранит запись в своём кэше.
Включённый, он добавляется к серверам действующей подписки, а не заменяет
её. Пока те живы, автоподбор берёт их — они быстрее; когда лягут, останется он.
Ради этого всё и затевалось: сейчас в таком случае не остаётся ничего.
Выключателем, а не строкой в списке подписок, — и это исправление на ходу.
Строкой он был вреден: конфиг движка собирается по одной ссылке, и выбор его
выхода делал действующим его, отключая рабочую подписку целиком. Запасной
выход занимал место основного вместо того, чтобы его страховать.
Что нужно, чтобы он поднялся
Открытый api.cloudflareclient.com. Движок ходит туда сам, и направить этот
запрос нечем: ни detour у выхода, ни route.default_http_client на него
не влияют — с заведомо мёртвым прокси приходит та же ошибка через те же
десять секунд, что и без него.
У российских операторов домен закрыт по имени в TLS. Лечится тем же, чем
и всё остальное в этой программе, — рецептом десинка: «Маршруты» → домен →
«десинк» → выбрать рецепт. На живой сети его открыл multidisorder.
Чего от него ждать
Выпускает трафик в ближайшей стране — на российском подключении это
Москва. От блокировок оператора спасает, от отказов по стране нет: адрес
остаётся отечественным.
Под нагрузкой неровен. Один QUIC-канал несёт все соединения разом,
и контроль перегрузки у них общий: стоит одному потоку упереться — тормозят
все. Замер: поодиночке 94–188 мс, пять запросов разом — 281, 296, 305, 932
и 4648 мс. Как запасной выход годится, как основной — нет.
Поэтому закреплять его не нужно. Для проверки есть кнопка «попробовать
сейчас»: она переключает выход в работающем движке и возвращает прежний,
что бы ни случилось. Без перезапуска и без правки настроек — закрепление
применяется только при следующем запуске движков, то есть «попробовать»
стоило бы двух обрывов связи.
Выход по WireGuard убран
Он здесь был и не мог работать. Cloudflare кладёт идентификатор записи
в поле reserved каждого пакета, а sing-box 1.14 убрал это поле из настройки
пира вовсе — в структуре остались адрес, порт, ключи, allowed_ips
и keepalive. Замер: рукопожатие проходит, данные не возвращаются ни на 2408,
ни на 500, 4500, 1701 и 908.
В списке он держался вечным «не отвечает», а закреплённый по ошибке обрывал
сеть целиком. Вместе с ним ушла и вся обвязка: заведение ключей, регистрация
в Cloudflare, разрезанное приветствие TLS для обхода закрытого домена
и файл config/warp.json, где хранилась запись. MASQUE ничего из этого
не требует.
Наблюдение
Новый раздел. Показывает соединения по мере появления и правило, которое
к каждому применилось бы: время, куда пошло, чей процесс, какое назначение,
какое правило сработало. Ничего не перенаправляет и ни на что не влияет.
Отвечает на вопрос, на который не отвечало ничто: «почему это пошло не туда».
Маршруты показывают, как правила записаны, проверка блокировок — что закрыто
снаружи, а здесь видно, какое правило досталось настоящему соединению
настоящей программы. Расхождение между первым и третьим и есть та ошибка,
которую иначе ищут наугад.
Это была последняя команда консоли без пары в окне.
Свой рецепт десинка для своего имени
В «Маршрутах» выбор «десинк» означал только «мимо туннеля»: чем чинить имя,
решал пресет, и не попавшему ни в один его список не делалось ничего.
Снаружи это неотличимо от неработающего десинка.
Теперь при выборе «десинк» открывается окно с рецептами — взятыми из вашего же
пресета, там они подобраны под живые блокировки. Окно умеет перебрать их
и сказать, с каким имя открывается: поднимает winws2 с одним профилем
и пробует. Требует остановленных движков — работающий правил бы те же пакеты
вторым слоем, а туннель открыл бы имя любым рецептом, включая пустой.
Выбранное уходит в свой профиль winws2 перед пресетовскими: движок отдаёт
пакет первому профилю, чей фильтр совпал, и дальше не смотрит.
Источник движка назван
В docs/THIRD-PARTY.md вписана ссылка на репозиторий сборки, которую мы везём.
Раньше там стоял только исходный проект, а сборка чужая и изменённая — GPL
требует называть источник именно её.
Чем это собрано и как сверить
NetZapret.zip F92E5A393C87383D682C99AA4DA13E4FA1C20CDCEA511B67F09B2E61F4CF4B9A
NetZapret.exe CF1E74C2EEB5860EB2A92EF6E65477F48A66F8CCD97D7C83F09E05049B6840CF
Пакет SDK .NET 8.0.424, сборка Release, win-x64, self-contained, один файл.
Проверить скачанное:
Get-FileHash NetZapret.zip -Algorithm SHA256
Собрать самому и сравнить:
git checkout v0.5.4
pack.cmd
Совпасть должен NetZapret.exe. Архив — нет: в нём лежат winws2 и sing-box,
собранные не нами, и их версии у вас могут отличаться.