我正在寻找一组网络中所有在线的主机。
我想要找出整个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