github RixyPow/netzapret v0.7.0
NetZapret 0.7.0

latest releases: v1.1.1, v1.1.0, v1.0.0...
one month ago

Что нового

Новое:

Книга маршрутов. Маршруты теперь можно вывести в отдельный переносимый файл и загрузить обратно. Формат намеренно простой: имя: маршрут по строке и отдельные группы для списков доменов. Ключи пишутся латиницей, но при чтении понимаются и русские названия — файл предназначен не только для окна, но и для ручного редактирования.

Книга не хранит адреса, пины и рецепты десинка как будто это одно и то же. Пин — отдельная рекомендация для hosts, адресное правило остаётся адресным, а рецепт имеет смысл только там, где имя действительно проходит через десинк.

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

При загрузке книга сначала показывает, что именно изменится. Уже существующие адресные правила не трогаются, пины сами не устанавливаются: строка pin говорит, что адрес рекомендуется прибить, а не даёт программе право менять системный файл без отдельного действия.

Противоречия маршрутов. Книга теперь умеет сказать не просто «конфликт», а что именно произойдёт с именем. Пин спорит с тем, что требует видеть имя; отдельное правило может законно переопределять группу; совместимые различия конфликтом не считаются.

Это важно не только для самого файла. Раньше можно было одновременно увидеть «десинк работает» и иметь пин, который вообще выводит имя из-под десинка. Теперь такие случаи называются до применения настройки.

Два выключателя вместо списка режимов. Вместо одного выбора из пяти режимов появились независимые настройки для десинка и туннеля. Охват туннеля и исключения задаются отдельно там, где они действительно имеют смысл.

Старые режимы не выброшены из логики перехода: существующая настройка читается и даёт то же поведение, что и раньше. Новые поля сначала остаются пустыми, поэтому простое обновление не меняет настройку человека само по себе.

«Отечественные сайты — тоже через туннель». Прежний режим «без исключений» снимал все прямые правила сразу. Теперь это отдельная настройка: она убирает именно список российских сетей, оставляя остальные прямые исключения — например, те, которые пользователь сам оставил для ChatGPT, GitHub, Twitch или Spotify.

Туннель действительно забирает весь трафик. В режиме без десинка выборочный route_address больше не ограничивает TUN списком fakeip и отдельных подсетей. Если десинка выключен, защищать WinDivert нечего и туннель получает весь трафик.

При работающем десинке прежний узкий охват сохраняется: это необходимо, чтобы WinDivert продолжал видеть исходные соединения приложений, а не уже переоткрытые туннелем потоки.

Автозапуск теперь говорит, что именно поднимется. Отдельного второго выбора режима в автозапуске нет: при входе используются те же выключатели, что и в окне. Поэтому карточка прямо показывает: например, «При входе в систему поднимется: десинк и VPN по маршрутам».

Иначе получились бы два места, которые независимо решают одно и то же, — окно показывало бы одно состояние, а после входа запускалось другое.

Исправления:

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

Теперь запуск читает сами выключатели. Та же проверка используется при автозапуске, поэтому состояние в окне и реально поднятые движки не расходятся.

«Только туннель» теперь действительно означает весь трафик. Раньше этот режим фактически отключал winws2, но оставлял туннелю только небольшой набор адресов. YouTube и другие соединения с настоящими адресами Google уходили напрямую, хотя в интерфейсе казалось, что включён туннель.

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

Пины больше не перемешаны с маршрутами. В файле маршрутов они вынесены в конец отдельной группой с пояснением. Сто двенадцать пинов и десятки маршрутов раньше выглядели одним большим списком, хотя означали разные вещи.

Само значение pin не изменилось — изменилось только расположение, чтобы структура файла была видна без знания его внутреннего формата.

Настройка исключений РФ дошла до реального конфига. При первом варианте переключатель менял только модель, а сборщик конфигурации продолжал получать старое значение. Теперь настройка проходит весь путь до RuleSetExpander и действительно убирает нужный список из итогового конфига.

Переход со старых режимов сохраняет настройки. В том числе исправлен случай с прежним «без исключений»: пустое значение нового поля теперь означает «настройку ещё не трогали», а не «выключить её».

Обычный режим без подписки больше не блокирует десинк. Если VPN не задан, выборочный режим может работать как «только десинк». Сам туннель при этом не обещается и не подменяется чем-то другим.

WARP также учитывается как выход для этого случая: включённый WARP может быть единственным доступным туннелем и не должен отбрасываться только из-за отсутствия обычной подписки.

Автозапуск не поднимает движок, который выключен. Условие запуска больше не пытается угадать состояние по названию старого режима. Оно использует те же настройки, что и ручной запуск.

Конфигурация маршрутов проверяется на обратимость. Перенос теперь тестируется не по количеству строк, а по результату: из книги снова собираются исходные правила и сравниваются с ними. Это позволяет поймать потерю или изменение правила до того, как такой файл попадёт пользователю.

Проверки

В выпуске заметно выросло количество проверок вокруг двух наиболее рискованных мест — переноса существующих маршрутов и новых режимов.

Книга маршрутов проверяется чтением, записью и обратной сборкой правил; отдельно проверяются группы, пины, адресные правила и противоречия.

Для режимов проверяются все сочетания состояния десинка и туннеля, переход со старого формата, отключённый десинк, отсутствие подписки и итоговый конфиг.

Последние правки также закрепляют реальное поведение TUN: при широком охвате ограничивающий route_address не должен появляться в собранном конфиге.

Чем это собрано и как сверить

Пока для 0.7.0 не опубликован финальный архив и не зафиксированы его хеши, этот раздел лучше заполнить при самом выпуске.

NetZapret.zip   <SHA256>
NetZapret.exe   <SHA256>

Проверить скачанное:

Get-FileHash NetZapret.zip -Algorithm SHA256

Собрать самому и сравнить:

git checkout v0.7.0
pack.cmd

Совпасть должен NetZapret.exe. Архив — нет: в нём лежат winws2 и sing-box, собранные не нами, и их версии у вас могут отличаться.

Чем это собрано и как сверить

NetZapret.zip   C12A80CE57F6B7B07DE7D18D76C2E51C121363E80522696CA5192FDE3D8439A6
NetZapret.exe   FCF081626B42797B7049AF0BBAA2FB5DE62A682BE1B8CBACC1AD1A9299FB3C7E

Пакет SDK .NET 8.0.424, сборка Release, win-x64, self-contained, один файл.

Проверить скачанное:

Get-FileHash NetZapret.zip -Algorithm SHA256

Собрать самому и сравнить:

git checkout v0.7.0
pack.cmd

Совпасть должен NetZapret.exe. Архив — нет: в нём лежат winws2 и sing-box,
собранные не нами, и их версии у вас могут отличаться.

Don't miss a new netzapret release

NewReleases is sending notifications on new releases.