NAT 与发布75 条

SIP 与音视频 ALG

SIP 报文里携带协商的媒体地址与端口,NAT 场景需要 ALG 或固定媒体端口,否则能振铃无声音。

安全设备配置速查安全更新于 2026-10-13

SIP ALG 是什么

SIP 通话的媒体通道(RTP)地址和端口写在信令报文正文(SDP)里,而不是像普通协议那样写在报文头上。NAT 只改报文头,改不到信令正文,于是出现「注册成功、能振铃、接通后没声音或单通」的典型故障。ALG(应用层网关)的作用就是解析 SIP/SDP 内容,把里面携带的私网地址端口一并替换成公网侧地址端口,并在防火墙上为媒体流动态放行。

基本信息

涉及协议SIP 信令(5060/UDP、5061/TLS)、RTP/RTCP 媒体流
设备角色IP-PBX、语音网关、视频会议 MCU、SIP 话机
开启位置出口防火墙或路由设备的 ALG 开关,随厂商默认策略不同
常见现象注册失败、能振铃无语音、单通、呼叫中断
替代方案媒体端口固定为范围后静态放行,或使用经 SBC 中转

典型使用场景

  • 总部与分支都用私网地址、经 NAT 后与运营商 SIP 中继对接
  • 视频会议终端在 NAT 后注册到云端 MCU,媒体协商失败导致黑屏或掉线
  • 呼叫中心坐席使用 SIP 软电话,外呼后只有一方能听到声音
  • 更换出口防火墙后原通话正常、新设备上通话无声,需要判断是否为 ALG 差异
  • 加密信令(SIP over TLS)与加密媒体(SRTP)场景,需要确认设备能否解析并给出替代穿透设计

排查顺序

排查顺序
# 1. 抓包看注册与呼叫流程:信令是否正常、有无 200 OK
# 2. 展开 SDP 正文,确认里携带的是私网地址还是公网地址
# 3. 对比 NAT 转换前后:信令头的 Via/Contact 与正文连接地址是否一致
# 4. 确认设备 ALG 开关状态,并核对厂商对加密信令的处理说明
# 5. 无 ALG 或 ALG 不可用时,把媒体端口固定为范围并静态放行
# 6. 先在私网内验证通话,再验证跨公网、跨运营商通话

故障现象对照

现象可能原因核查点
注册失败信令端口未放行或 Contact 地址不可达5060/5061 放行与注册报文的 Contact
能振铃无语音SDP 中媒体地址为私网,RTP 未建立SDP 连接地址与 RTP 双向包计数
单通单向媒体端口未放行或 ALG 只改了一侧两侧 RTP 收发计数与端口一致性
通话 30 秒后中断媒体空闲导致会话老化或保持报文丢失会话老化时间与 RTP 保活间隔
不同厂商 ALG 的实现与兼容性差异较大,跨厂商对接前先做小范围通话验证;若 ALG 解析不了加密信令,只能改用 SBC 中转或固定媒体端口放行。
媒体端口固定放行会扩大暴露面,建议限定来源为对端 SIP 服务商地址段,并对放行范围做台账记录,便于后续审计。

易错点

  • 只测注册不测通话,漏掉媒体通道不通的问题,上线当天才被用户投诉
  • 开启 ALG 后不验证双向语音,ALG 只改写一侧地址仍会表现为单通
  • 把媒体端口整体放开到任意源,等价于在防火墙上开了一个大洞
  • 加密 SIP 或 SRTP 流量指望 ALG 转换,实际解析不到,需提前准备替代方案
  • 会话老化时间短于媒体保活间隔时通话被静默中断,且日志里看不出丢包

数据来源与参考

  • 华为 USG6000 产品文档:SIP ALG
  • RFC 3261(SIP)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌