我经常使用ping
命令来检查某个网站是否可用,或者我是否可以访问某台机器,所以基本上主要用于诊断,如果我可以指定这些 ICMP 回显转到哪个端口,那真正有用的是什么?有没有办法用这个命令ping
或其他工具让我可以轻松地做到这一点,而不必手动生成数据包?
例如,一个选项是创建一个自定义 ICMP 数据包,设置为转到特定端口,然后我可以使用bittwist
它来发送它,并Wireshark
监视是否收到任何返回,但每次都这样做似乎有点麻烦,所以我想知道是否有更简单的路线?
答案1
IIRC 您无法向特定端口发送“ping”数据包。
在一个端口上,有一个“软件”在监听。这个软件会实现它自己的协议 - HTTP、SMTP、FTP,甚至一些自己的协议。
这些服务器不会响应 ICMP 数据包。ICMP 数据包需要发送到 ICMP 端口。
但是,您可以尝试打开一个 TCP 连接(telnet host 12345
)并查看连接是否成功。
答案2
下面是如何 ping 网络上的特定 IP 端口的示例:
- 下载并安装地图。
- 运行
ifconfig -a
以识别您的网络拓扑;终端输出应显示跟踪到您的命令行的主机 IP 地址,显示在“inet”之后(例如inet: 10.0.0.2
)。 - 现在打开 nMap 工具通过运行
nmap -sP network-ip-address topology/24
(例如nmap -sP 10.0.0.1/24
)来扫描您的网络;这应该显示连接到网络的所有主机。 - 找到您要 ping 的端口的主机 IP 地址;例如,如果您的网络在 IP 地址为 的路由器上托管 VPN 服务器
10.0.0.233
。首先,尝试通过运行nmap -sn host-ip-address
(例如nmap -sn 10.0.0.233
) 来 ping 该地址 - 终端输出应返回服务器处于启动或关闭状态的报告。 - 但是,有时主机可能只有在您通过运行 ping 特定端口时才可见或可识别
nmap -Pn port-number ip-address
;例如,只有当我们 ping 路由器上的特定端口时,才可能追踪目标路由器 - 在本例中为 OpenVPN 的 UDP 端口 1143(例如nmap -Pn 1143 10.0.0.233
)。上述命令应确认端口在终端输出中处于打开状态,即使根据 nmap 端口扫描的初始运行,主机表面上处于关闭状态。
希望这有帮助——它帮助了我!