# Server T 客户模拟配置 Runbook > 任务:S21 - Server T 客户模拟配置 > 完成时间:2026-06-21 15:28 +08:00 > 环境:本地 KVM Server T `100.93.185.30` ## 1. 变更范围 - 在 Server T 部署独立脚本目录 `/opt/lisglosips-s21`。 - 新增受控配置文件 `/etc/lisglosips-s21/sip-accounts.env`,权限 `0640 root:hector`。 - 新增 OpenSIPS 测试域 `s21.lisglosips.test`。 - 新增两套 SIP 注册测试账号: - `s21-reg-1001@s21.lisglosips.test` - `s21-reg-1002@s21.lisglosips.test` - 新增两套 IP 认证测试条目: - `s21-ip-1001`:`100.93.185.30/32` - `s21-ip-1002`:`100.93.185.30/32` - 将 T 的 OpenSIPS `auth_db calculate_ha1` 调整为 `0`,账号只保存 HA1,不保存 SIP 明文密码。 - 将 T 的 OpenSIPS `mi_fifo fifo_mode` 调整为 `0660`。 - 将 T 的 OpenSIPS TLS 私钥文件权限收敛为 `0600`。 ## 2. 脚本清单 脚本均位于 `/opt/lisglosips-s21`: | 脚本 | 用途 | | --- | --- | | `s21-register-primary` | 主 SIP 注册账号成功注册 | | `s21-register-secondary` | 备用 SIP 注册账号成功注册 | | `s21-register-wrong-ha1` | 错误鉴权失败场景 | | `s21-call-a-ip` | 从 T 向 A `100.90.90.90:15060` 发起 IP 认证模拟 INVITE | | `s21-call-a-sip` | 从 T 向 A 发起 SIP 注册账号模拟 INVITE | | `s21-local-success` | T 本地 200 OK 呼叫场景 | | `s21-local-busy` | T 本地 486 Busy Here 场景 | | `s21-local-reject` | T 本地 603 Decline 场景 | | `s21-local-timeout` | T 本地超时场景 | | `s21-over-cps-a` | 从 T 向 A 突发 INVITE,模拟超 CPS/突发压测输入 | 所有脚本都会输出 `call_id=...` 和 SIP 状态,便于后续在 A、B、HOMER、Redis Stream 中按 Call-ID 串联排查。 ## 3. 验证结果 - `opensips -C -f /etc/opensips/opensips.cfg` 通过。 - `opensips.service` 为 `active`。 - `s21-register-primary`:先收到 `401 Unauthorized` challenge,最终 `200 OK`。 - `s21-register-secondary`:先收到 `401 Unauthorized` challenge,最终 `200 OK`。 - `s21-register-wrong-ha1`:最终保持 `401 Unauthorized`。 - `location` 表已有 `s21-reg-1001` 和 `s21-reg-1002` 注册位置。 - `subscriber.password` 长度为 `0`,`subscriber.ha1` 长度为 `32`,未保存 SIP 明文密码。 - 本地场景: - `s21-local-success` 返回 `SIP/2.0 200 OK` - `s21-local-busy` 返回 `SIP/2.0 486 Busy Here` - `s21-local-reject` 返回 `SIP/2.0 603 Decline` - `s21-local-timeout` 返回 `NO RESPONSE` - 到 A 的探针: - `s21-call-a-ip` 返回 `SIP/2.0 503 Config Missing` - `s21-call-a-sip` 返回 `SIP/2.0 503 Config Missing` - `s21-over-cps-a 5 0.01` 5 个 Call-ID 均返回 `SIP/2.0 503 Config Missing` 说明:A 端当前处于 S20 热路径阶段,尚未发布真实客户/路由配置,因此到 A 的 INVITE 返回 `503 Config Missing` 是当前预期;S21 验收重点是 T 端脚本可重复执行并输出 Call-ID。 ## 4. 回滚方式 回滚点: ```text /var/backups/lisglosips-s21/20260621T072316Z ``` 回滚步骤: ```bash sudo systemctl stop opensips sudo cp -a /var/backups/lisglosips-s21/20260621T072316Z/opensips /etc/opensips sudo mysql --protocol=socket -uroot opensips < /var/backups/lisglosips-s21/20260621T072316Z/opensips.sql sudo rm -rf /opt/lisglosips-s21 /etc/lisglosips-s21 sudo opensips -C -f /etc/opensips/opensips.cfg sudo systemctl start opensips ``` 回滚会删除 S21 的测试账号、注册位置、IP 认证测试数据和脚本。若后续任务已依赖这些脚本,应先暂停相关测试。