Appearance
markdown
# 路由反推(Route Reverse)
## 重点摘要
- 定位:从“用户 CCD”里解析 `iroute`,快速反推出每个用户背后宣告的网段
- 适用角色:运维/网络管理员(需要核对站点网段宣告、排查路由不通时)
- 风险级别:中(保存会修改 CCD;可选强制下线会断开用户连接)
- 关键点:本页只允许编辑 `iroute` 行,其它 CCD 配置会被保留
## 页面目的
- 汇总展示所有用户的 CCD 状态,并从 CCD 文件中解析出 `iroute <网段> <掩码>` 列表。
- 通过“编辑 iroute”对 CCD 中的 `iroute` 进行增删改,保存后可选择强制下线用户,让其重连加载最新 CCD。
## 前置条件
- 以管理员权限登录控制台。
- 目标用户需要存在 CCD(页面会显示“CCD:有/无”)。
- 若要使用“强制下线”,需要 OpenVPN Management 接口已可用。
## 主要功能
### 1) CCD 列表与反推网段
- 列表字段:用户名、分组、分配 IP、状态、CCD 是否存在。
- 反推网段:从 CCD 内容中提取所有有效 `iroute` 行,支持多条。
- 展示格式:优先以 `network/prefix` 展示(例如 `192.168.31.0/24`),悬浮提示显示原始 `network netmask`。
### 2) 编辑 iroute(仅限 iroute 行)
- 点击“编辑”打开弹窗。
- 弹窗内文本框每行一条:`iroute <网段> <掩码>`。
- 保存时会:
- 仅替换 CCD 中的 `iroute` 行(会移除旧的有效 `iroute` 行,再追加新的 `iroute` 块);
- 保留 CCD 中其它配置/注释不变。
### 3) 保存后强制下线(可选)
- 保存 CCD 成功后,会弹出确认:是否强制下线该用户。
- 选择强制下线后,客户端会自动重连以加载最新 CCD(失败不影响 CCD 已保存的结果)。
## 推荐操作流程
1) 先点击“刷新”,确保 CCD 列表与反推网段最新。
2) 找到目标用户,查看“反推网段”是否符合预期。
3) 点击“编辑”只调整 `iroute` 行(不要在该弹窗里写其它 CCD 配置)。
4) 保存后,如需立即生效,选择“强制下线”让客户端重连。
## 注意事项
- 用户状态为“禁用”时,页面会禁止编辑与保存。
- `iroute` 行必须严格符合格式:`iroute A.B.C.D W.X.Y.Z`,否则保存前会提示“无效 iroute 行”。
- 本页的“反推网段”依赖 CCD 内容;若 CCD 中没有 `iroute`,则显示 `-`。
::: details 接口参考(可选,仅用于二次开发/联调)
- `GET /api/users?page=1&per_page=200&status=all&include_ccd=1`:加载用户列表(带 CCD 存在性)。
- `GET /api/users/:id/ccd`:读取指定用户 CCD 内容。
- `PUT /api/users/:id/ccd`:保存指定用户 CCD 内容(请求体:`{ "content": "..." }`)。
- `POST /api/openvpn/management/kill`:可选强制下线(请求体:`{ "username": "..." }`)。
:::