以太网LAN上任何表现良好的设备都可以随意忽略任何流量,因此PING,端口扫描等都是不可靠的.但是,设备不能自由地忽略
ARP requests,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 on p1p1
这种方法并非绝对可靠 – 它错过了被关闭的设备,但事实上它是我尝试过的最不可靠的方法.
编辑:Eric Duminil,是的,它只适用于本地网络;见第一段.
Vishal,这些方法在功能上是相同的.请注意Leo关于nmap的回答中引用的文字:
When a privileged user tries to scan targets on a local ethernet network, ARP requests are used unless --send-ip was specified.
他的方法涉及较少的打字.我可以在没有特权的情况下完成,并且可以让您更好地了解实际发生的事情.但在两种情况下都在线上完成同样的事情.