mirror of
https://github.com/bol-van/zapret.git
synced 2026-01-27 04:40:32 +03:00
Fix some mistakes
This commit is contained in:
@@ -88,7 +88,7 @@ PF. Если в фаерволе есть правило divert, но на diver
|
||||
отдельно для ipv4 и ipv6 и работают только с одной версией `ip` каждый. На
|
||||
**MacOS** похоже, что divert сокеты из ядра вырезаны. См подробнее раздел про
|
||||
**MacOS**. Отсылка в divert сокет работает аналогично отсылке через raw socket
|
||||
на linux. Передается полностью IP фрейм, начиная с ip загловка. Эти особенности
|
||||
на linux. Передается полностью IP фрейм, начиная с ip заголовка. Эти особенности
|
||||
учитываются в `dvtws`.
|
||||
|
||||
### Lookup Tables
|
||||
|
||||
@@ -35,7 +35,7 @@ Swap позволяет немного сгладить проблему, но
|
||||
Например, есть 1 большой set на 100000 элементов и 1 маленький на 2 элемента.
|
||||
Чтобы просто пролистать мелкий set или добавить туда еще что-то nft будет мусолить несколько секунд.
|
||||
Что он делает за это время ? Тащит из ядра огромный блоб, в котором все в куче, и разбирает его, чтобы выделить искомую мелочь ?
|
||||
В какой-то мере удается это сгладить, обьединяя несколько команд в единый скрипт.
|
||||
В какой-то мере удается это сгладить, объединяя несколько команд в единый скрипт.
|
||||
|
||||
Боль N3
|
||||
|
||||
@@ -100,7 +100,7 @@ zapret может работать в другой таблице и не тро
|
||||
Плюс N5
|
||||
|
||||
Пишут, что nftables работают быстрее. Но это не точно и зависит от много чего.
|
||||
В целом - чем меньше правил, тем выше скорость. Но в nftables правил можно писать меньше, значит скрость тоже может быть выше.
|
||||
В целом - чем меньше правил, тем выше скорость. Но в nftables правил можно писать меньше, значит скорость тоже может быть выше.
|
||||
У разработчиков есть идея перевести backend nftables на BPF, а это наверняка будет существенно быстрее.
|
||||
|
||||
|
||||
|
||||
@@ -193,9 +193,9 @@
|
||||
> профилях автоматически отражаются во всех остальных.
|
||||
>
|
||||
> Если стратегии отличаются по версии ip протокола, и вы не можете их
|
||||
> обьединить, фильтр пишется так:
|
||||
> объединить, фильтр пишется так:
|
||||
> ```sh
|
||||
> "--filter-l3=ipv4 --filter-udp=443 lпараметры для quic ipv4' <HOSTLIST_NOAUTO> --new
|
||||
> "--filter-l3=ipv4 --filter-udp=443 'параметры для quic ipv4' <HOSTLIST_NOAUTO> --new
|
||||
> --filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' <HOSTLIST> --new
|
||||
> --filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' <HOSTLIST> --new
|
||||
> --filter-l3=ipv6 --filter-udp=443 'параметры для quic ipv6' <HOSTLIST_NOAUTO> --new
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
> Если кратко по мультистратегии, то обычно параметры конструируются так :
|
||||
> ```
|
||||
> --filter-udp=443 'параметры для quic' --new
|
||||
> --filter-tcp=80,443 'обьединенные параметры для http и https'
|
||||
> --filter-tcp=80,443 'объединенные параметры для http и https'
|
||||
> ```
|
||||
>
|
||||
> Или так :
|
||||
@@ -127,7 +127,7 @@
|
||||
> --filter-tcp=443 'параметры для https'
|
||||
> ```
|
||||
>
|
||||
> Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
|
||||
> Если стратегии отличаются по версии ip протокола, и вы не можете их объединить, фильтр пишется так :
|
||||
> ```
|
||||
> --filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" --new
|
||||
> --filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' --new
|
||||
@@ -199,7 +199,7 @@
|
||||
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
|
||||
|
||||
> [!CAUTION]
|
||||
> Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
||||
> Это минимальная инструкция, чтобы сориентироваться с чего начать. Однако, это - не панацея.
|
||||
> В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||||
|
||||
Подробности и полное техническое описание расписаны в [readme.md](./readme.md)
|
||||
|
||||
@@ -153,7 +153,7 @@ DPI. Все больше становится внереестровых бло
|
||||
* Если блокировка осуществляется по IP.
|
||||
* Если соединение проходит через фильтр, способный реконструировать TCP соединение, и который следует всем стандартам.
|
||||
Например, нас заворачивают на squid. Соединение идет через полноценный стек tcpip операционной системы.
|
||||
Проект нацелен на обман DPI, который всилу ограниченности ресурсов и большого трафика вынужден интерпретировать его лишь ограниченно.
|
||||
Проект нацелен на обман DPI, который в силу ограниченности ресурсов и большого трафика вынужден интерпретировать его лишь ограниченно.
|
||||
Обмануть полноценный стек ОС и полноценные серверные приложения не получится.
|
||||
|
||||
## nfqws
|
||||
@@ -176,7 +176,7 @@ dvtws, собираемый из тех же исходников (см. [док
|
||||
--bind-fix4 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv4 пакетов
|
||||
--bind-fix6 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv6 пакетов
|
||||
--ctrack-timeouts=S:E:F[:U] ; таймауты внутреннего conntrack в состояниях SYN, ESTABLISHED, FIN, таймаут udp. по умолчанию 60:300:60:60
|
||||
--ctrack-disable=[0|1] ; 1 или остутствие аргумента отключает conntrack
|
||||
--ctrack-disable=[0|1] ; 1 или отсутствие аргумента отключает conntrack
|
||||
--ipcache-lifetime=<int> ; время жизни записей кэша IP в секундах. 0 - без ограничений.
|
||||
--ipcache-hostname=[0|1] ; 1 или отсутствие аргумента включают кэширование имен хостов для применения в стратегиях нулевой фазы
|
||||
--wsize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в SYN,ACK. если не задан scale_factor, то он не меняется (устарело !)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Данный мануал пишется не как копипастная инструкция, а как помощь уже соображающему.
|
||||
Если вы не знаете основ сетей, linux, openwrt, а пытаетесь что-то скопипастить отсюда без малейшего
|
||||
понимания смысла, то маловероятно, что у вас что-то заработает. Не тратье свое время напрасно.
|
||||
понимания смысла, то маловероятно, что у вас что-то заработает. Не тратьте свое время напрасно.
|
||||
Цель - донести принципы как это настраивается вообще, а не указать какую буковку где вписать.
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ nfset является частью таблицы nftable и принадлеж
|
||||
Чтобы использовать эти nfset-ы в своих правилах, необходимо синхронизироваться с их созданием и вносить свои цепочки в nftable "zapret".
|
||||
Для этого существуют хуки - скрипты, вызываемые из zapret на определенных стадиях инициализации фаервола.
|
||||
|
||||
Раскоментируейте в /opt/zapret/config строчку
|
||||
Раскомментируйте в /opt/zapret/config строчку
|
||||
INIT_FW_POST_UP_HOOK="/etc/firewall.zapret.hook.post_up"
|
||||
|
||||
Создайте файл /etc/firewall.zapret.hook.post_up и присвойте ему chmod 755.
|
||||
|
||||
@@ -97,7 +97,7 @@ autottl и autohostlist. При включении autohostlist так же пе
|
||||
Фильтрация windivert производится в ядре. Это несравнимо легче по ресурсам, чем перенаправлять пакеты в пространство user mode,
|
||||
чтобы winws принимал решение. Поэтому пользуйтесь по максимуму возможностями windivert.
|
||||
Например, если вам нужно дурить wireguard на все порты, вам придется перенаправить все порты на winws. Или же написать windivert фильтр, который отсечет wireguard по содержимому пакета.
|
||||
Разница в нагрузке на процессор колоссальна. В первом случае - до 100% одного ядра cpu в зависимости от обьема исходящего udp трафика (привет, торрент и uTP), во втором - близко к 0.
|
||||
Разница в нагрузке на процессор колоссальна. В первом случае - до 100% одного ядра cpu в зависимости от объема исходящего udp трафика (привет, торрент и uTP), во втором - близко к 0.
|
||||
Кроме нагрузки на процессор еще можете порезать себе скорость, тк одно ядро не будет справляться с обработкой вашего гигабитного интернета. А на старых ноутах еще и получите самолетный вой системы охлаждения, приводящий к ее износу.
|
||||
|
||||
Можно запускать несколько процессов **winws** с разными стратегиями. Однако, не следует делать пересекающиеся фильтры.
|
||||
@@ -120,14 +120,14 @@ winws включается. Это нужно, чтобы можно было п
|
||||
NLM абстрагирует типы сетевых адаптеров. Он работает как с wifi, так и с ethernet и любыми другими.
|
||||
Поэтому это более универсальный метод, чем **SSID** фильтр.
|
||||
Однако, есть и неприятная сторона. В windows 7 вы легко могли ткнуть на иконку сети и выбрать тип : private или public.
|
||||
Там же вы могли посмотреть список сетей и обьединить их. Чтобы, допустим, вы могли подключаться по кабелю и wifi
|
||||
Там же вы могли посмотреть список сетей и объединить их. Чтобы, допустим, вы могли подключаться по кабелю и wifi
|
||||
к одному роутеру, и система эти подключения воспринимала как одну сеть.
|
||||
В следующих версиях windows они эти возможности сильно порезали. Похоже нет встроенных средств полноценно управлять
|
||||
network locations в win10/11. Кое-что есть в **powershell**.
|
||||
Можно поковыряться напрямую в реестре здесь :
|
||||
`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList`
|
||||
Нужно менять ProfileGUID в `Signatures\Unmanaged`. Имена можно поменять в Profiles.
|
||||
Есть кое-какие сторонние утилиты. Кое-что находится, позволяющее посмотреть и удалить network profiles, но не обьединить.
|
||||
Есть кое-какие сторонние утилиты. Кое-что находится, позволяющее посмотреть и удалить network profiles, но не объединить.
|
||||
Факт, что в ms они это сильно испортили. Движок network list все тот же, и он способен на все то, что было в win7.
|
||||
Можно не бороться с этой проблемой, а просто указывать через запятую те названия сетей или GUIDы, которые выбрала система.
|
||||
Или если у вас только wifi, то использовать `--ssid-filter`. Там хотя бы есть гарантия, что **SSID** соответствуют реальности,
|
||||
@@ -137,7 +137,7 @@ network locations в win10/11. Кое-что есть в **powershell**.
|
||||
Для русского языка это 866. Пути с пробелами нужно брать в кавычки.
|
||||
При использовании опции @<config_file> кодировка в файле должна быть **UTF-8** без **BOM mark**.
|
||||
|
||||
Существует неочевидный момент, каcаемый запуска **winws** из cygwin shell\`а. Если в директории, где находится winws, находится
|
||||
Существует неочевидный момент, касаемый запуска **winws** из cygwin shell\`а. Если в директории, где находится winws, находится
|
||||
копия `cygwin1.dll`, **winws** не запустится.
|
||||
Если нужен запуск под cygwin, то следует удалить или переместить `cygwin1.dll` из `binaries/windows-x86_64`. Это нужно для работы blockcheck.
|
||||
Из cygwin шелла можно посылать winws сигналы через `kill` точно так же, как в `*nix`.
|
||||
@@ -165,7 +165,7 @@ network locations в win10/11. Кое-что есть в **powershell**.
|
||||
Требования к подписи драйверов windows изменились в 2021 году.
|
||||
Официальные бесплатные обновления windows 7 закончились в 2020.
|
||||
После этого несколько лет продолжали идти платные обновления по программе **ESU**.
|
||||
Именно в этих **ESU** обновлениях находится обновление ядра windows 7, позволяющиее загрузить драйвер
|
||||
Именно в этих **ESU** обновлениях находится обновление ядра windows 7, позволяющее загрузить драйвер
|
||||
_windivert 2.2.2-A_, который идет в поставке zapret.
|
||||
Поэтому варианты следующие :
|
||||
|
||||
|
||||
@@ -104,11 +104,11 @@ Endpoint должен быть прописан хотя бы на одном п
|
||||
менять ip и быть за nat. Endpoint пира настраивается динамически после успешной фазы
|
||||
проверки ключа.
|
||||
|
||||
Включаем маршрутизцию :
|
||||
Включаем маршрутизацию :
|
||||
# echo net.ipv4.ip_forward = 1 >>/etc/sysctl.conf
|
||||
# sysctl -p
|
||||
|
||||
Интерфейс конфигурится стандартно для дебианоподобных систем :
|
||||
Интерфейс конфигурируется стандартно для дебианоподобных систем :
|
||||
|
||||
--/etc/network/interfaces.d/wgvps-------------
|
||||
auto wgvps
|
||||
@@ -203,7 +203,7 @@ config rule
|
||||
|
||||
Что тут было сделано :
|
||||
*) Настроен интерфейс wireguard. Указан собственный приватный ключ.
|
||||
*) Настроен пир-партнер с указанием его публичнго ключа и endpoint (ip:port нашего сервера)
|
||||
*) Настроен пир-партнер с указанием его публичного ключа и endpoint (ip:port нашего сервера)
|
||||
такая настройка заставит периодически долбиться на сервер по указанному ip
|
||||
route_allowed_ip '0' запрещает автоматическое создание маршрута
|
||||
allowed_ips '0.0.0.0/0' разрешает пакеты с любым адресом источника.
|
||||
@@ -275,7 +275,7 @@ for ext_iface in $wan_iface; do
|
||||
ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800
|
||||
done
|
||||
|
||||
network_get_device DEVICE lan
|
||||
network_get_device DEVICE lan
|
||||
ipt PREROUTING -t mangle -i $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800
|
||||
ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800
|
||||
------------------------------------------------
|
||||
@@ -429,8 +429,8 @@ for ext_iface in $wan_iface; do
|
||||
ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800
|
||||
ipt OUTPUT -t mangle -o $DEVICE -j MARK --set-mark 0x1000/0x1000
|
||||
done
|
||||
|
||||
network_get_device DEVICE lan
|
||||
|
||||
network_get_device DEVICE lan
|
||||
ipt PREROUTING -t mangle -i $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800
|
||||
ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -m set ! --match-set nozapret dst -j MARK --set-mark 0x800/0x800
|
||||
|
||||
|
||||
Reference in New Issue
Block a user