以太网LAN上任何运行良好的设备都可以随意忽略几乎所有流量,因此PING,端口扫描等都不可靠。但是,设备不能随意忽略ARP请求 afaik。假定您指定要扫描本地网络,那么我发现执行操作所需的最不易碎的方法是尝试连接到远程地址,然后查看我的ARP缓存。
这是一个简单的非过滤设备(即未配置为忽略某些IP流量类的设备):
[me@risby tmp]$ ping -c 1 -W 1 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=0.351 ms
[...]
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.1
? (192.168.3.1) at b8:27:eb:05:f5:71 [ether] on p1p1
这是一个过滤设备(一个配置有一行iptables
以忽略所有流量的设备):
[me@risby tmp]$ ping -c 1 -W 1 192.168.3.31
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.31
? (192.168.3.31) at b8:27:eb:02:e4:46 [ether] on p1p1
这是一台跌倒的设备;请注意缺少MAC地址:
[me@risby tmp]$ ping -c 1 -W 1 192.168.3.241
[...]
1 packets transmitted, 0 received, 100% packet loss, time 0ms
[me@risby tmp]$ arp -a -n|grep -w 192.168.3.241
? (192.168.3.241) at <incomplete> on p1p1
这种方法并非万无一失-一方面它会丢失已关闭的设备,但这是我尝试过的最不可怕的方法。
编辑:埃里克·杜米尼尔(Eric Duminil),是的,它仅适用于本地网络;参见第一段。
可见,这些方法在功能上是相同的。请注意Leo的答案中引用的文本nmap
:
当特权用户尝试扫描本地以太网上的目标时,除非--send-ip
指定,否则将使用ARP请求。
他的方法涉及较少的打字。我的工作可以毫无特权地完成,并且可以使您更好地了解实际情况。但是,在两种情况下,电线上都会做同样的事情。