Nmap:从范围中找到免费的IP


14

有没有办法扫描网络上的免费IP?我使用,nmap -sP 192.168.1.0/24但这实际上显示主机已启动。


10
不响应ping并不一定意味着未使用。
格兰特(Grant)

1
您需要IPAM扫描仪,而不是nmap。
TheCleaner 2014年

2
@Grant Nmap的主机发现扫描(有时称为“ ping扫描”)发送许多不同的探测,而不仅仅是ICMP Echo Requests。对于同一数据链路上的地址,它使用ARP请求,这基本上是无法忽略的。
bonsaiviking 2014年

1
您还应该记住,未开机的主机也会显示为没有IP地址。
Tero Kilkanen 2014年

Answers:


26

前提条件是正确的,像这样使用Nmap是一种相当准确的方法来完成您所要求的操作:

  1. 为了发送ARP请求而不是TCP连接,您必须以root用户(或Windows上的Administrator)身份运行扫描。否则,当仅对其进行防火墙保护时,扫描可能会将地址报告为“关闭”。
  2. 您只能从与要扫描的地址范围相同的数据链路(第2层)上的系统执行此操作。否则,Nmap将需要使用可被防火墙阻止的网络层探针。

为了获得“可用”地址,您需要获取Nmap报告为“ down”的地址列表。您可以使用简单的awk命令执行此操作:

sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

使用的Nmap选项摘要:

  • 当您使用该-v选项时,Nmap会在找到“ up”地址的同时,还将其找到的地址打印为“ down”。
  • 取而代之的是-sP,我替换了较新的拼写-sn,该拼写仍然完成相同的扫描,但表示“跳过端口扫描”,而不是具有误导性的“ Ping扫描”(因为主机发现阶段不一定意味着要进行ICMP Echo扫描或Ping )。
  • -n选项跳过反向DNS查找,这会花费您一些时间,因为您对名称不感兴趣,而对IP地址仅感兴趣。
  • -oG选项告诉Nmap输出可重复格式,awk更易于处理。参数“ -”告诉它将此输出发送到stdout。

然后,awk命令搜索“状态:关闭”并显示第二个字段,其中包含IP地址。

当然,如果您有权访问交换机的运行配置或DHCP服务器的租约,则无需进行可能引起安全警报的扫描,就可以更加权威地获得此答案。


1
完全将其标记为将来使用,甚至不是我的问题:)
MartinC 2014年

1

不确定n-map,但是可以合理地假设,如果编写一个ping脚本向每个地址发送1个ping,则返回“目的地不可达”的所有主机都将被占用,而返回的任何主机均会“请求超时”被占用,但不响应ping。这两个响应之间的区别是“目标不可达”未收到对其ARP请求的响应。“请求超时”表示确实响应了ARP请求,但未响应ICMP数据包。


使用root特权运行时,Nmap仅执行ARP请求并报告响应的地址。
bonsaiviking 2014年

0

这是PowerShell中的同一件事。

((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}

0

这是另一个受Anders Larsson启发的作品

用于172.18.5。{129..254}中的ip;做{ping -c 1 -W 1 $ ip; }&> / dev / null || 回显$ ip和完成| 分类

这意味着:“尝试ping该范围内的所有Ips。如果“ ping”失败,则打印该IP”

如果你这样做

nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'

运行速度很快,但是我注意到一些报告为“关闭”的主机实际上是“启动”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.