`ipset/zapret-hosts-users-exclude.txt.gz` или `ipset/zapret-hosts-users-exclude.txt`
`ipset/zapret-hosts-users-exclude.txt.gz` или `ipset/zapret-hosts-users-exclude.txt`
При режимах фильтрации `MODE_FILTER=hostlist` или `MODE_FILTER=autohostlist` система запуска передает **nfqws** или **tpws** все листы, файлы которых присутствуют.
При режимах фильтрации `MODE_FILTER=hostlist` или `MODE_FILTER=autohostlist` система запуска передает `nfqws` или `tpws` все листы, файлы которых присутствуют.
Передача происходит через замену маркеров `<HOSTLIST>` и `<HOSTLIST_NOAUTO>` на реальные параметры `--hostlist`, `--hostlist-exclude`, `--hostlist-auto`.
Передача происходит через замену маркеров `<HOSTLIST>` и `<HOSTLIST_NOAUTO>` на реальные параметры `--hostlist`, `--hostlist-exclude`, `--hostlist-auto`.
Если вдруг листы include присутствуют, но все они пустые, то работа аналогична отсутствию include листа.
Если вдруг листы include присутствуют, но все они пустые, то работа аналогична отсутствию include листа.
Файл есть, но не смотря на это дурится все, кроме exclude.
Файл есть, но не смотря на это дурится все, кроме exclude.
@ -1319,21 +1320,21 @@ tpws и nfqws решают нужно ли применять дурение в
Этот режим позволяет проанализировать как запросы со стороны клиента, так и ответы от сервера.
Этот режим позволяет проанализировать как запросы со стороны клиента, так и ответы от сервера.
Если хост еще не находится ни в каких листах и обнаруживается ситуация, похожая на блокировку,
Если хост еще не находится ни в каких листах и обнаруживается ситуация, похожая на блокировку,
происходит автоматическое добавление хоста в список `autohostlist` как в памяти, так и в файле.
происходит автоматическое добавление хоста в список `autohostlist` как в памяти, так и в файле.
**nfqws** или **tpws** сами ведут этот файл.
`nfqws` или `tpws` сами ведут этот файл.
Чтобы какой-то хост не смог попась в `autohostlist` используйте `hostlist-exclude`.
Чтобы какой-то хост не смог попась в `autohostlist` используйте `hostlist-exclude`.
Если он все-же туда попал - удалите запись из файла вручную. Процессы автоматически перечитают файл.
Если он все-же туда попал - удалите запись из файла вручную. Процессы автоматически перечитают файл.
**tpws**/**nfqws** сами назначают владельцем файла юзера, под которым они работают после сброса привилегий,
`tpws`/`nfqws` сами назначают владельцем файла юзера, под которым они работают после сброса привилегий,
чтобы иметь возможность обновлять лист.
чтобы иметь возможность обновлять лист.
В случае **nfqws** данный режим требует перенаправления в том числе и входящего трафика.
В случае `nfqws` данный режим требует перенаправления в том числе и входящего трафика.
Крайне рекомендовано использовать ограничитель `connbytes`, чтобы **nfqws** не обрабатывал гигабайты.
Крайне рекомендовано использовать ограничитель `connbytes`, чтобы `nfqws` не обрабатывал гигабайты.
По этой же причине не рекомендуется использование режима на BSD системах. Там нет фильтра `connbytes`.
По этой же причине не рекомендуется использование режима на BSD системах. Там нет фильтра `connbytes`.
На linux системах при использовании nfqws и фильтра connbytes может понадобится :
На linux системах при использовании nfqws и фильтра connbytes может понадобится :
Было замечено, что некоторые DPI в России возвращают RST с неверным ACK. Это принимается tcp/ip стеком
Было замечено, что некоторые DPI в России возвращают RST с неверным ACK. Это принимается tcp/ip стеком
linux, но через раз приобретает статус INVALID в conntrack. Поэтому правила с`connbytes` срабатывают
linux, но через раз приобретает статус INVALID в conntrack. Поэтому правила с`connbytes` срабатывают
через раз, не пересылая RST пакет **nfqws**.
через раз, не пересылая RST пакет `nfqws`.
Как вообще могут вести себя DPI, получив "плохой запрос" и приняв решение о блокировке:
Как вообще могут вести себя DPI, получив "плохой запрос" и приняв решение о блокировке:
@ -1343,7 +1344,7 @@ linux, но через раз приобретает статус INVALID в con
4) Подмена сертификата: (только для https) полный перехват TLS сеанса с попыткой всунуть что-то
4) Подмена сертификата: (только для https) полный перехват TLS сеанса с попыткой всунуть что-то
свое клиенту. Применяется нечасто, поскольку броузеры на такое ругаются.
свое клиенту. Применяется нечасто, поскольку броузеры на такое ругаются.
**nfqws** и **tpws** могут сечь варианты 1-3, 4 они не распознают.
`nfqws` и `tpws` могут сечь варианты 1-3, 4 они не распознают.
Всилу специфики работы с отдельными пакетами или с TCP каналом tpws и nfqws распознают эти ситуации
Всилу специфики работы с отдельными пакетами или с TCP каналом tpws и nfqws распознают эти ситуации
по-разному.
по-разному.
Что считается ситуацией, похожей на блокировку :
Что считается ситуацией, похожей на блокировку :
@ -1374,7 +1375,7 @@ linux, но через раз приобретает статус INVALID в con
незаблокированный сайт. Эту ситуацию, увы, придется вам контролировать вручную.
незаблокированный сайт. Эту ситуацию, увы, придется вам контролировать вручную.
Заносите такие домены в `ipset/zapret-hosts-user-exclude.txt`, чтобы избежать повторения.
Заносите такие домены в `ipset/zapret-hosts-user-exclude.txt`, чтобы избежать повторения.
Чтобы впоследствии разобраться почему домен был занесен в лист, можно включить `autohostlist debug log`.
Чтобы впоследствии разобраться почему домен был занесен в лист, можно включить `autohostlist debug log`.
Он полезен тем, что работает без постоянного просмотра вывода **nfqws** в режиме debug.
Он полезен тем, что работает без постоянного просмотра вывода `nfqws` в режиме debug.
В лог заносятся только основные события, ведущие к занесению хоста в лист.
В лог заносятся только основные события, ведущие к занесению хоста в лист.
По логу можно понять как избежать ложных срабатываний и подходит ли вообще вам этот режим.
По логу можно понять как избежать ложных срабатываний и подходит ли вообще вам этот режим.
@ -1566,11 +1567,11 @@ nfqws начнет получать адреса пакетов из локал
`POSTNAT=0`
`POSTNAT=0`
Существует 3 стандартных опции запуска, настраиваемых раздельно и независимо: `tpws-socks`, **tpws**, **nfqws**.
Существует 3 стандартных опции запуска, настраиваемых раздельно и независимо: `tpws-socks`, `tpws`, `nfqws`.
Их можно использовать как по отдельности, так и вместе. Например, вам надо сделать комбинацию
Их можно использовать как по отдельности, так и вместе. Например, вам надо сделать комбинацию
из методов, доступных только в **tpws** и только в **nfqws**. Их можно задействовать вместе.
из методов, доступных только в `tpws` и только в `nfqws`. Их можно задействовать вместе.
**tpws** будет прозрачно локализовывать трафик на системе и применять свое дурение, **nfqws** будет дурить трафик,
`tpws` будет прозрачно локализовывать трафик на системе и применять свое дурение, `nfqws` будет дурить трафик,
исходящий с самой системы после обработки на **tpws**.
исходящий с самой системы после обработки на `tpws`.
А можно на эту же систему повесить без параметров socks proxy, чтобы получать доступ к обходу блокировок через прокси.
А можно на эту же систему повесить без параметров socks proxy, чтобы получать доступ к обходу блокировок через прокси.
Таким образом, все 3 режима вполне могут задействоваться вместе.
Таким образом, все 3 режима вполне могут задействоваться вместе.
Так же безусловно и независимо, в добавок к стандартным опциям, применяются все custom скрипты в `init.d/{sysv,openwrt,macos}/custom.d`.
Так же безусловно и независимо, в добавок к стандартным опциям, применяются все custom скрипты в `init.d/{sysv,openwrt,macos}/custom.d`.
@ -1586,7 +1587,7 @@ nfqws начнет получать адреса пакетов из локал
Одновременное использование tpws и nfqws без пересечения по L3/L4 (то есть nfqws - udp, tpws - tcp или nfqws - port 443, tpws - port 80 или nfqws - ipv4, tpws - ipv6) проблем не представляет.
Одновременное использование tpws и nfqws без пересечения по L3/L4 (то есть nfqws - udp, tpws - tcp или nfqws - port 443, tpws - port 80 или nfqws - ipv4, tpws - ipv6) проблем не представляет.
`tpws-socks` требует настройки параметров **tpws**, но не требует перехвата трафика.
`tpws-socks` требует настройки параметров `tpws`, но не требует перехвата трафика.
Остальные опции требуют раздельно настройки перехвата трафика и опции самих демонов.
Остальные опции требуют раздельно настройки перехвата трафика и опции самих демонов.
Каждая опция предполагает запуск одного инстанса соответствующего демона. Все различия методов дурения
Каждая опция предполагает запуск одного инстанса соответствующего демона. Все различия методов дурения
для `http`, `https`, `quic` и т.д. должны быть отражены через схему мультистратегий.
для `http`, `https`, `quic` и т.д. должны быть отражены через схему мультистратегий.
@ -1884,7 +1885,7 @@ zapret_custom_firewall_v4
zapret_custom_firewall_v6
zapret_custom_firewall_v6
```
```
zapret_custom_daemons поднимает демоны **nfqws**/**tpws** в нужном вам количестве и с нужными вам параметрами.
zapret_custom_daemons поднимает демоны `nfqws`/`tpws` в нужном вам количестве и с нужными вам параметрами.
Для систем традиционного linux (sysv) и MacOS в первом параметре передается код операции: 1 = запуск, 0 = останов.
Для систем традиционного linux (sysv) и MacOS в первом параметре передается код операции: 1 = запуск, 0 = останов.
Для openwrt логика останова отсутствует за ненадобностью.
Для openwrt логика останова отсутствует за ненадобностью.
Схема запуска демонов в openwrt отличается - используется procd.
Схема запуска демонов в openwrt отличается - используется procd.
@ -1913,7 +1914,7 @@ zapret_custom_firewall_nft поднимает правила nftables.
В macos firewall-функции ничего сами никуда не заносят. Их задача - лишь выдать текст в stdout,
В macos firewall-функции ничего сами никуда не заносят. Их задача - лишь выдать текст в stdout,
содержащий правила для pf-якоря. Остальное сделает обертка.
содержащий правила для pf-якоря. Остальное сделает обертка.
Особо обратите внимание на номер демона в функциях `run_daemon` и `do_daemon`, номера портов **tpws**
Особо обратите внимание на номер демона в функциях `run_daemon` и `do_daemon`, номера портов `tpws`
и очередей `nfqueue`.
и очередей `nfqueue`.
Они должны быть уникальными во всех скриптах. При накладке будет ошибка.
Они должны быть уникальными во всех скриптах. При накладке будет ошибка.
Поэтому используйте функции динамического получения этих значений из пула.
Поэтому используйте функции динамического получения этих значений из пула.
@ -1949,11 +1950,11 @@ zapret_custom_firewall_nft поднимает правила nftables.
Имена интерфейсов WAN и LAN известны из настроек системы.
Имена интерфейсов WAN и LAN известны из настроек системы.
Под другими системами роутер вы настраиваете самостоятельно. Инсталлятор в это не вмешивается.
Под другими системами роутер вы настраиваете самостоятельно. Инсталлятор в это не вмешивается.
инсталлятор в зависимости от выбранного режима может спросить LAN и WAN интерфейсы.
инсталлятор в зависимости от выбранного режима может спросить LAN и WAN интерфейсы.
Нужно понимать, что заворот проходящего трафика на **tpws** в прозрачном режиме происходит до выполнения маршрутизации,
Нужно понимать, что заворот проходящего трафика на `tpws` в прозрачном режиме происходит до выполнения маршрутизации,
следовательно возможна фильтрация по LAN и невозможна по WAN.
следовательно возможна фильтрация по LAN и невозможна по WAN.
Решение о завороте на **tpws** локального исходящего трафика принимается после выполнения маршрутизации,
Решение о завороте на `tpws` локального исходящего трафика принимается после выполнения маршрутизации,
следовательно ситуация обратная: LAN не имеет смысла, фильтрация по WAN возможна.
следовательно ситуация обратная: LAN не имеет смысла, фильтрация по WAN возможна.
Заворот на **nfqws** происходит всегда после маршрутизации, поэтому к нему применима только фильтрация по WAN.
Заворот на `nfqws` происходит всегда после маршрутизации, поэтому к нему применима только фильтрация по WAN.
Возможность прохождения трафика в том или ином направлении настраивается вами в процессе конфигурации роутера.
Возможность прохождения трафика в том или ином направлении настраивается вами в процессе конфигурации роутера.
Деинсталляция выполняется через `uninstall_easy.sh`. После выполнения деинсталляции можно удалить каталог `/opt/zapret`.
Деинсталляция выполняется через `uninstall_easy.sh`. После выполнения деинсталляции можно удалить каталог `/opt/zapret`.
@ -1981,7 +1982,7 @@ zapret_custom_firewall_nft поднимает правила nftables.
## Установка на openwrt в режиме острой нехватки места на диске
## Установка на openwrt в режиме острой нехватки места на диске
Требуется около 120-200 кб на диске. Придется отказаться от всего, кроме **tpws**.
Требуется около 120-200 кб на диске. Придется отказаться от всего, кроме `tpws`.
**Инструкция для openwrt 22 и выше с nftables**
**Инструкция для openwrt 22 и выше с nftables**
@ -1990,7 +1991,7 @@ zapret_custom_firewall_nft поднимает правила nftables.
***Установка:***
***Установка:***
1) Скопируйте все из `init.d/openwrt-minimal/tpws/*` в корень openwrt.
1) Скопируйте все из `init.d/openwrt-minimal/tpws/*` в корень openwrt.
2) Скопируйте бинарник **tpws** подходящей архитектуры в `/usr/bin/tpws`.
2) Скопируйте бинарник `tpws` подходящей архитектуры в `/usr/bin/tpws`.
3) Установите права на файлы: `chmod 755 /etc/init.d/tpws /usr/bin/tpws`
3) Установите права на файлы: `chmod 755 /etc/init.d/tpws /usr/bin/tpws`
4) Отредактируйте `/etc/config/tpws`
4) Отредактируйте `/etc/config/tpws`
* Если не нужен ipv6, отредактируйте `/etc/nftables.d/90-tpws.nft` и закомментируйте строки с редиректом ipv6.
* Если не нужен ipv6, отредактируйте `/etc/nftables.d/90-tpws.nft` и закомментируйте строки с редиректом ipv6.
@ -2018,7 +2019,7 @@ zapret_custom_firewall_nft поднимает правила nftables.
***Установка:***
***Установка:***
1) Скопируйте все из `init.d/openwrt-minimal/tpws/*` в корень openwrt.
1) Скопируйте все из `init.d/openwrt-minimal/tpws/*` в корень openwrt.
2) Скопируйте бинарник **tpws** подходящей архитектуры в `/usr/bin/tpws`.
2) Скопируйте бинарник `tpws` подходящей архитектуры в `/usr/bin/tpws`.
3) Установите права на файлы: `chmod 755 /etc/init.d/tpws /usr/bin/tpws`
3) Установите права на файлы: `chmod 755 /etc/init.d/tpws /usr/bin/tpws`
4) Отредактируйте `/etc/config/tpws`
4) Отредактируйте `/etc/config/tpws`
* Если не нужен ipv6, отредактируйте /etc/firewall.user и установите там DISABLE_IPV6=1.
* Если не нужен ipv6, отредактируйте /etc/firewall.user и установите там DISABLE_IPV6=1.
@ -2048,7 +2049,7 @@ tpws будет работать в любом случае, он не треб
Хотя linux варианты под Android работают, рекомендуется использовать специально собранные под bionic бинарники.
Хотя linux варианты под Android работают, рекомендуется использовать специально собранные под bionic бинарники.
У них не будет проблем с DNS, с локальным временем и именами юзеров и групп.\
У них не будет проблем с DNS, с локальным временем и именами юзеров и групп.\
Рекомендуется использовать gid 3003 (AID_INET). Иначе можете получить permission denied на создание сокета.
Рекомендую использовать gid 3003 (AID_INET). Иначе можете получить permission denied на создание сокета.
Например: `--uid 1:3003`\
Например: `--uid 1:3003`\
В iptables укажите: `! --uid-owner 1` вместо `! --uid-owner tpws`.\
В iptables укажите: `! --uid-owner 1` вместо `! --uid-owner tpws`.\
Напишите шелл скрипт с iptables и tpws, запускайте его средствами вашего рут менеджера.
Напишите шелл скрипт с iptables и tpws, запускайте его средствами вашего рут менеджера.
@ -2056,7 +2057,7 @@ tpws будет работать в любом случае, он не треб
magisk : /data/adb/service.d\
magisk : /data/adb/service.d\
supersu: /system/su.d
supersu: /system/su.d
**nfqws** может иметь такой глюк. При запуске с uid по умолчанию (0x7FFFFFFF) при условии работы на сотовом интерфейсе
`nfqws` может иметь такой глюк. При запуске с uid по умолчанию (0x7FFFFFFF) при условии работы на сотовом интерфейсе
и отключенном кабеле внешнего питания система может частично виснуть. Перестает работать тач и кнопки,
и отключенном кабеле внешнего питания система может частично виснуть. Перестает работать тач и кнопки,
но анимация на экране может продолжаться. Если экран был погашен, то включить его кнопкой power невозможно.
но анимация на экране может продолжаться. Если экран был погашен, то включить его кнопкой power невозможно.
Изменение UID на низкий (--uid 1 подойдет) позволяет решить эту проблему.
Изменение UID на низкий (--uid 1 подойдет) позволяет решить эту проблему.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.