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