扫描所有在线主机的最快方法

扫描所有在线主机的最快方法

我正在寻找一组网络中所有在线的主机。

我想要找出整个170.10.10网络内所有在线的主机。(有 ~64K 个可能的主机)。我尝试扫描的网络是内部本地网络。

我使用了 nmap 工具。但它需要大约 50 分钟,这太长了。在 64K 台主机中,可能只有大约 20-40 台主机在线。但问题是它们可能位于 256 个可能的网络中的任意一个(或一个或多个)网络中。

我正在寻找一种快速解决这个问题的方法。我认为使用 ping 命令也无济于事,因为 ping 64K 主机不会更快。

我正在寻找任何替代解决方案,也许将 ICMP 数据包直接广播到所有 256 个网络或类似的东西。

有什么想法或建议吗?谢谢。

答案1

简短回答: nmap -sn -T5 --min-parallelism 100 subnet/mask -oG output.file.txt; grep -v Down output.file.txt

解释:nmap 本身应该能够更快地进行扫描。我们将首先限制 nmap 进行 ping 扫描-sP(较新的版本用 -sn 代替了 -sP)

man nmap

TIMING AND PERFORMANCE:
     Options which take <time> are in seconds, or append 'ms' (milliseconds),
     's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
     -T<0-5>: Set timing template (higher is faster)
     --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
     --min-parallelism/max-parallelism <numprobes>: Probe parallelization
     --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
         probe round trip time.
     --max-retries <tries>: Caps number of port scan probe retransmissions.
     --host-timeout <time>: Give up on target after this long
     --scan-delay/--max-scan-delay <time>: Adjust delay between probes
     --min-rate <number>: Send packets no slower than <number> per second
     --max-rate <number>: Send packets no faster than <number> per second

现在来进行一个小实验,只需并行运行更多 ping 扫描,--max-parallelism并谨慎小心,以免被风检测到-T5

不带任何选项的 nmap:

% time nmap -sP 192.168.1.0/24 
[...]
nmap -sP 192.168.1.0/24  0.04s user 0.02s system 2% cpu 2.917 total
% time nmap -T5 --max-parallelism=100 -sP 192.168.1.0/23
[...]
nmap -sP 192.168.1.0/23  0.08s user 0.04s system 0% cpu 37.469 total

带有定时选项的 nmap:

% time nmap -T5 --max-parallelism=100 -sP 192.168.1.0/24
[...]
nmap -T5 --max-parallelism=100 -sP 192.168.1.0/24  0.03s user 0.03s system 3% cpu 2.016 total
% time nmap -T5 --max-parallelism=100 -sP 192.168.1.0/23
[...]
nmap -T5 --max-parallelism=100 -sP 192.168.1.0/23  0.11s user 0.02s system 2% cpu 4.869 total

相当有进步。

对于 /16 子网扫描,如 OP 所问:

Nmap done: 65536 IP addresses (30 hosts up) scanned in 169.43 seconds
nmap -sP -T5 --min-parallelism 100 --max-parallelism 256 192.168.0.0/16  44.67s user 8.45s system 31% cpu 2:49.44 total

也把@Dan 的建议加进去,fping 运行了 5 分钟之后我就觉得无聊了 :-)

答案2

更多线程。同时启动 256 个 nmap 扫描。希望您的主机可以处理同时连接。

for i in 172.10.{0..255}.0 ; do nmap $i <arguments> & done;

您可能需要确保它正在写入某个文件,因为如果同时尝试解析 256 个 nmap,终端输出将会非常糟糕。

编辑:

您可以对 ping 执行相同的操作。只需确保限制数量即可。您可能需要调整这一点:

for i in {0..255} ; do for j in 172.10.$i.{0..255} ; do ping $j -c 2 -W 1 | \
    grep "bytes from" >> aliveips.txt & done ; done

相关内容