fix: harden sing-box egress rollout
This commit is contained in:
+29
-2
@@ -56,8 +56,11 @@ systemctl status vpn-egress-guard.service --no-pager
|
||||
nft list table inet vpn_egress_guard
|
||||
```
|
||||
|
||||
Новый unit имеет `Before=sing-box.service`; это закрывает boot window, который
|
||||
существовал у старого `After=sing-box.service`.
|
||||
Новый unit имеет `Before=sing-box.service`, а package-managed drop-in для
|
||||
`sing-box.service` добавляет `Requires=` и `After=` от guard. Это закрывает boot
|
||||
window и блокирует запуск sing-box, если совместно запущенный guard завершился с
|
||||
ошибкой. Зависимость не является watchdog для ручного удаления nftables-таблицы;
|
||||
текущее runtime-состояние проверяет `vpn-egressctl doctor`.
|
||||
|
||||
## 5. Dry run и первый import
|
||||
|
||||
@@ -116,7 +119,31 @@ ip -4 rule show
|
||||
ip -4 route show table 2022
|
||||
nft list table inet vpn_egress_guard
|
||||
nft list table inet sing-box
|
||||
systemctl show sing-box.service -p Requires -p After
|
||||
```
|
||||
|
||||
В `config.json` и nftables не должно быть ни старого `185.156.108.141`, ни
|
||||
текущего `85.208.119.160`.
|
||||
|
||||
С настоящего workload в `10.30.0.0/24` обязательно проверить:
|
||||
|
||||
1. DNS через шлюз;
|
||||
2. TCP и UDP через VPN;
|
||||
3. HTTPS-запрос к контролируемому endpoint или Cloudflare trace;
|
||||
4. соответствие наблюдаемого public IP ожидаемому VPN egress;
|
||||
5. повтор тех же проверок после restart sing-box.
|
||||
|
||||
Anti-leak проверяется только из консоли canary/staging, чтобы не потерять
|
||||
удалённый доступ к production:
|
||||
|
||||
```bash
|
||||
# На шлюзе:
|
||||
systemctl stop sing-box.service
|
||||
|
||||
# На workload за eth1: запрос наружу должен завершиться ошибкой, а не пойти напрямую.
|
||||
curl --fail --connect-timeout 5 https://www.cloudflare.com/cdn-cgi/trace
|
||||
|
||||
# На шлюзе:
|
||||
systemctl start sing-box.service
|
||||
vpn-egressctl doctor
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user