![Citrix NetScaler 为 SSL VPN 客户端发送 FIN、ACK](https://linux22.com/image/661145/Citrix%20NetScaler%20%E4%B8%BA%20SSL%20VPN%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E9%80%81%20FIN%E3%80%81ACK.png)
我意识到这里不太可能有人有明确的“选中此框来解决这个问题”的答案,但我正在努力解决这个问题,我希望比我更有知识的人可以给我更多的见解或者一些值得寻找的术语和短语。
我正在调查一些嵌入式设备的一个奇怪问题 - 长话短说,其中一些设备(可能运行特定的固件版本)无法通过 NetScaler SSL VPN 连接使用。
这确实只是顺便提一下,但在故障排除过程中,我注意到了一些我想了解更多信息的事情。
为了测试,我设置了一个快速 IIS 服务器,以便我可以运行 WireShark,并且根据我是否通过 VPN 获得略有不同的流量(同一台机器,使用 RAW 模式下的 Putty)。
因此,从我的 IIS 服务器 (下面的 .117) 上的 WireShark 来看:
如果没有 VPN,我从客户端获得以下流量:
SYN
ACK
[Nothing happens, until I type "GET / HTTP/1.1" into Putty]
HTTP GET
ACK
FIN, ACK
通过 VPN,我从客户端获得:
SYN
FIN, ACK
[Nothing happens, until I type "GET / HTTP/1.1" into Putty]
HTTP GET
ACK
FIN, ACK
从我的测试来看,我相信一定是 NetScaler 发送了那个虚假的 FIN(我已经从 DMZ 中的一台机器通过相同的防火墙等进行了测试,并且它没有这个消息)并且我认为嵌入式设备可能不喜欢它,这并非不可能。
那么,有人能解释一下 NetScaler 为什么这样做以及我该如何改变它吗?我推测这是一个 TCP 配置文件配置,但我似乎无法弄清楚。
我附上了两张捕获截图 - 两张捕获截图都使用了相同的客户端 <-> 服务器和相同的方法 (Putty)。唯一的区别是我是否通过 SSL VPN 连接。
更新 1
一时之间,我改变了 Web 服务器,让它监听端口 81,而不是端口 80。有了这种配置,握手是正确的,没有虚假FIN
消息。这让我相信这与 NetScaler 上的 HTTP 优化有关