feat: v2.0.0 — UFW backup, rollback, lock, rotation, cross-distro support
- Backup/restore UFW configuration alongside iptables rules - Backup sysctl.conf before any modifications (preserves original) - Auto-backup before every add, delete, flush operation - Rollback partially applied rules on iptables errors - Save and restore UFW DEFAULT_FORWARD_POLICY on flush/delete - Rotate backups (max 20) and logs (max 1 MB) automatically - Lock file to prevent concurrent script execution - Port conflict detection warns when port is already in use - Support 'both' protocol (TCP+UDP simultaneously) - Cross-distro package manager detection (apt, dnf, yum, pacman) - Strict IPv6 validation via python3/perl with safe fallback - Replace deprecated -m state with -m conntrack --ctstate - Trap EXIT/INT/TERM for clean shutdown - Add 'update' command to self-update from repository - Add 'uninstall' command with full cleanup and config restoration - Persist rules cross-distro (netfilter-persistent, iptables-services, manual) - Extract _apply_rule_core to eliminate rule-application duplication - Show UFW and backup count in status, mark UFW backups in restore list
This commit is contained in:
@@ -23,18 +23,29 @@
|
||||
|
||||
## Возможности
|
||||
|
||||
- **Мультипротокольность** — UDP (WireGuard, AmneziaWG), TCP (VLESS, XRay, Reality, MTProto)
|
||||
- **IPv4 и IPv6** — полная поддержка обоих стеков
|
||||
- **Мультипротокольность** — UDP (WireGuard, AmneziaWG), TCP (VLESS, XRay, Reality, MTProto), режим `both` (TCP+UDP одновременно)
|
||||
- **IPv4 и IPv6** — полная поддержка обоих стеков с точной валидацией адресов
|
||||
- **Кастомные правила** — разные порты входа/выхода, любой протокол
|
||||
- **Пакетное создание** — диапазон портов за одну операцию
|
||||
- **Google BBR** — автоматическое ускорение TCP
|
||||
- **Бэкап / восстановление** — сохранение и откат конфигурации
|
||||
- **Бэкап / восстановление** — iptables, ip6tables и конфигурация UFW
|
||||
- **Бэкап sysctl.conf** — оригинальная конфигурация сохраняется перед модификацией
|
||||
- **Автобэкап** — перед каждым добавлением, удалением и сбросом правил
|
||||
- **Ротация** — автоматическая очистка старых бэкапов (>20) и ротация лога (>1 MB)
|
||||
- **Проверка доступности** — тест TCP-соединения к целевым серверам
|
||||
- **Проверка конфликтов портов** — предупреждение если порт уже используется локальным сервисом
|
||||
- **CLI-режим** — управление без интерактивного меню (для скриптов и автоматизации)
|
||||
- **Логирование** — все действия записываются в `/var/log/cascad.log`
|
||||
- **Защита от дубликатов** — проверка перед добавлением правил
|
||||
- **Автобэкап при сбросе** — невозможно случайно потерять конфигурацию
|
||||
- **Валидация ввода** — проверка IP-адресов и портов
|
||||
- **Валидация ввода** — проверка IP-адресов (включая строгую проверку IPv6) и портов
|
||||
- **Откат при ошибке** — частично применённые правила автоматически удаляются
|
||||
- **UFW-совместимость** — сохранение и восстановление оригинальной FORWARD policy
|
||||
- **Lock-файл** — защита от одновременного запуска нескольких экземпляров
|
||||
- **Обновление** — `cascad update` для обновления до последней версии
|
||||
- **Удаление** — `cascad uninstall` для полного удаления с восстановлением конфигурации
|
||||
- **Trap/Cleanup** — корректное завершение при прерывании (Ctrl+C)
|
||||
- **Кросс-дистрибутив** — поддержка Debian/Ubuntu (apt), CentOS/Fedora (dnf/yum), Arch (pacman)
|
||||
- **Современный conntrack** — использование `-m conntrack --ctstate` вместо устаревшего `-m state`
|
||||
|
||||
## Установка
|
||||
|
||||
@@ -75,6 +86,9 @@ cascad add tcp 203.0.113.10 443
|
||||
# Добавить правило с разными портами
|
||||
cascad add udp 203.0.113.10 51820 51821
|
||||
|
||||
# Добавить правило сразу для TCP и UDP
|
||||
cascad add both 203.0.113.10 443
|
||||
|
||||
# Список правил
|
||||
cascad list
|
||||
|
||||
@@ -84,7 +98,7 @@ cascad del tcp 203.0.113.10 443 443
|
||||
# Проверить доступность целей
|
||||
cascad check
|
||||
|
||||
# Создать бэкап
|
||||
# Создать бэкап (iptables + UFW)
|
||||
cascad backup
|
||||
|
||||
# Восстановить из бэкапа
|
||||
@@ -93,20 +107,41 @@ cascad restore
|
||||
# Статус системы
|
||||
cascad status
|
||||
|
||||
# Обновить скрипт
|
||||
cascad update
|
||||
|
||||
# Сбросить все правила
|
||||
cascad flush
|
||||
|
||||
# Полностью удалить
|
||||
cascad uninstall
|
||||
|
||||
# Справка
|
||||
cascad help
|
||||
```
|
||||
|
||||
## Версии
|
||||
|
||||
- **v2.0.0** — бэкап UFW, ротация, lock-файл, rollback, проверка конфликтов портов, `both` протокол, `update`, `uninstall`, кросс-дистрибутив, conntrack
|
||||
- **v1.0.0** — базовая функциональность: NAT-перенаправление, бэкап iptables, CLI
|
||||
|
||||
Для установки конкретной версии:
|
||||
|
||||
```bash
|
||||
# v1.0.0
|
||||
bash <(curl -sL https://raw.githubusercontent.com/arblark/cascad/v1.0.0/cascad.sh)
|
||||
|
||||
# v2.0.0 (последняя)
|
||||
bash <(curl -sL https://raw.githubusercontent.com/arblark/cascad/v2.0.0/cascad.sh)
|
||||
```
|
||||
|
||||
## Требования
|
||||
|
||||
- Linux (Ubuntu / Debian)
|
||||
- Linux (Debian/Ubuntu, CentOS/Fedora, Arch)
|
||||
- root-доступ
|
||||
- iptables
|
||||
|
||||
Зависимости (`iptables-persistent`, `netfilter-persistent`) устанавливаются автоматически при первом запуске.
|
||||
Зависимости устанавливаются автоматически при первом запуске.
|
||||
|
||||
## Структура файлов
|
||||
|
||||
@@ -114,7 +149,9 @@ cascad help
|
||||
|---|---|
|
||||
| `/usr/local/bin/cascad` | Глобальная команда |
|
||||
| `/var/log/cascad.log` | Лог действий |
|
||||
| `/etc/cascad/backups/` | Бэкапы правил iptables |
|
||||
| `/etc/cascad/backups/` | Бэкапы правил iptables + UFW |
|
||||
| `/etc/cascad/state` | Сохранённое состояние (оригинальные настройки) |
|
||||
| `/var/run/cascad.lock` | Lock-файл |
|
||||
|
||||
## Лицензия
|
||||
|
||||
|
||||
Reference in New Issue
Block a user