Template
1
0
mirror of https://github.com/bol-van/zapret2.git synced 2026-03-14 06:13:09 +00:00

update docs

This commit is contained in:
bol-van
2025-12-22 13:52:45 +03:00
parent 00d1406791
commit d2f6c18adf

View File

@@ -738,6 +738,10 @@ ipcache представляет собой структуру в памяти
Параметр `--dry-run` позволяет протестировать корректность опций командной строки и доступность используемых файлов под сброшенными привилегиями.
`--dry-run` не инициализирует движок LUA, и поэтому не может обнаружить синтаксические ошибки LUA.
## Виртуальные машины
Большинство десктопных гипервизоров ломают техники обхода при подключении сети через встроенный в гипервизор NAT. Это настройка по умолчанию. Необходимо подключение через мост (bridge). Проблема точно есть в vmware и virtualbox.
## Песочница
В целях безопасности nfqws2 после инициализации сбрасывает свои привилегии.
@@ -4159,3 +4163,106 @@ nft_first_packets()
## Инсталлятор
Состоит из файлов `install_bin.sh`, `install_prereq.sh`, `install_easy.sh`, `uninstall_easy.sh`.
* `install_bin.sh` - средство автоматического поиска и настройки подходящих по архитектуре бинарных файлов из `binaries`. Создает линки в директориях nfq2, mdig, ip2net на файлы внутри одной из субдиректорий из binaries. Заточено на максимально обрезанные прошивки, где много чего нет. Работает почти на всем, но не 100%. Отсутствие или обрезанный вариант какой-нибудь стандартной программы может сломать скрипт - типично для неподдерживаемых прошивок типа padavan, merlin и тому подобных. Если не работает - создайте линки вручную.
* `install_prepreq.sh` - установщик пре-реквизитов - требуемых пакетов для работы zapret. Работает в OpenWRT и на большинстве дистрибутивов Linux, но не на всех, поскольку могут использоваться очень разные системы управления пакетами и иметься индивидуальные особенности, которые все учесть невозможно. Если скрипт не справляется - требуется установить пакеты вручную.
* `install_easy.sh` - основной установщик. Рассчитан на запуск из любого расположения. Работает в диалоговом режиме, задает вопросы. Автоматически настраивает binaries и устанавливает пре-реквизиты (отдельный запуск предыдущих скриптов не требуется). На неподдерживаемых системах Linux не может прописать автозапуск - вам это придется сделать вручную.
* `uninstall_easy.sh` - деинсталлятор. Не может убрать автозапуск на неподдерживаемых системах. Предлагает удалить пре-реквизиты только на OpenWRT, на остальных системах - нет. Не удаляет саму директорию установки - для полного удаления ее надо удалить самостоятельно.
Отдельные файлы `install_bin.sh` и `install_prereq.sh` полезны, когда вы не собираетесь запускать установку, но вам нужен рабочий [blockcheck2](#blockcheck2) или есть необходимость запускать [стартовые скрипты](#стартовые-скрипты) самостоятельно.
Инсталлятор всегда копирует файлы в `/opt/zapret2`, если исходный вариант находится где-то в другом месте. При замещении целевой директории удаляет все файлы оттуда. Опционально сохраняет стандартные файлы - config, [custom скрипты](#custom-скрипты), [user-листы](#стандартные-файлы-листов) из ipset, автохостлист.
При копировании в `/opt/zapret2` выставляет нужные права на файлы и директории, даже если они были испорчены (например, перепаковкой в Windows) в исходном расположении. Для запуска из расположения с испорченными правами достаточно вызвать "sh install_easy.sh".
Бинарные файлы присутствуют только в релизах. После git clone их нет. В случае отсутствия binaries инсталлятор попытается их собрать. Для этого ему нужен компилятор C, make и несколько dev пакетов. Подробности см в `docs/compile`.
Ниже описаны действия, выполняемые инсталлятором для интеграции с различными вариантами Linux. Можно отказаться от инсталлятора, сделав эти действия самостоятельно и настроив [config](#файл-config).
### Принципы интеграции с OpenWRT
1. Автозапуск.
```
ln -s /opt/zapret2/init.d/openwrt/zapret2 /etc/init.d
/etc/init.d/zapret2 enable
```
2. Обновление правил firewall по событию поднятия/опускания интерфейсов.
```
ln -s /opt/zapret2/init.d/openwrt/90-zapret2 /etc/hotplug.d/iface
```
3. (только для fw3) Интеграция с firewall.
```
ln -s /opt/zapret2/init.d/openwrt/firewall.zapret2 /etc
uci add firewall include
uci set firewall.@include[-1].path="/etc/firewall.zapret"
uci set firewall.@include[-1].reload=1
uci commit
```
4. Обновление листов - cron job на вызов `/opt/zapret2/ipset/get_config.sh` ночью в случайное время каждые 2 дня - для обновления листов. Рассчет идет на роутер, работающий круглосуточно.
### Шпаргалка OpenWRT
* Запуск службы : /etc/init.d/zapret2 start
* Останов службы : /etc/init.d/zapret2 stop
* Рестарт службы : /etc/init.d/zapret2 restart
* Состояние службы : /etc/init.d/zapret2 status
* Отключение автозапуска : /etc/init.d/zapret2 disable
* Включение автозапуска : /etc/init.d/zapret2 enable
### Принципы интеграции с systemd
1. Автозапуск
```
cp /opt/zapret2/init.d/systemd/zapret2.service /lib/systemd/system
systemctl daemon-reload
systemctl enable zapret2
```
2. Таймер для обновления листов - в случайное время суток каждые 2 дня. Рассчет идет на любую систему, в том числе десктопную, которую могут включать только днем.
```
cp /opt/zapret2/init.d/systemd/zapret2-list-update.* /lib/systemd/system
systemctl daemon-reload
systemctl enable zapret2-list-update.timer
systemctl start zapret2-list-update.timer
```
### Шпаргалка systemd
* Запуск службы : systemctl start zapret2
* Останов службы : systemctl stop zapret2
* Рестарт службы : systemctl restart zapret2
* Состояние службы : systemctl status zapret2
* Отключение автозапуска : systemctl disable zapret2
* Включение автозапуска : systemctl enable zapret2
### Принципы интеграции с openrc
1. Автозапуск
```
ln -s /opt/zapret2/init.d/openrc/zapret2 /etc/init.d
rc-update add zapret2
```
2. Обновление листов - cron job на вызов `/opt/zapret2/ipset/get_config.sh` днем в случайное время каждые 2 дня. Рассчет идет на любую систему, в том числе десктопную, которую могут включать только днем.
### Шпаргалка openrc
* Запуск службы : rc-service zapret2 start
* Останов службы : rc-service zapret2 stop
* Рестарт службы : rc-service zapret2 restart
* Состояние службы : rc-service zapret2 status
* Отключение автозапуска : rc-update del zapret2
* Включение автозапуска : rc-update add zapret2
## Альтернативная установка на systemd
На классическом Linux с systemd можно использовать готовый шаблонный юнит `init.d/systemd/nfqws2@.service` для запуска инстансов nfqws2.
1. `cp /opt/zapret2/init.d/systemd/nfqws2\@.service /lib/systemd/system`
2. `systemctl daemon-reload`
3. `mkdir /etc/zapret2`
4. Создаете в `/etc/zapret2` текстовый файл с параметрами коммандной строки nfqws2. Файл называется INSTANCE.conf, где INSTANCE - название инстанса, которое вы придумываете сами.
5. Запуск : `systemctl start nfqws2@INSTANCE`
6. Останов : `systemctl stop nfqws2@INSTANCE`
7. Перезапуск : `systemctl restart nfqws2@INSTANCE`
Этот способ не поднимает правила ip/nf tables - вам это придется сделать отдельно, как и написать сами правила. Правила нужно прописать куда-то, чтобы они поднимались после старта системы. Например, можно сделать отдельный systemd unit с запуском шелл скрипта или `nft -f /path/to/file.nft`.