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。