Initial LisgloSIPS V2 implementation

This commit is contained in:
hectorzhao
2026-06-22 10:56:38 +08:00
commit 5fa1bd35e9
303 changed files with 35644 additions and 0 deletions
+152
View File
@@ -0,0 +1,152 @@
# S02 网络与端口验收报告
> 验收时间:2026-06-20
> 环境:本地 KVM 开发服务器,Tailscale 三机专网
> 结论:开发网络满足当前联调要求;阿里云安全组尚未创建,本报告给出未来迁移清单。
## 1. 环境边界
| 代号 | Tailscale IP | 开发阶段角色 |
| --- | --- | --- |
| A | 100.90.90.90 | 核心通信网关 |
| B | 100.90.90.91 | API、缓存、数据库、录音和监控 |
| T | 100.93.185.30 | 客户/供应商 SIP 测试端 |
| 开发机 | 100.91.249.119 | SSH 与运营 Web 管理端 |
- 用户确认 A/B/T 均为本地开发服务器,开发完成后再迁移阿里云。
- 开发阶段服务间通信统一使用 Tailscale IP,不依赖 ens18 上的两个局域网地址。
- 本次未修改 Tailscale ACL、主机防火墙、路由、云安全组或服务配置。
- 尚未部署的端口使用绑定到指定 Tailscale IP 的短时测试监听器;测试后已确认进程退出。
## 2. 双向 RTT
每个方向先建立 Tailscale 直连,再发送 20 个 ICMP 样本:
| 来源 | 目标 | 丢包 | 平均 RTT | 最大 RTT |
| --- | --- | ---: | ---: | ---: |
| A | B | 0% | 0.648 ms | 2.389 ms |
| B | A | 0% | 0.595 ms | 0.741 ms |
| A | T | 0% | 0.434 ms | 0.668 ms |
| T | A | 0% | 0.559 ms | 1.711 ms |
| B | T | 0% | 0.593 ms | 0.757 ms |
| T | B | 0% | 0.561 ms | 1.496 ms |
结论:三机稳态 RTT 均小于 1 ms,丢包为 0,满足开发联调目标。
Tailscale 接口 MTU 为 1280。A 到 B/T 的 1200 字节 ICMP payload、DF 模式各 5 次均为 0% 丢包,平均 RTT 分别为 0.634 ms 和 0.657 ms。
## 3. 路径稳定性
- 三机稳态均为局域网 direct 路径,没有经过 DERP。
- 当前开发机到 A/B/T 建立直连后的延迟约为 10/9/3 ms。
- 测试过程中开发机到三机的 Tailscale 路径曾发生一次重新协商,约一分钟内 SSH 新连接超时;恢复后无需重启服务。
- 开发机测得最近 DERP 为 San Francisco,约 166 ms。若局域网 direct 失败并退化到 DERP,SIP/RTP 联调体验会明显下降。
- 建议开发时保持局域网 UDP 41641 可达,并监控 `tailscale ping` 是否显示 `direct`
## 4. 已执行端口验收
| 来源 | 目标 | 协议/端口 | 用途 | 结果 |
| --- | --- | --- | --- | --- |
| T | A | UDP 15060 | 规划中的客户 SIP 入口 | PASS,收到双向 ACK |
| T | A | UDP 30000 | RTP 范围下界 | PASS,收到双向 ACK |
| T | A | UDP 40000 | RTP 范围上界 | PASS,收到双向 ACK |
| A | T | UDP 30000 | RTP 反向下界 | PASS,收到双向 ACK |
| A | T | UDP 40000 | RTP 反向上界 | PASS,收到双向 ACK |
| A | T | UDP 5060 | T 机现有 OpenSIPS | PASSOPTIONS 返回 SIP 484 |
| 开发机 | B | TCP 443 | 规划中的运营 Web HTTPS | PASS,收到 ACK |
| A | B | UDP 9060 | HEP | PASS,收到 ACK |
| A | B | TCP 6379 | Redis 热路径 | PASS,收到 ACK |
| A | B | TCP 3306 | 网络路径测试 | PASS;安全策略仍禁止远程直连 |
| B | A | TCP 9100 | Prometheus 抓取 Exporter | PASS,收到 ACK |
| B | A | TCP 22 | 录音拉取/运维路径 | PASS,TCP 建连成功;历史开发端口,后续迁移为 `<SSH_ADMIN_PORT>` |
T 机 SIP OPTIONS 测试产生 1 条 `sip_trace` 记录;`acc``missed_calls` 未增加。该测试记录保留用于审计。
## 5. 开发阶段最小暴露矩阵
### Server A 入站
| 协议/端口 | 允许来源 | 要求 |
| --- | --- | --- |
| TCP `<SSH_ADMIN_PORT>` | 开发机、B | SSH 管理与 B 拉取录音;保留 Key 登录 |
| UDP 15060 | T | 开发 SIP 信令 |
| UDP 30000-40000 | T | 开发 RTP;与 RTPEngine 配置一致 |
| TCP 9100 | B | Node Exporter,仅监控抓取 |
| RTPEngine 控制端口 | 本机回环 | 不允许 Tailscale 或局域网访问 |
### Server B 入站
| 协议/端口 | 允许来源 | 要求 |
| --- | --- | --- |
| TCP `<SSH_ADMIN_PORT>` | 开发机 | SSH,保留 Key 登录 |
| TCP 443 | 开发机 | 运营端 HTTPS |
| UDP 9060 | A | HEP |
| TCP 6379 | A、B 本机 | Redis;密码/ACL、专网绑定 |
| TCP 3306 | B 本机 | MySQL 仅回环地址,不开放给 A |
| TCP 3000/9090 | B 本机 | Grafana/Prometheus 经反向代理或 SSH 隧道访问 |
| 应用内部端口 | B 本机 | 由 Nginx 代理,不直接暴露 |
### Server T 入站
| 协议/端口 | 允许来源 | 要求 |
| --- | --- | --- |
| TCP `<SSH_ADMIN_PORT>` | 开发机 | SSH,保留 Key 登录 |
| UDP 5060 | A | 测试 SIP |
| UDP 30000-40000 | A | 测试 RTP |
| TCP 80、TCP/UDP 111 | 默认禁止 | 现有 Apache/rpcbind 非 SIP 联调必需 |
## 6. Tailscale 与主机防火墙要求
- Tailscale ACL 应只允许上述源目标组合;当前主机侧无法读取 tailnet 管理端 ACL,需在 Tailscale 管理台复核。
- 主机防火墙仍必须实施默认拒绝,不能只依赖 Tailscale ACL。
- 服务应绑定 Tailscale IP 或 `127.0.0.1`,避免因 ens18 双地址选择错误而暴露到局域网。
- 开发环境也不得将 Redis、MySQL、RTPEngine 控制端口和 OpenSIPS MI 暴露给整个 tailnet。
- 防火墙落地分别属于 S03(B)和 S18/S19A),不在 S02 修改。
## 7. 未来阿里云安全组清单
### 迁移前网络
1. A、B 放在同一 VPC,优先同一可用区;业务间使用私网 IP。
2. 为 A/B 分配唯一私网地址和唯一默认路由,不复制本地 machine-id、网卡 UUID 或磁盘 UUID。
3. T 继续作为外部测试端,通过 A 的公网 SIP/RTP 入口验收。
4. 数据库、Redis、HEP、Exporter 和录音搬运走 VPC 私网。
### 安全组 A
开发阶段采用 UDP 30000-40000;迁移阿里云前应根据并发量重新计算并尽量缩小范围。
| 方向 | 协议/端口 | 来源/目标 |
| --- | --- | --- |
| 入站 | UDP 15060 | 已登记客户、供应商和 T 的公网 IP |
| 入站 | UDP 30000-40000 | 已登记 RTP 对端;无法固定时配合限速和监控 |
| 入站 | TCP `<SSH_ADMIN_PORT>` | 管理 VPN/堡垒机安全组;B 私网 IP 仅用于录音拉取;保留 Key 登录 |
| 入站 | TCP 9100 | B 的安全组或私网 IP |
| 出站 | TCP 6379 | B 私网 IP |
| 出站 | UDP 9060 | B 私网 IP |
### 安全组 B
| 方向 | 协议/端口 | 来源/目标 |
| --- | --- | --- |
| 入站 | TCP 443 | 运营人员允许地址;上线后可按产品策略扩大 |
| 入站 | TCP 80 | 可选,仅跳转 HTTPS |
| 入站 | TCP `<SSH_ADMIN_PORT>` | 管理 VPN/堡垒机安全组;保留 Key 登录 |
| 入站 | UDP 9060 | A 的安全组或私网 IP |
| 入站 | TCP 6379 | A 的安全组或私网 IP |
| 入站 | TCP 3306 | 禁止公网;同机应用优先 127.0.0.1 |
| 入站 | TCP 3000/9090 | 不开放公网,经 Nginx/VPN/隧道访问 |
| 出站 | TCP `<SSH_ADMIN_PORT>` | A 私网 IP,仅录音拉取需要时 |
实际创建安全组时应先记录规则截图/导出,按最小权限逐条添加,并从允许和禁止来源分别复测。
## 8. 验收结论
- A/B/T 双向可达、稳态 RTT 和 MTUPASS。
- SIP 15060、T SIP 5060、RTP 30000-40000 双向路径:PASS。
- B 的 Web 443、HEP 9060、Redis 6379 路径:PASS。
- B 到 A 的监控与 SSH 路径:PASS。
- 最小暴露矩阵:已形成。
- 阿里云控制台操作清单:已形成,未执行。
S02 验收通过。开发环境的主机防火墙和服务绑定将在后续任务按服务器逐步实施。