当 ICMP 被阻止时 ping https

当 ICMP 被阻止时 ping https

我使用禁用 ICMP 的 Web 服务器。另一方面,它们会响应一些 https 请求。我基本上是在寻找类似 http 的 ping 功能,以便检查另一台服务器是否可以访问该机器,并获取有关它的一些数据

我探索了以下选项:

  1. 编写一个网页来分析两台机器之间的连接。这意味着一台机器将尝试浏览该网页。它将提供一些有关连接速度等的信息。这被从表中删除,因为这个网页基本上需要运行某种类型的 Web 应用程序。我没有时间开发它。- 如果您知道现有技术,请告诉我。

  2. 在网络服务器上托管文件并尝试下载。无法提供我想要的所有数据。浏览器通常会混淆所有“有趣”的内容。

  3. 使用类似 www.coretechnologies.com/products/http-ping/ 的某种 ping 实用程序,但由于某种原因,它无法处理合作 LAN 的重定向,因此我无法使用它。(我发出了一个请求,但答案是 0 字节,并带有 302 重定向回复)。您知道其他方法吗?

请告知您是否可以使其中一种解决方案发挥作用,或者我在第 3 节中建议的实用程序的使用有缺陷,或者您是否有其他想法。

更新:

所有系统均基于 Windows。

答案1

您可以使用普斯平
http://technet.microsoft.com/en-us/sysinternals/jj729731.aspx

psping -q -i 0 -n 500  google.com:443

答案2

您可以使用 openssl 尝试查看是否可以打开 SSL 会话:

[joeuser@host ~]$ openssl s_client -quiet -status -connect google.com:443
depth=2 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
verify return:1
depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = www.google.com
verify return:1

如果无法获取 SSL 会话,它将返回以下内容:

[joeuser@host ~]$ openssl s_client -quiet -status -connect google.com:80
3078973148:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:699:

在 Windows 上:

C:\OpenSSL-Win32\bin>
C:\OpenSSL-Win32\bin>openssl.exe s_client -quiet -status -connect www.google.com
:443
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
Loading 'screen' into random state - done
depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0

C:\OpenSSL-Win32\bin>openssl.exe s_client -quiet -status -connect www.google.com
:80
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
Loading 'screen' into random state - done
2096:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:.\ssl\s
23_clnt.c:683:

答案3

如果您安装了 lynx,它支持 https::,您可能可以使用此命令功能编写一个脚本。

Lynx 基本上是一个纯文本浏览器。

答案4

我可能假设错误,但我认为您的最终目标是测试连通性,对吗?telnet 和 netcat 都非常适合此目的。您可以通过在侦听端口上建立连接然后断开连接来进行测试。Telnet 更适合手动过程或需要交互的过程。听起来您需要一些可以编写脚本的东西,所以我更喜欢 netcat。

nc -z yourhostname port -或者-
nc -z www.google.com 80

预期输出为:
Connection to www.google.com 80 port [tcp/http] succeeded!

这对于 443/https 或您需要测试的任何其他服务同样有效。nc 的返回值将指示它是否成功,因此您可以将其合并到脚本中。

Windows 原生支持 telnet,您可以下载 Windows 版本的 netcat 或使用 Cygwin。

相关内容