我正在尝试排除运行 Windows 2003 服务器的企业网络防火墙内的自定义应用程序故障。我们的应用程序使用 PHP/cURL 将 XML 数据发送到公开托管的网站。默认情况下,无法在此服务器上使用浏览器;但是,该应用程序的早期版本能够通过端口 80 出站(尽管浏览器已锁定)。
我需要一种简单的方法来确定是否可以通过端口 80 或端口 443 到达特定目的地(例如http://www.foo.com/other/import-xml?md87t9=g456342135kj5f7)
在与客户合作更改他们的防火墙/网络过滤设置之前,我想验证这一点。
答案1
您需要一个在该地址上运行该端口服务的系统,并且该系统不能阻止传入流量。如果是这样,那么您需要尝试以某种方式在该端口上与正在监听的服务进行通信。这是唯一 100% 可靠的方法,无需知道双方确切的防火墙配置。
但是,如果您遇到的唯一问题是无法使用浏览器,并且您尝试从 Windows Server 2003 进行测试,则可以使用 telnet 发出手动 HTTP 请求。在命令提示符中尝试此操作:
telnet yourserver.com 80
然后按一次 ENTER,然后准确输入(您将看不到所输入的内容):
GET / HTTP/1.1
然后按 ENTER。
如果网络服务器正在监听该端口且可以访问,您将收到一堆 HTML。否则,连接将超时。
答案2
Firebind 是一款基于云的网络路径验证工具,它使用 Java 小程序客户端通过您的计算机和 Firebind 服务器之间的任何 TCP 或 UDP 端口发送数据包。这提供了出站(专用网络到互联网)方向的测试。
您可以选择 65535 个 TCP 或 UDP 端口中的任意一个(或者如果您愿意,甚至可以选择所有端口)进行测试。Firebind 会动态打开服务器端的端口,以“监听”来自 Java 小程序客户端的测试流量。如果测试数据包完好无损地到达服务器,然后成功回传到客户端,则端口测试将成功。如果有任何类型的防火墙阻止给定端口,Firebind 将报告失败。对于 TCP 协议,它甚至会告诉您它是如何被阻止的(例如 TCP DROP/超时或 TCP RESET/拒绝)。