我曾经使用可以 ping 或在机器上运行端口扫描的应用程序,即使机器被配置为不允许它。
我目前正在尝试 ping 我们 WAN 上的远程机器,但我已将机器配置为不允许 ping。我可以使用类似于 ping 的东西吗?
同样,这是一台位于另一个城市的机器,它是我们 wan 的一部分。
我曾经使用可以 ping 或在机器上运行端口扫描的应用程序,即使机器被配置为不允许它。
我目前正在尝试 ping 我们 WAN 上的远程机器,但我已将机器配置为不允许 ping。我可以使用类似于 ping 的东西吗?
同样,这是一台位于另一个城市的机器,它是我们 wan 的一部分。
对容器有用的答案
Ping 是 ICMP,如果你阻止了 ICMP,你就无法 ping。
如果您接受 TCP/UDP 连接,您可能仍然能够测试 TCP 或 UDP 端口。
如果您在缺少 ping、nc、telnet 和其他工具的容器上运行测试,您可以使用这个技巧:
这将尝试通过设备通过 tcp/udp 进行连接(哇,我知道),如果端口打开则回显“打开”,如果端口关闭则回显“关闭”。
在这种情况下,它会在回显“关闭”之前挂起一段时间。
您可以 telnet 到机器上打开的 tcp 端口。例如,如果这台机器是 Web 服务器,并且开放了 80 端口,那么:
这甚至适用于加密端口(尽管您将无法理解数据)
其他一些可以尝试的端口是:
( Linux 机器上的/etc/services中有一个端口/服务列表)
在远程机器上运行 SNMP 代理,并使用管理器从标准 MIB 中读取其中一个值。
如果您使用 XP/2003+(包括 Vista/2008/7),那么您可以使用Win32_PingStatus。运行脚本代码的机器是唯一需要 XP/2003+ 的系统,它的工作方式与使用 Ping.exe 一样,只是它不使用 ping.exe,因此它应该成为您的安全设置的漏洞不允许执行 ping.exe。
有关如何使用 Win32_PingStatus 的更多信息,请参阅脚本专家文章:
http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx
如果您可以访问与目标计算机位于同一 LAN 上的另一台计算机,则可以使用arping。
Arping 通过发送针对机器的 ARP 数据包来工作,这非常有效,因为如果你想使用网络,你不能阻止 arp 数据包(嗯,你可以在任何地方设置静态 arp 表:D)但缺点是你必须在与您的 arping 目标相同的 LAN。
解决此问题的简单方法是使用 netcat 实用程序。这种情况的唯一先决条件是应该知道至少一个在该远程计算机上打开的端口。
nc -nv ip_address 端口号
上面的命令将给出一个结果,这将确定所述端口是否打开,从而确定机器的可用性
如果您没有防火墙和路由器,即,如果您与您要检查的主机位于同一网段 - 以上大多数解决方案都有点详尽恕我直言。
连接到哪个端口并不重要,事实上,如果您连接到一个不太可能运行服务的端口,您可以在不被发现的情况下完成工作。
如何?
您可以使用任何您喜欢的工具,但我们可以使用 telnet...
这应该立即发生,除非主机正在丢弃数据包。实际发生的是主机上的 TCP/IP 堆栈正在向您发送回一个设置了 RST 位的 TCP 段 - 即终止您的 SYN 数据包。
您收到一个 RST 数据包的事实意味着在另一端确实有一个主机,并且作为奖励 - 您这样做未被检测到(TCP/IP 没有上层应用程序可以谈论这个连接) .
然而,我可能会使用 scapy 之类的东西,而不是 telnet,写一些寻找 RST 标志的东西,然后让你知道。
只是为了完成此操作,如果您尝试的 IP 上没有主机 - 它会挂起一段时间,并且超时 -如果接收主机具有带丢弃过滤器的防火墙,则会发生同样的事情。
如果涉及防火墙,那么正如其他人所建议的那样,使用
nmap
诸如此类的工具。机器上有可用的服务吗?查看机器是否存在的一种方法是使用 telnet 客户端连接到它,但更改您需要访问的端口。
因此,假设机器正在运行 MS SQL,默认情况下在端口 1433 上运行。您使用以下命令
如果 Telnet 连接机器启动并运行,并不意味着它运行正常,但仍在监听该端口
我在
seq 1 65535
;做 tcpconnect -v 远程主机 $i ;完毕nmap -T5 -sS -P0 ho.st.ip.addr 这将查看该机器上可用的端口。如果您在 Windows 上运行或无法访问 linux 机器,建议安装 cygwin。