You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Nmap在IP前缀中获取2个开放80端口的随机IP及提速方法

在指定IP前缀范围内获取2个开放80端口的随机IP

要实现这个需求,我们可以把Nmap的扫描结果和系统自带的文本处理工具结合起来,分两步走:先找出前缀内所有开放80端口的主机,再从中随机挑选2个。

Linux/macOS 环境

直接用一条命令组合就能搞定,假设目标IP前缀是192.168.1.0/24(你可以替换成自己需要的前缀):

nmap -p80 --open -n -oG - 192.168.1.0/24 | awk '/Up$/{print $2}' | shuf -n 2

逐个参数解释:

  • -p80:只扫描80端口,避免不必要的端口扫描耗时
  • --open:只输出端口开放的主机,过滤掉关闭/过滤状态的结果
  • -n:禁用DNS解析,大幅减少扫描时间(尤其是针对大量IP时)
  • -oG -:以greppable格式将结果输出到标准输出,方便后续文本处理
  • awk '/Up$/{print $2}':从结果中提取状态为“Up”的主机IP
  • shuf -n 2:随机选取2个IP

Windows 环境

如果用PowerShell,可以这样实现:

nmap -p80 --open -n -oG - 192.168.1.0/24 | Select-String 'Up$' | ForEach-Object { $_.Line.Split(' ')[1] } | Get-Random -Count 2

逻辑和Linux版本一致,用PowerShell的命令替换了awkshuf的功能。


加快Nmap扫描速度的实用技巧

Nmap扫描慢通常是因为默认配置偏向于准确性而非速度,你可以通过以下调整来显著提升扫描效率:

  • 缩小端口扫描范围:只扫描你需要的端口(比如这里的80),而不是Nmap默认的1000个常用端口。用-p指定单个端口、端口范围(如-p1-100)或端口列表(如-p80,443)。
  • 禁用DNS解析:始终加上-n选项,避免Nmap为每个IP做反向DNS查询——这在扫描大量IP时会浪费大量时间。如果确实需要DNS解析,也可以用-R强制解析,但仅限必要场景。
  • 提升并行扫描速率
    • --min-rate <数值>指定每秒至少发送的数据包数,比如--min-rate 1000,让Nmap尽可能快地发送数据包(根据你的网络带宽调整,不要设置过高导致被防火墙拦截)。
    • --max-parallelism <数值>调整并行扫描的主机数量,默认值比较保守,适当调高可以加快扫描(比如--max-parallelism 100)。
  • 使用半开SYN扫描:加上-sS选项(需要root/管理员权限),这是Nmap最快的端口扫描方式之一——它不需要完成完整的TCP三次握手,只发送SYN包并等待响应,大幅减少耗时。
  • 缩短超时时间
    • --host-timeout <时间>跳过响应极慢的主机,比如--host-timeout 30s,避免卡在无响应的IP上。
    • --scan-delay <时间>调整数据包发送间隔,默认可能有延迟,适当缩短(比如--scan-delay 0.1s)可以加快,但注意不要触发目标的防御机制。
  • 禁用不必要的附加扫描:如果不需要端口版本检测(-sV)或脚本扫描(-sC),就不要添加这些选项——它们会增加大量扫描时间,只在需要详细信息时使用。
  • 分段扫描:如果目标前缀很大(比如10.0.0.0/8),可以把它分成多个小前缀分批扫描,避免一次性扫描过多IP导致性能下降。

内容的提问来源于stack exchange,提问作者tarun14110

火山引擎 最新活动