我有一个在 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。
更多信息:
然后,我在新旧版本的 Pulse 中找到了有关计算 MTU 的更多具体信息。
在早期的 Pulse 客户端版本中(即 v5.2R2 之前),虚拟适配器 MTU 是根据物理适配器 MTU(主机的)和 PCS 发送的 MTU 计算的。
基本上,计算虚拟适配器 MTU 的公式是:
MIN(物理适配器 MTU、PCS 的 MTU、TCP MSS 值 + 40)
我找不到其他资源,所以如果有人有更多信息,我们将非常欢迎!