网络技术
NAT、STUN 与远程分机:让 SIP 话机从外网接入

三个不同的问题,常被归咎成一个——你需要知道什么?
「远程话机不能用」至少涵盖三种不同的故障,而它们的修法各不相同:
- PBX 位于 NAT 之后,远程终端找不到它。
- 话机位于 NAT 之后,PBX 无法把媒体流送回给话机。
- 两者都在 NAT 之后,前两种情况叠加,单通音频通常就出现在这里。
弄清面对的是哪一种,只需一个问题:话机能否注册?如果注册失败,问题出在找不到 PBX;如果注册成功但音频单向,问题在媒体路径上的地址转换。
路线一:打洞,手册首推的方式——你需要知道什么?
PBX 内置 NAT 穿越服务,手册将其描述为首选方式。启用后,设备会自行生成一个打洞域名,由安全访问码与设备 MAC 地址的最后六个字符组成,端口为 5090。远程话机随后注册到该域名,而不是注册到一个公网 IP 地址。
由此带来两点。第一,站点不必为 PBX 公布或维护公网 IP,也无需端口转发。第二,域名与设备绑定,更换硬件就会改变地址——这一点要提前规划,而不是等发现时当成意外。
路线二:端口映射,当策略要求如此时——你需要知道什么?
端口映射就是让 PBX 前面的路由器把流量转发给它。三个细节决定它能否成功:
- PBX 的 WAN 接口必须使用固定 IP 地址,而不是 DHCP 租约,否则转发规则最终会指向空处。
- 必须同时转发 SIP 信令端口和 RTP 端口段。默认 RTP 端口段为 10010 至 10266,每路通话占用两个端口——一个用于 RTP,一个用于 RTCP——因此四路并发通话需要开放八个端口。
- 把外部端口映射为与内网相同的编号,能为日后省掉一类问题。若公网地址是动态的,PBX 内置 DDNS 支持,手册列出了可更新的服务商列表。
如果站点既不能公布固定地址,也不能公布打洞域名,那就把远程话机限制在 VPN 内。OM20G 与 OM50G 内置 OpenVPN 客户端,手册对其用途说得很明确:把 SIP 中继连接到私有网络上的服务器,证书文件以 client.ovpn 加载。它不是面向手持机的通用远程接入 VPN。
STUN,以及修复单通音频的两个头部字段——你需要知道什么?
STUN 在本平台默认启用,使用 3478 端口,默认刷新间隔 60 秒,可设范围为 30 至 65535 秒。它提供两种行为:向 SIP 服务器重新注册,或重新注册并更新 NAT 地址。当站点的公网地址会变化时,应选择后者。
音频单向时,修复手段通常根本不是 STUN,而是 SIP 中继或分机上的两个地址类型设置:
- SIP Contact 头部地址类型——设为 LAN 或 WAN。
- SDP 连接(c=)地址类型——设为 LAN 或 WAN。
这两个设置决定 PBX 把哪个地址写进信令和媒体描述。设反了,通话会完美建立,却有一个方向完全没有音频。远程分机还应启用自动服务器检测,这样话机移动时,呼入仍能正确落地。
移动链路与难缠的网络——你需要知道什么?
当 PBX 位于蜂窝路由器之后时,平台提供四个 4G NAT 运行选项,从完全处理到既不更新 SIP 地址也不更新 SDP 地址的模式。基于蜂窝链路搭建的站点,启用前应测试双向语音;同时注意,只有 OM20G 接受 3G 或 4G USB 上网卡用于外呼——OM50G 明确不支持。
在局域网侧,远程接入并不是唯一的安全问题。PBX 支持 802.1X 端口认证、登录锁定(默认每天六次失败尝试,锁定十分钟)、最多 20 个地址的访问白名单,以及 SIP 信令与语音载荷加密选项。这些都不能替代深思熟虑的网络设计,但它们能关上那些显而易见的门。
远程分机检查清单
- 注册:服务器地址、端口(默认 5060)、用户名、认证密码。此外,话机自身的注册必须启用,并在 PBX 的 IP 分机页面上检查状态。
- 呼入音频:开启自动服务器检测,Contact 与 SDP 地址类型与实际路径匹配。
- 呼出音频:启用 STUN 并选择更新 NAT 地址的行为,RTP 端口段端到端放开。
- 其他一切:编解码顺序与 DTMF 模式与系统其余部分保持一致,让内部分机与远程分机行为相同。
在大楼外部、双向测试,并让话机使用它实际会用的网络类型。用办公室 Wi-Fi 测过的手持机,说明不了同一部手持机在家庭宽带上的表现。


