github RixyPow/netzapret v0.4.4
NetZapret 0.4.4

latest releases: v1.4.0, v1.3.1, v1.3.0...
2 months ago

ChatGPT: перекрытое правило уводило живой пин в туннель

Главное исправление выпуска, и найдено оно по одной подсказке: сайт
открывался при остановленной программе и умирал сразу, как её запустить.

Прибитый в hosts адрес заводится в туннель принудительно — иначе правило
«через VPN» для такого имени не сработало бы. Но выбирался этот адрес
перебором всех правил со словом proxy подряд, без вопроса, какое
из них движок вообще выберет. Правила читаются сверху вниз, решает первое;
поставляемое «*.chatgpt.com → VPN» лежало под пользовательским
«напрямую» и не действовало — а адрес в туннель уводило именно оно.

Снаружи это было не разглядеть: настройки читались как правильные.

Теперь действующий режим вычисляется так же, как его вычисляет движок —
первое правило, покрывающее имя, по зоне, — и только выигравшее правило
заводит адрес в туннель. На затронутой машине принудительный список
сократился с 698 адресов до 691, и пин ChatGPT освободился.

Пин стал полноценным маршрутом

Четвёртый способ направить сервис, рядом с «напрямую», десинком и VPN:

  1. Напрямую
  2. Десинк
  3. VPN
  4. Закрепить пин в hosts
  5. Убрать свой выбор — вернуть как было

Закрепление убирает ваши прежние правила, которые перекрыли бы новое,
и говорит, какие убрало. Без этого пин вставал, а маршрут к нему нет:
правило дописывалось в конец и попадало под ранее заданные.

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

Свой каталог адресов

config/catalog.yaml — то, чего нет у Zapret: имена, которые ломаются
не блокировкой канала, а ответом. Правится руками, две формы записи:

  - name: TMDB — картинки
    names: [image.tmdb.org]
    resolve: honest          # адрес спросить у DoH при закреплении

  - name: Telegram
    names: [t.me, telegram.org]
    addresses: [149.154.167.220]

Засеян TMDB, Roblox, Valheim и Telegram — каждая запись с причиной, зачем
она там. Ошибка в файле не роняет запуск, а печатается строкой.

Второй способ делать то же самое убран

Пункт «DNS → Каталог Zapret» применял те же адреса через наш резолвер.
Он был хуже пина и вдобавок молча не работал: сервисы вида dns берут
адрес из набора, меню выбрать набор не требовало, и без него запрос
к базе не выполнялся вовсе — семь отмеченных сервисов давали ноль
подстановок, выглядя настроенными.

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

Файл hosts

  • «Прибрать» — забирает все записи в наш блок и убирает повторы.
    В живом файле оказалось 839 записей на 796 имён. Все адреса имени
    сохраняются: у instagram.com их три, включая IPv6, у openai.com
    четыре, и Windows перебирает их по очереди.
  • Выключенные строки забираются тоже и остаются выключенными.
    Гасит их обычно сама программа, когда адрес не отвечает.
  • Открыть файл — для адреса, которого нет ни в одном наборе.
  • Чужие строки не трогаются никогда. О тех, что спорят с нашими,
    сообщается, а не удаляется.

Мелкое

  • Вместо шестнадцати одинаковых строк при запуске — одна. Имена
    дедуплицированы: одно имя обычно покрыто и своим правилом,
    и поставляемым, и печаталось дважды.
  • Полученное тело считается законченным ответом. Сервер, отдавший всё
    обещанное и не закрывший соединение, объявлялся оборванным потоком.
  • config/addresses.yaml поставляется пустым: адреса сетей доставки
    живут днями, и число в релизе устаревает раньше, чем его скачают.

Don't miss a new netzapret release

NewReleases is sending notifications on new releases.