A maneira mais rápida de verificar todos os hosts que estão on-line

3

Estou procurando encontrar todos os hosts que estão on-line em um conjunto de redes.

Eu gostaria de encontrar todos os hosts que estão online em toda a rede de 170.10. . (existem ~ 64K hosts possíveis). A rede que estou tentando verificar é uma rede local interna.

Eu usei a ferramenta nmap. Mas demora cerca de 50 minutos, o que é muito longo. Dos 64K hosts, há apenas cerca de 20 a 40 hosts online. Mas o problema é que eles podem estar em qualquer rede (ou em uma ou mais) das 256 redes possíveis.

Estou procurando uma maneira de descobrir isso rapidamente. Eu não acho que usar o comando ping irá ajudar, já que pingar 64K hosts não será mais rápido.

Eu estou procurando por qualquer solução alternativa, talvez transmitindo pacotes ICMP diretamente para todas as 256 redes ou algo similar.

Alguma idéia / sugestão? Obrigado.

    
por P.P. 05.02.2015 / 17:45

2 respostas

9

resposta curta: nmap -sn -T5 --min-parallelism 100 subnet/mask -oG output.file.txt; grep -v Down output.file.txt

explicação: O nmap sozinho deve ser capaz de digitalizar muito mais rápido. Vamos começar limitando o nmap para fazer varreduras de ping com -sP (versões mais novas substituídas -sP por -sn)

De 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

Tempo para uma pequena experiência com apenas a execução de mais análises de ping em paralelo --max-parallelism e de ter cuidado ao ser detectado no vento -T5 :

nmap sem opções:

% 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 com opções de tempo:

% 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

Completamente a melhoria.

Para uma varredura de sub-rede / 16, como OP perguntou:

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

Para lançar a sugestão do @ Dan na mixagem também, fiquei entediado depois de bater 5 minutos com o fping ainda em execução: -)

    
por 05.02.2015 / 19:38
1

Mais tópicos. Inicie 256 varreduras nmap simultaneamente. Espero que seu host possa lidar com as conexões simultâneas.

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

Você pode querer ter certeza de que está gravando em um arquivo em algum lugar, já que a saída do terminal seria atroz para tentar analisar 256 nmaps ao mesmo tempo.

Editar:

Você pode fazer o mesmo com o ping. Apenas certifique-se de limitar o número. Você pode querer ajustar isso:

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
    
por 05.02.2015 / 17:57

Tags