What's new #1716
Replies: 23 comments
|
Регулярно возникает такой вопрос.
Для nftables основная схема процессинга nfqws - POSTNAT. nfqws не видит исходных адресов локальной сети, потому даже если вписать дополнительные условия в правила, это не сработает, если надо отсеивать отдельные клиенты в локалке. Пример команд для nftables : Здесь дурится
Осталось это куда-нибудь красиво поместить. На openwrt лучше всего использовать файлы в /etc/nftables.d . В этой директории пишутся файлы, содержащие не команды nft, а файлы описания цепочек внутри таблицы fw4 Перепись того же самого в файл /etc/nftables/99-my.nft А если надо только wifi ? Тут вам придется переиграть стандартную lan/wan схему в openwrt. Есть и другой способ решить поставленную задачу. См custom script |
|
Добавлен новый фулинг ts. ts прибавляет к значению TSval таймштампа tcp значение ts increment (по умолчанию -600000). Сервера отбрасывают пакеты с TSval в определенных пределах. По практическим тестам инкремент должен быть где-то от -100 до -0x80000000. timestamps генерирует клиентская ОС. В linux таймштампы включены по умолчанию, в windows выключены по умолчанию. Можно включить через команду netsh interface tcp set global timestamps=enabled. ts fooling требует, чтобы таймштампы были включены, иначе работать не будет. Включать надо на каждом клиентском устройстве. TSecr оставляется без изменений. Так же требуется, чтобы сервер понимал timestamps, но это в большинстве случаев так. Вроде неплохой фулинг. Со всеми ОС работает, где есть timestamps. |
|
Делаю поддержку более корректной работы с хостами типа “vk.com:8000” , “1.1.1.1”, “[fda6:1800::5]:8000” Такие хосты приходят в хедере Host: в http. В TLS в случае запроса по IP обычно не вставляется SNI extension. Порт так же не вставляется, если запрос идет по домену на нестандартный порт |
|
В связи с попытками давить на голосовой трафик воцап/телеги добавил custom script 50-stun4all. |
|
Возрождаем кастом для дискорда. Если кратко : останавливаем zapret, убираем из Почти все меняют стратегию в скрипте. Это просто и понятно. |
|
В Пример инстанса для пробития медиапотоков в discord : В zapret-win-bundle из preset_russia убран discord. Теперь он + stun на все порты идут в Для wireguard готовый батник Вопрос "можно ли было сделать одним инстансом" ? Легко. Запишите через |
|
Сразу же возникли умельцы - комбинаторы параметров. |
|
В ядре linux 6.17 появилась опция. https://cateee.net/lkddb/web-lkddb/NETFILTER_XTABLES_LEGACY.html Во многих дистрибутивах она может быть not set. Решение - использовать nftables или хотя бы iptables-nft. |
|
Некоторые ругаются на то, что пустые хостлисты равнозначны их отсутствию. Какой у этого юз кейз ? Конечно, в процессе разработки были и неоднозначные решения, которые вроде хотелось бы и переделать, но это сломает уже устоявшуюся схему и конфиги. Конкретно по этому случаю. Хостлисты - автоматически перечитываемые по изменению файлы. Скрипты запуска предполагают наличие /opt/zapret/ipset/{zapret-hosts-user.txt,zapret-hosts-user-exclude.txt}. Как сделать так, чтобы можно было не удаляя файлы переключаться между режимами черного и белого списков ? Сейчас этот вопрос решается именно этой “багофичей”. Если вам нужны только исключения, вы оставляете zapret-hosts-user.txt пустым, что равнозначно его НЕуказанию в командной строке nfqws/tpws. Но если вы не перезапуская инстанс туда что-то внесете или оттуда вынесити , изменения подхватятся автоматом, режим белого/черного списка переключится при переключении между состояниями “zapret-hosts-user.txt пуст” и “zapret-hosts-user.txt не пуст”. Если файл удалять, то кто потом знает какое имя правильное и где он должен быть ? Или придется городить еще настройки в конфиге типа учитывать один файл, не учитывать другой. Изменение потребует перезапуска инстанса. Другой момент состоит в том, что nfqws/tpws при запуске требуют наличие всех указанных листов. Они не умеют подразумевать и ожидать появление файла, если вдруг его захотят создать. Скрипты добавляют в командную строку только листы, файлы которых есть. Если потом файл добавят, то nfqws/tpws о нем ничего не знают. Потребуется перезапуск инстанса. Если файл удалят в процессе, то список в памяти останется, он не очистится автоматом. nfqws/tpws будут пытаться проверять наличие файла, и при его появлении вновь его перечитают. Если даже сделать функцию ожидания файла, то это чревато разными очепятками. Параметр принимается, в имени файла пропущена буква, создают файл, ничего не работает. Сейчас же идет сразу отлуп. Как по критерию наличия файла, так и по правам доступа. Считаю, что сразу тыкать носом в ошибки - это лучшая стратегия, чем куча криво настроенных чайниками инстансов, которые волшебно-шамански работают, но по сути полны ерунды. Такая ерунда случалась, когда не было проверки на права доступа под сброшенными привилегиями сразу. У людей работало, но при попытке перечитать реально были ошибки, функция перечитки не работала. При апгрейде, когда была сделана проверка на права, у них “просто перестал работать zapret”. Догадались почему ? Это тычок носом, который они не поняли, в проблему, которая была и раньше, но теперь прога отказалась работать с этой проблемой. Напоминаю, что zapret состоит из ядра - демонов nfqws и tpws, и они НИЧЕГО не знают о файле config. Они работают только с командной строкой. Скрипты запуска суть обертка, чтобы выставить нужные ip/nf tables и поднять nfqws/tpws с нужными параметрами. Сделано так, как сделано. Если вы знаете этот момент и делаете для себя, вам не составит труда при опустошении списка добавить туда бредостроку, чтобы он оставался не пустым. Сборщикам тоже по умолчанию стоит это делать. Добавьте “строку_не_удалять” в файл, если он изначально ожидается пустым, но требует функционала включающего списка. Теперь отвечу почему в автохостлисте "сделана затычка", которая автоматически делает его непустым. |
|
Оказалось, что userspace прога nft поддерживает негласно Замена nft на 1.1.1 на openwrt 22 не помогает. Возвращается ошибка “not supported”, которая, очевидно, лезет с ядра. Если же запустить nft 1.0.2 на новом ядре, Минимальная версия LTS убунты, на которой все сразу из коробки работает, 22.04 LTS На 20.04 можно поискать в репах обновы ядра, а nft собрать с исходников. Или откатиться на iptables Владельцам openwrt 22 рекомендуется апгрейд |
|
Не касается zapret, но все же может быть полезным. И получается что-то вроде амнезии-wg-лайт чисто на nftables без софта. |
|
К следующей версии расширяются возможности встроенного конструктора windivert фильтров.
Зачем это надо ? Чтобы вы не запутались в полных фильтрах на 2-3 кб и чтобы не пришлось их потом сопровождать собственными силами. Чтобы не запускать несколько инстансов winws, когда можно легко обойтись одним. Пример Фильтрация windivert производится в ядре. Это несравнимо легче по ресурсам, чем перенаправлять пакеты в пространство user mode, чтобы winws принимал решение. Поэтому пользуйтесь по максимуму возможностями windivert. |
|
Новая вариация fakedsplit - hostfakesplit.
В результате испытаний выяснено, что на большинстве доменов без специальных правил блокировки, при отсутствии разреза midhost , позволяет побороть защиту от TTL и md5sig, а так же открыть TLS1.2 без отдельного фейка. Дебаг логи применений : |
|
Небольшое дополнение к предыдущему. Можно переопределить шаблон генерации с помощью |
|
Еще одно дополнение к hostfakesplit. оригинал до хоста, фейк хоста, оригинал после хоста, оригинал хоста (+опционально нарезка маркером midhost). |
|
Вариации fakedsplit с разным количеством фейков. некоторые фейки могут ломать обход. особенно РКНовцы не любят фейки, идущие первыми
Режим задается в параметре
Дополнительная фишка --dpi-desync-fake-tls=!+offset . |
|
Многие параметры, загружающие двоичные данные из файлов, поддерживают загрузку из hex-строки или из файла. hex строка начинается с “0x”. Имя файла можно писать как есть или использовать префикс “@”. Если перед префиксом “@” указано “+<число>”, то это означает смещение полезных данных внутри файла. Файл может загружаться целиком с нулевой позиции, к нему могут применяться модификации, требующие полного файла (TLS), но передача пойдет с позиции offset. offset должен быть меньше длины файла. Если к блоку данных применяется мод, который уменьшает размер данных, и offset окажется не меньше новой длины данных, будет ошибка. |
|
После некоторого перерыва добил, наконец, порядок ip_id во всех вариантах сплита.
Режимы altorder для
Режимы altorder для
Режимы altorder для
Итоговое число |
|
Как и обещал, preset_russia покинул win bundle. Что здесь примечательного. Мы одним инстансом дурим как обычный tcp веб, так и wireguard на любых портах, и stun на любых портах, и discord media на портах 50000..50099, и даже quic на любых портах. При этом произошел отказ от полного перехвата udp портов. А это значит не будет лишней нагрузки на проц. Для этого и был создан |
|
Небольшой ситуативный фикс для блокчека на тему 16 кб блоков.
Пример : Однако, в случае с 16 кб блоком обычно имеет место белый список по SNI и/или протоколам. Поэтому голый блокчек с такими опциями может вообще ничего не выдать. Все будет с ошибкой. Нужно подсовывать дополнительные опции (конкретные фейки, SNI, ...) через EXTRA параметры. Нововведение пока в исходниках. Для применения к релизу скопировать |
|
Первый ознакомительный релиз zapret2. |
|
MDIG cache был давно сломан в blockcheck1, проблема перешла и в blockcheck2 |
|
Прощаемся с zapret-info и rublacklist. Убираются скрипты ipset get_reestr_resolve.sh и get_reestr_hostlist.sh как работающие напрямую с z-i. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
В этом топике буду дублировать блог из топика "whats new" с ntc.party
Исходная ссылка https://ntc.party/t/zapret-whats-new/61
На момент написания ntc.party доступен только по ipv6.
Напомню, что даже если у вас нет native ipv6 от провайдера, есть множество способов его получить путем тунеллирования. Гуглите.
All reactions