![pfSense 背后的 Skype for Business 呼叫在五秒后掉线](https://linux22.com/image/727151/pfSense%20%E8%83%8C%E5%90%8E%E7%9A%84%20Skype%20for%20Business%20%E5%91%BC%E5%8F%AB%E5%9C%A8%E4%BA%94%E7%A7%92%E5%90%8E%E6%8E%89%E7%BA%BF.png)
我遇到了 Skype for Business (Lync) 在 pfSense 防火墙后面 5 秒后断开连接的问题。这是一个奇怪的问题,我向 Microsoft 提交了工单,但到目前为止,这毫无结果。以下是信息:
问题陈述:
- 如果 Lync 呼叫从我们的办公室内部发起,并发往远程 VPN 用户,则呼叫将通过双向音频连接,但在 5 秒后会因“网络错误”而断开连接。如果远程用户呼叫办公室用户,则没有问题。
- 如果办公室用户尝试演示/共享其桌面,演示将开始,然后在 5 秒后因“网络错误”而停止。同样,远程用户可以毫无问题地与办公室用户共享。
相关信息:
- 这是基于云的 Office365 部署。没有本地服务器。
- 之前,我们有一个 Fortigate 防火墙。Lync 运行良好。
- 我们的远程用户使用在网关后面的 pfSense 盒上运行的 OpenVPN 进行连接。
- 启用拆分隧道,因此来自远程用户的所有 Internet 流量都应直接传输到 Internet。
- 任何防火墙均未启用过 SIP ALG。
- 我们的 ISP 更改了我们的公共 IP 地址空间。大约在同一时间,我们用 UniFi USG Pro 替换了 Fortigate,并且它工作了几个月。
- 由于配置没有(明显的)变化,我们的远程用户(通过 VPN 连接)开始遇到问题。
- 由于与此问题无关的原因,我们认为 UniFi 不够灵活,无法满足我们的需求。我们安装了 pfSense 服务器作为主要网关设备。
- 现在,VPN 用户直接连接到网关,而不是网络内的服务器。
- 通过此配置,几周以来一切正常。我们认为问题一定与UniFi有关。
- 然后,没有任何配置更改,问题再次出现,并且现在仍然存在。
我尝试过的事情:
- 更改 VPN 用户的内部 IP 地址范围 - 没有影响。
- 在不同的 WAN 接口(和不同的 ISP)上设置 VPN 服务器并让用户连接到该服务器 - 没有影响。
- 已测试从内部工作站到 52.112.0.75 的 STUN/TURN。(Lync TURN 服务器)- 成功
- 已测试从 VPN 连接的工作站到 52.112.0.75 的 STUN/TURN。(Lync TURN 服务器)- 成功
- 设置防火墙以允许来自办公室网络的所有出站流量 - 无影响。
- 设置防火墙以允许来自 VPN 接口的所有流量 - 没有影响。
- 设置防火墙来阻止并记录公司网络和 VPN 网络之间的 STUN 流量 - 没有影响。
这个问题 100% 都会发生,而且很容易重现。我收集了通话双方的网络捕获,并向 Microsoft 发送了诊断日志。他们给了我一份很长的 IP 地址列表,让我将其列入防火墙的白名单,但我目前没有阻止任何出站流量。他们还显示了一条日志消息,其中显示对 52.112.0.75 的 STUN 请求失败,并显示“401(未授权)”消息,但是,该失败之后是成功绑定到同一地址的 STUN,所以我认为这是转移注意力的借口。我还使用 PowerShell 脚本从双方的计算机测试了 STUN,两个请求都成功了。此外,此错误发生在通话开始 3.5 秒后,几毫秒后查询成功。我认为这是预期的失败。
就在通话失败时,我确实看到几个设置了 RST 标志的 TCP 数据包,它们来自与其他 Lync 相关流量相同的 IP 块。(52.112.0.0/16)同样在这个时候,我看到流量直接来自远程用户的 IP 地址。具体来说,UDP 流量的目标端口为 3478,即 STUN。
理论:
每个客户端都直接连接到云中的 Lync 服务器。几秒钟后,该服务器尝试协商两个客户端之间的直接 SIP 连接(因此产生 STUN 流量),但失败了。Microsoft 特别不推荐通过 VPN 进行直接连接,所以我甚至不知道它为什么要这样做,如果我知道如何做,我会阻止它。
这个问题已经困扰了我好几个星期了,如有任何意见我将不胜感激。