DNS 问题导致批量话机呼叫突然终止

1. 问题现象

客户现场使用多台 Yealink IP 话机,包括:

  • Yealink SIP-T46S
  • Yealink SIP-T41S
  • 固件版本:66.86.0.180

这些话机出现随机掉话问题。

主要现象是:

  • 通话过程中会随机断开
  • 一旦掉线,所有正在进行的通话都会同时断开
  • 不是单独某一台话机掉线,而是现场所有实时通话一起掉线

这一点非常关键:

如果所有实时通话同时掉线,通常不应优先怀疑单台话机或某个型号固件,而应重点检查 SBC、网络、DNS 或互联网连接。

2. 现场部署环境

该环境的部署方式如下:

  • 3CX 版本:Version 20.0 Update 7,Build 1080 Release
  • 3CX PBX:托管在客户现场外部
  • 客户现场:本地部署 3CX SBC
  • SBC 系统:Windows Server 2024
  • SBC 版本:最新版本
  • 防火墙:FortiGate
  • SIP ALG:已禁用
  • 话机通过本地 SBC 连接到外部托管的 3CX PBX

3. SBC 日志中的异常

用户在 SBC 上看到类似错误:

[DNS] Failed to retrieve SRV records for _3cxtunnel._tcp.(our_3cxHostname); errcode=12

以及:

TunnelTcp.cpp:305 | Bridge failure on while processing TCP: Connection timeout

这两个日志非常重要。

第一个错误说明:

  • SBC 在解析 3CX Tunnel 相关 SRV 记录时失败
  • 问题可能与 DNS 查询、DNS 服务器配置、DNS 响应或外部解析有关

第二个错误说明:

  • SBC 到 3CX PBX 的 Tunnel / TCP 连接处理过程中出现超时
  • 这表示 SBC 与云端 PBX 之间的连接可能不稳定或被中断

4. 3CX 支持的初步判断

3CX 支持人员指出:

这个问题可以暂时忽略话机本身。

原因是:

  • 用户提供的证据并不指向 Yealink 话机
  • 日志更明显地指向 SBC 连接问题
  • SBC 连接一旦掉线,现场所有通过 SBC 的话机通话都会受到影响

3CX 支持重点指出两个红旗信号:

  1. DNS 错误
  2. Connection timeout 连接超时

因此,排查方向应转向:

  • SBC 所在主机
  • 本地网络
  • DNS 设置
  • 互联网连接
  • 客户后端 ISP

5. 用户原计划:移除 SBC,改用 FQDN 直连

用户表示,他们准备移除 SBC,让话机直接通过 3CX FQDN 连接到外部托管的 PBX,看看是否改善。

也就是准备从:

话机 → SBC → 3CX PBX

改为:

话机 → 防火墙 / NAT → 3CX PBX FQDN

6. 3CX 支持反对移除 SBC

3CX 支持明确指出:

移除 SBC 可能会让问题更糟。

原因是:

  • 原有网络问题仍然存在
  • 直接让话机通过 FQDN 连接外部 PBX,会额外引入 NAT 问题
  • 还可能引入防火墙和 SIP ALG 相关问题
  • 如果根因是 DNS 或互联网线路不稳定,去掉 SBC 并不能解决根因

正确方向应该是:

继续围绕 SBC 连接为什么会掉线进行排查。

也就是说,不要因为话机掉线就直接绕过 SBC,而应先确认:

  • SBC 到 3CX PBX 的连接为什么会 timeout
  • SBC 使用的 DNS 是否正确
  • 客户互联网线路是否稳定
  • ISP 是否存在解析或链路异常

7. 最终原因

用户后来确认,问题原因是:

  • 客户后端互联网服务商存在问题
  • DNS 没有正确设置

修复后,问题解决。

这说明最初 SBC 日志中的 DNS 错误和连接超时是有效线索。

8. 最终结论

该案例的真正问题不是 Yealink 话机,也不是 SIP ALG。

真正原因是:

客户现场 SBC 到外部 3CX PBX 的网络链路存在问题,尤其是 DNS 配置错误和后端互联网服务商问题,导致 SBC Tunnel 连接中断,从而造成所有通过 SBC 的实时通话同时掉线。

9. 技术排查步骤总结

遇到类似“多台话机同时掉线”的问题,可以按以下顺序排查:

  1. 观察是否是单台话机掉线,还是所有通话同时中断
  2. 如果所有通话同时中断,优先检查 SBC 和网络链路
  3. 查看 SBC 日志是否有 DNS 解析错误
  4. 查看 SBC 日志是否有 Tunnel / TCP timeout
  5. 确认 SBC 主机的 DNS 设置是否正确
  6. 确认 SBC 主机能稳定解析 3CX FQDN
  7. 检查 SBC 到 3CX PBX 的网络连接是否稳定
  8. 检查 FortiGate 或其他防火墙是否阻断相关连接
  9. 确认 SIP ALG 已关闭
  10. 检查客户 ISP 或上游网络是否存在异常
  11. 不要轻易移除 SBC 改为 FQDN 直连,否则可能额外引入 NAT 和防火墙问题