SBC 概述
RustPBX SBC(Session Border Controller)模块提供企业级 SIP 边界控制能力,适用于运营商互联、安全防护和流量管控场景。
功能定位
SBC 作为 SIP 网络边界设备,核心能力:
| 能力 | 说明 |
|---|---|
| 拓扑隐藏 | 隐藏内部网络拓扑,对外只暴露 SBC 地址 |
| 安全防护 | DoS 防护、IP 黑白名单、频率限制、内置扫描器 User-Agent 黑名单(0.5+) |
| 媒体控制 | 媒体代理模式选择、编解码转码策略、ICE-lite 与 dialplan 级 relay_only(0.5+) |
| 中继管控 | 中继健康检查、CAC 呼叫接纳控制 |
| Header 操控 | SIP Header 增删改 |
| JSON-RPC 路由 | 通过外部 HTTP API 动态决定呼叫路由 |
架构
外部运营商 SBC 内部 PBX
│ │ │
│──── SIP INVITE ────►│ │
│ │── 匹配规则 ──► │
│ │ ACL / JSON-RPC │
│ │── 号码改写 ──► │
│ │ Header 操控 │
│ │── 媒体代理 ──► │
│ │ │
│◄─── SIP 200 OK ─────│◄────── 200 OK ──────│
│ │ │
│◄═════ RTP ═════════►│◄════ RTP ══════════►│
SBC 模块作为 addon-sbc 编译到 RustPBX 核心中,通过 DialplanInspector 在呼叫处理流程中注入 SBC 逻辑。
启用 SBC
[proxy]
addons = ["sbc"]
SBC 启动后,在控制台侧边栏出现 SBC 入口,包含 Dashboard、中继、路由、校验四个页面。
数据库要求
SBC 复用核心 RustPBX 的数据库表(sip_trunk、routing),无需额外 migration。SBC 特有的元数据存储在 sip_trunk.metadata.sbc JSON 字段中。
支持 SQLite / MySQL / PostgreSQL。