在维护 Azure 虚拟机的过程中,可能会遇到一些网络连通性的问题。例如,当您尝试从个人 PC 上 ping 虚拟机的公网 IP 地址时,可能会发现出现 “Request time out” 的信息,导致无法 ping 通。这种情况的发生,通常是因为在 Azure 环境中,出于安全考虑,ICMP 包被设计为无法通过防火墙和负载均衡器。这就导致了传统的 ping 命令无法直接用于测试 Azure 中虚拟机和服务的连通性。
正是在这样的背景下,我首次接触到了 PsPing —— 一款强大的网络测试工具,由微软 Sysinternals 套件提供。PsPing 不仅继承了传统 ping 命令的功能,还扩展了 TCP ping、延迟测试和带宽测量等高级特性,使其成为解决 Azure 网络测试难题的理想选择。
下载安装
下载地址:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/psping
-
下载完PSTools.zip包之后,放到任意本地磁盘(例:C:\Windows\PSTools )内,解压之后如下:
-
将解压地址放到环境变量的PATH中
-
使用CMD命令行工具,输入psping,可见psping四个主要功能的帮助命令,四个功能分别是ICMP Ping、TCP Ping、延迟测试、带宽测试。
使用方法
-
ICMP ping
命令psping -n 10 -w 2 www.baidu.com
使用了 PsPing 工具的两个参数-n
和-w
来对www.baidu.com
进行网络测试。
下面是该命令参数的详细解释:-
-n 10
:这个参数指定了 PsPing 将发送的 ECHO 请求的数量。在这个例子中,PsPing 将发送 10 个 ICMP 或 TCP 请求到目标主机。这个选项可以用来测试一定数量级的网络响应情况。 -
-w 2
:这个参数后面跟的数字代表 “热身” 测试的数量,即在正式的测试之前进行的测试次数。热身测试有助于初始化网络连接,避免因连接建立时间导致的延迟测量不准确。在这个例子中,PsPing 会先发送 2 个热身请求,然后才开始计算测试结果。 -
www.baidu.com
:这是 PsPing 测试的目标主机名。PsPing 将尝试解析这个域名到相应的 IP 地址,并对该地址执行指定数量的网络请求。
总结来说,该命令将对
www.baidu.com
执行总共 12 次(10次正式测试 + 2次热身测试)的网络连通性测试,测试结果将基于这 10 次正式测试的数据生成。 -
-
TCP ping
命令psping -n 10 -w 2 www.baidu.com:443
使用 PsPing 工具对www.baidu.com
网站的端口443
执行特定的网络测试。下面是该命令各部分的详细解释:-
-n 10
:此参数指定 PsPing 将发送的 ECHO 请求或探针的数量。在这个例子中,PsPing 将向目标发送 10 个请求。这些请求可以是基于 ICMP 的(如果 ICMP 未被阻止)或者是 TCP 连接尝试(如果 ICMP 被阻止或未响应)。 -
-w 2
:这个参数定义了在主要测试序列开始前的 “热身” 请求数量。热身可以帮助确保网络连接已经建立,并且任何网络设备都已经准备好处理即将到来的测试流量。在这个例子中,PsPing 将首先发送 2 个热身请求。 -
www.baidu.com
:这是要进行网络测试的目标主机的域名。PsPing 将尝试解析这个域名到相应的 IP 地址。 -
:443
:指定了目标端口号443
。端口443
通常用于 HTTPS 连接,这意味着 PsPing 将尝试建立到www.baidu.com
的安全 HTTP 服务端口的 TCP 连接。
综上所述,该命令将向
www.baidu.com
的 HTTPS 端口443
发送 12 次请求(包括 2 次热身请求和 10 次正式测试请求)。这些请求将用于测量到目标端口的网络延迟、检查连接稳定性以及评估目标端口的可达性。如果 ICMP 请求在网络中被阻止,PsPing 将使用 TCP 来执行测试。在这种情况下,PsPing 尝试与指定端口建立 TCP 连接,以此来模拟传统 ICMP ping 的功能。输出结果将提供关于每个请求的延迟时间,以及可能发生的错误或超时信息。
-
-
延迟分析
-
先用PSPING起一个服务
命令psping -s 10.2.12.129:888
用于启动 PsPing 工具的服务器模式,其参数-s
后面跟随的是指定的 IP 地址和端口号。下面是该命令各部分的详细解释:-
-s
:这个参数告诉 PsPing 以服务器模式运行。在服务器模式下,PsPing 将在指定的 IP 地址和端口上监听传入的连接请求,而不是主动发送请求到远程服务器。 -
10.2.12.129
:这是 PsPing 服务器模式下要监听的 IP 地址。您需要确保该地址是分配给运行 PsPing 的主机的接口上的一个有效 IP 地址。 -
:888
:这是 PsPing 将在其上监听的端口号。端口888
在这个上下文中被指定为 PsPing 将等待客户端连接的网络端口。
综上所述,该命令将 PsPing 设置为在 IP 地址
10.2.12.129
的端口888
上作为一个服务器,准备接受来自网络上其他 PsPing 客户端的连接请求。这可以用于进行延迟和带宽测试,而无需主动 ping 远程主机。 -
-
客户端访问
命令psping -l 8k -n 10000 10.2.12.129:888
是 PsPing 工具的一个使用示例,它结合了几个不同的参数来执行网络性能测试。下面是该命令各部分的详细解释:-
-l 8k
:此参数指定了发送的每个数据包的大小。-l
后面跟随的8k
表示每个数据包的大小为 8 kilobytes(千字节)。这是进行带宽测试或延迟测试时使用的负载大小。 -
-n 10000
:此参数定义了要发送的请求或数据包的总数。在这个例子中,-n 10000
表示 PsPing 将发送 10,000 个数据包。 -
10.2.12.129:888
:这是目标服务器的 IP 地址和端口号。IP 地址10.2.12.129
是测试将要发送数据包到的服务器的地址,而:888
指定了服务器上用于接收这些数据包的端口。
-
-
-
带宽分析
命令psping -b -l 8000k -n 10000 10.2.12.129:888
用于执行网络带宽测试,具体参数解释如下:-
psping
:这是启动 PsPing 工具的命令。 -
-b
:此参数指示 PsPing 执行带宽测试。带宽测试会尝试衡量网络链路的最大传输速率。 -
-l 8000k
:此参数指定了每个测试数据包的大小。-l
后面跟随的8000k
表示每个数据包的大小为 8000 kilobytes(千字节),即 8 兆字节(MB)。这比一般的 ICMP ping 数据包大得多,因此可以用于测试网络在传输大量数据时的性能。 -
-n 10000
:此参数定义了要发送的测试数据包的总数。在这个例子中,PsPing 将发送 10000 个大小为 8000k 的数据包。 -
10.2.12.129:888
:这是目标服务器的 IP 地址和端口号。IP 地址10.2.12.129
是测试将要发送数据包到的服务器的地址,而:888
指定了服务器上用于接收这些数据包的端口。
-
·图中返回结果显示:总共发了8个T,最大速度711.71 MB/s, 平均135.83 MB/s。
PSTools
PsTools 套件是免费的,常用于系统管理员和 IT 专业人员的工具箱中,用于执行各种系统管理和故障排除任务。这些工具可以在命令行环境下提供强大的功能,帮助用户处理日常的系统管理任务,如远程执行服务管理、监控进程活动、查询系统信息等。除了上面介绍的psping这个工具外,PSTools还包含以下功能:
psexec:在远程系统上执行程序,相当于远程运行命令提示符中的命令。
psfile:显示打开的文件及其拥有者,或者显示特定文件被哪些进程打开。
psgetsid:显示用户账户的 SID(安全标识符)。
psinfo:显示本地或远程系统的信息,如 CPU 类型、物理内存、操作系统版本等。
pskill:结束一个或多个正在运行的进程。
pslist:显示运行在远程系统上的进程列表。
psloggedon:显示当前登录到本地或远程 Windows 系统的用户。
psloglist:显示 Windows 事件日志中条目的摘要。
pspasswd:远程更改计算机的密码。
psservice:管理和查询 Windows 服务,包括启动、停止、暂停和继续服务。
psshutdown:关闭或重新启动远程系统。
pssuspend:挂起或恢复一个或多个在运行的进程。
参考
- https://learn.microsoft.com/zh-cn/sysinternals/downloads/psping
- https://learn.microsoft.com/zh-cn/sysinternals/downloads/pstools