我正在使用 ping 命令来了解远程机器是否已打开。但问题是,如果防火墙已打开,远程机器将不接受 ping 命令(ICMP 数据包),并且会假定远程机器已关闭,因为 ping 状态返回 false。假设防火墙已打开,是否有其他方法可以知道远程机器是否已打开。
答案1
答案2
如果另一台计算机位于同一局域网中,即使它阻止了,它仍应响应 ARP 请求ping
。在这种情况下,您可以尝试使用类似 的方法arping
。更多详情请参阅维基百科。
在更大的网络上,如果没有主机的配合,我想不出一种可靠的方法来判断主机是否开启。
答案3
如果防火墙还不错,那么就没有办法检查这一点。防火墙的重点在于,如果你发送的数据包被拒绝,你根本无法获得有关接收服务器状态的任何线索:核心思想是你无法区分以下两种情况
1)服务器不存在,并且
2)防火墙阻止了你。
为了判断远程服务器是否打开,您必须决定服务器将响应的某个端口,并在防火墙上打开适当的漏洞。
答案4
我这样做的方法是启动与已知开放端口的 TCP 连接。如果是 Web 服务器,它将在端口 80(或 443)上响应。肯定响应表示机器处于活动状态。否定响应表示可能存在许多问题之一,例如网络连接、防火墙配置不正确、服务中断或机器停机。
如果您正在设置监控,并且只想知道何时关注机器,只需依靠已知开放的端口即可。至少如果它停止响应,您就会知道发生了什么事。