调试 Pulse Secure SSL VPN 隧道中挂起的 HTTPS

调试 Pulse Secure SSL VPN 隧道中挂起的 HTTPS

我有一个在 Ubuntu 18.04 中运行的 Pulse VPN 客户端,当通过 HTTPS 连接到 VPN 上的网站时遇到问题。SSH 和 ping 工作正常。

Chrome 和 Firefox 都挂起,“建立安全连接”和“执行 TLS 握手”。

我尝试使用openssl检查https

robau@ubuntu:~$ openssl s_client -connect jira.mycompany.local:443
CONNECTED(00000005)

之后CONNECTED就没有再输出了。

我该怎么做才能调试出什么问题?

答案1

如果某些 ICMPFragmentation needed消息被阻止,那么您可能会遇到此问题。 SSL 握手往往会在连接初期使用大数据包,因此它们就像是煤矿中的金丝雀。关于 IPsec 开销的精彩文章:https://packetpushers.net/ipsec-bandwidth-overhead-using-aes/。IPv6 流量在其 IP 标头中使用了额外的 20 个字节,并且还要求最小 MTU 为 1280,因此 MTU 为 1000 的隧道不符合 IPv6 要求。

答案2

正如 Steffen 在评论中提到的,这似乎是一个 MTU 问题。

我通过在设置隧道后运行此命令来解决这个问题:

 sudo ifconfig tun0 mtu 1000

我的隧道的默认设置是 MTU 1400,与 Windows 用户的设置相比,我们发现他们使用的 MTU 是 1240。

编辑

我发现 MTU 的计算方法是从其他连接中获取最小 MTU,然后从中减去 100。

参考: https://community.pulsesecure.net/t5/Pulse-Connect-Secure/Manually-Set-MTU-for-Network-Connect-Pulse/td-p/40593

更多信息:

然后,我在新旧版本的 Pulse 中找到了有关计算 MTU 的更多具体信息。

在早期的 Pulse 客户端版本中(即 v5.2R2 之前),虚拟适配器 MTU 是根据物理适配器 MTU(主机的)和 PCS 发送的 MTU 计算的。

基本上,计算虚拟适配器 MTU 的公式是:

MIN(物理适配器 MTU、PCS 的 MTU、TCP MSS 值 + 40)

https://docs.pulsesecure.net/WebHelp/PCS/9.0R3/AG/Content/PCS/PCS_AdminGuide_9.0R3/Using_the_Advanced_Client.htm

我找不到其他资源,所以如果有人有更多信息,我们将非常欢迎!

相关内容