我们的客户端有一个服务器,我们的 Web 应用程序在端口 443 和 2000 上运行。我们的客户端有两组 IP 地址。一组用于公司大楼中使用的计算机。这些计算机可以浏览这两个 Web 应用程序。另一组 IP 地址用于通过 VPN 连接进行远程连接的用户。这些用户可以浏览在端口 443 上提供的 Web 应用程序,但无法浏览在端口 2000 上提供的 Web 应用程序。他们的浏览器出现超时错误。
我们知道这不是软件问题,因为公司大楼中的用户可以毫无问题地使用这两个应用程序。他们还允许来自两个 IP 地址组的两个端口的流量。当有人使用建筑物内的计算机连接到 Web 应用程序时,防火墙软件会显示所有请求都已成功处理。但是,当他们尝试通过 VPN 连接连接到端口 2000 时,请求被发送到服务器但用户无法得到响应。防火墙软件显示“不完整”文本。请注意,仅当通过 VPN 连接请求端口 2000 时才会出现此问题。如果通过 VPN 请求端口 443,则没有问题。
我们在服务器的 2000 端口上设置了一个 TCP 回显服务器,并尝试通过 VPN 连接通过 telnet 命令连接到 2000 端口。我们看到它可以连接。但是,不会回显通过 telnet 发送的文本。如果我们在公司大楼内的计算机上尝试相同的操作,我们可以通过 telnet 连接到服务器,并且还会回显通过 telnet 发送的文本。
我们还在服务器上运行 tcpdump 命令来监听端口 2000 上的 TCP 包。当我们通过 telnet 连接到服务器时,我们可以看到来自两个 IP 组的 TCP 活动。但是,当我们通过 telnet 发送文本时,只有从公司大楼内的计算机发送的文本在 tcpdump 输出中可见。从 VPN 用户的计算机发送的消息不会在 tcpdump 上创建 TCP 活动。
我们花了很多时间,无法弄清楚问题所在。任何帮助表示赞赏。
在我对 Internet 的研究中,我发现端口 2000 用于 Cisco 的 VOIP 协议 SCCP(阅读 Skinny)。似乎某些 ISP、VPN 软件和 Cisco 防火墙可以丢弃此协议的数据包。我们将端口更改为另一个端口,问题已解决。