защита Podkop Переделки: guard-скрипт + cron от поломки патча opkg upgrade
This commit is contained in:
@@ -67,13 +67,36 @@ uci commit podkop
|
|||||||
- AWG transfer: 60 MiB received через туннель
|
- AWG transfer: 60 MiB received через туннель
|
||||||
- iPhone 192.168.2.160: 14 ASSURED conntrack соединений
|
- iPhone 192.168.2.160: 14 ASSURED conntrack соединений
|
||||||
|
|
||||||
|
## Защита от повторной поломки (guard)
|
||||||
|
|
||||||
|
Патч /usr/bin/podkop слетит при `opkg upgrade podkop`. Поставлен трёхслойный guard:
|
||||||
|
|
||||||
|
### `/usr/sbin/podkop-prio-guard`
|
||||||
|
Проверяет и чинит:
|
||||||
|
1. Строку 311 в `/usr/bin/podkop` (если `-150` → восстанавливает `-140`)
|
||||||
|
2. Runtime chain `PodkopTable.mangle` (если `priority mangle` → пересоздаёт с `priority -140`)
|
||||||
|
|
||||||
|
### Триггеры запуска
|
||||||
|
- **cron каждые 2 минуты**: `*/2 * * * * /usr/sbin/podkop-prio-guard` (crontab root)
|
||||||
|
- **после ребута**: `(sleep 30 && /usr/sbin/podkop-prio-guard) &` в `/etc/rc.local`
|
||||||
|
- **ручной запуск**: `/usr/sbin/podkop-prio-guard` — см. `logread -l 50 | grep podkop-prio`
|
||||||
|
|
||||||
|
### Протестированные сценарии восстановления
|
||||||
|
| Сценарий | Приоритет после | Guard восстанавливает за |
|
||||||
|
|----------|-----------------|--------------------------|
|
||||||
|
| `podkop restart` | `-140` (сохраняется патчем) | не требуется |
|
||||||
|
| Патч слетел + `podkop restart` (имитация opkg upgrade) | `-150` | ≤ 2 мин (cron) |
|
||||||
|
| Руками `nft delete chain` + mangle на `-150` | `-150` | ≤ 2 мин (cron) |
|
||||||
|
| Ребут роутера | зависит от порядка procd | `sleep 30` после inet-up |
|
||||||
|
|
||||||
## Важное на будущее
|
## Важное на будущее
|
||||||
|
|
||||||
1. **Конфликт priority при co-existence Podkop + NetBird** — если в сети присутствует NetBird (или любой другой nft-wrapper-VPN с hook prerouting priority mangle), Podkop нужно сдвигать на `-140` или позже. Это не описано в документации Podkop.
|
1. **Конфликт priority при co-existence Podkop + NetBird** — если в сети присутствует NetBird (или любой другой nft-wrapper-VPN с hook prerouting priority mangle), Podkop нужно сдвигать на `-140` или позже. Это не описано в документации Podkop.
|
||||||
2. **Не верь только счётчику `mangle`** — если `proxy.tproxy` counter сильно отстаёт, метка где-то перезаписывается.
|
2. **Не верь только счётчику `mangle`** — если `proxy.tproxy` counter сильно отстаёт, метка где-то перезаписывается.
|
||||||
3. Патч `/usr/bin/podkop` слетит при обновлении пакета — после каждого `opkg upgrade podkop` проверять `sed -n '311p' /usr/bin/podkop`.
|
3. После `opkg upgrade podkop` окно поломки до 2 минут (до следующего cron). Для нулевого downtime — вручную: `/usr/sbin/podkop-prio-guard && podkop restart`.
|
||||||
4. `podkop apply` команды не существует — для перегенерации правил: `podkop restart`.
|
4. `podkop apply` команды не существует — для перегенерации правил: `podkop restart`.
|
||||||
5. На OpenWrt Переделки **нет `conntrack` CLI и `timeout`** — только /proc и builtin.
|
5. На OpenWrt Переделки **нет `conntrack` CLI и `timeout`** — только /proc и builtin.
|
||||||
|
6. Лог работы guard: `logread | grep podkop-prio-guard`.
|
||||||
|
|
||||||
## Диагностика на будущее
|
## Диагностика на будущее
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user