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

P.P*_*P.P 3 ping icmp nmap

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

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

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

我正在寻找一种方法来快速解决这个问题。我不认为使用 ping 命令会有所帮助,因为 ping 64K 主机不会更快。

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

任何想法/建议?谢谢。

fue*_*ero 16

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

解释:单独使用 nmap 应该能够更快地扫描。我们将首先限制 nmap 进行 ping 扫描-sP(较新版本将 -sP 替换为 -sn)

来自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
Run Code Online (Sandbox Code Playgroud)

是时候做一个小实验了,只需要并行运行更多的 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
Run Code Online (Sandbox Code Playgroud)

带计时选项的 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
Run Code Online (Sandbox Code Playgroud)

相当的改进。

对于 /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
Run Code Online (Sandbox Code Playgroud)

为了将@Dan 的建议也加入到混合中,我在 fping 仍在运行的情况下打了 5 分钟后感到无聊:-)