HTF Asked: 2014-04-05 05:32:46 +0800 CST2014-04-05 05:32:46 +0800 CST 2014-04-05 05:32:46 +0800 CST Nmap:从范围内查找空闲 IP 772 有没有办法扫描网络上的免费 IP?我使用nmap -sP 192.168.1.0/24,但这实际上显示主机已启动。 nmap 4 个回答 Voted Best Answer bonsaiviking 2014-04-05T05:56:54+08:002014-04-05T05:56:54+08:00 像这样使用 Nmap 是一种相当准确的方式来做你所要求的,前提是一些先决条件是真实的: 您必须以 root(或 Windows 上的管理员)身份运行扫描才能发送 ARP 请求,而不是 TCP 连接。否则,扫描可能会在简单地设置防火墙时将地址报告为“关闭”。 您只能从与您正在扫描的地址范围相同的数据链路(第 2 层)上的系统执行此操作。否则,Nmap 将需要使用可以被防火墙阻止的网络层探测。 为了获取“可用”地址,您需要获取 Nmap 报告为“关闭”的地址列表。你可以用一个简单的 awk 命令来做到这一点: sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}' 使用的 Nmap 选项总结: 当您使用该-v选项时,Nmap 会将它找到的地址打印为“向下”以及“向上”的地址。 而不是-sP,我替换了较新的拼写-sn,它仍然完成相同的扫描,但意味着“跳过端口扫描”而不是误导性的“Ping 扫描”(因为主机发现阶段并不一定意味着 ICMP Echo 扫描或 Ping )。 该-n选项会跳过反向 DNS 查找,这会为您争取一些时间,因为您对名称不感兴趣,而只对 IP 地址感兴趣。 该-oG选项告诉 Nmap 输出grepable格式,这对 awk 来说更容易处理。参数 " -" 告诉它将此输出发送到标准输出。 然后 awk 命令搜索“Status: Down”并打印包含 IP 地址的第二个字段。 当然,如果您有权访问交换机的运行配置或 DHCP 服务器的租约,则无需进行可能引发安全警报的扫描即可更权威地获得此答案。 MartinC 2014-04-05T05:40:25+08:002014-04-05T05:40:25+08:00 不确定 n-map,但可以合理地假设,如果您编写一个向每个地址发送 1 个 ping 的 ping 脚本,则返回“无法访问目标”的任何主机都未被占用,并且返回“请求超时”的任何主机被占用但不响应 ping。两个响应之间的区别在于“destination unreachable”没有收到对其 ARP 请求的响应。“请求超时”意味着某些东西确实响应了 ARP 请求,但没有响应 ICMP 数据包。 Radu Gabriel 2018-04-06T09:15:39+08:002018-04-06T09:15:39+08:00 这是另一个受安德斯·拉尔森(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}' 运行速度很快,但我注意到一些报告为“Down”的主机实际上是“Up” gsarnold 2016-09-30T07:59:11+08:002016-09-30T07:59:11+08:00 这是 PowerShell 中的相同内容.... ((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}
像这样使用 Nmap 是一种相当准确的方式来做你所要求的,前提是一些先决条件是真实的:
为了获取“可用”地址,您需要获取 Nmap 报告为“关闭”的地址列表。你可以用一个简单的 awk 命令来做到这一点:
使用的 Nmap 选项总结:
-v
选项时,Nmap 会将它找到的地址打印为“向下”以及“向上”的地址。-sP
,我替换了较新的拼写-sn
,它仍然完成相同的扫描,但意味着“跳过端口扫描”而不是误导性的“Ping 扫描”(因为主机发现阶段并不一定意味着 ICMP Echo 扫描或 Ping )。-n
选项会跳过反向 DNS 查找,这会为您争取一些时间,因为您对名称不感兴趣,而只对 IP 地址感兴趣。-oG
选项告诉 Nmap 输出grepable格式,这对 awk 来说更容易处理。参数 "-
" 告诉它将此输出发送到标准输出。然后 awk 命令搜索“Status: Down”并打印包含 IP 地址的第二个字段。
当然,如果您有权访问交换机的运行配置或 DHCP 服务器的租约,则无需进行可能引发安全警报的扫描即可更权威地获得此答案。
不确定 n-map,但可以合理地假设,如果您编写一个向每个地址发送 1 个 ping 的 ping 脚本,则返回“无法访问目标”的任何主机都未被占用,并且返回“请求超时”的任何主机被占用但不响应 ping。两个响应之间的区别在于“destination unreachable”没有收到对其 ARP 请求的响应。“请求超时”意味着某些东西确实响应了 ARP 请求,但没有响应 ICMP 数据包。
这是另一个受安德斯·拉尔森(Anders Larsson)启发的作品
这意味着:“尝试 ping 范围内的所有 Ips。如果“ping”失败,则打印该 IP”
如果你这样做
运行速度很快,但我注意到一些报告为“Down”的主机实际上是“Up”
这是 PowerShell 中的相同内容....