Linux tux ninja

Use o fping para scanear a sua rede

O fping é um utilitário usado para scanear e encontrar as máquinas conectadas e ligadas em uma rede. Semelhante ao ping, usa o protocolo ICMP (Internet Control Message Protocol) para determinar se um host está “de pé” — através de uma requisição echo — ou não.
buscas na rede - fping
Diferente do ping, é possível fornecer vários endereços de hosts em uma só linha de comando ou um arquivo texto, com uma lista de hosts para sondar.
O fping envia um pacote ping para cada host da lista. Os que respondem são marcados na lista como ativos e não são mais checados. Os que não respondem, após um determinado período, são marcados como inalcançáveis.

fping versão 3

A quem já conhece a teoria ou não tem interesse em conhecer, recomendo pular este (ainda que) breve tópico. 😉
Após um longo tempo sem atualizações da versão original – entre 2002 e 2011 – em que, até mesmo, havia propostas de correções e melhorias e sem respostas do mantenedor oficial, David Schweikert assumiu o projeto e tem disponibilizado versões atualizadas do programa, junto com a documentação em seu site – de onde eu sugiro que você faça o seu download.

Por que usar o fping

O ping foi desenvolvido em 1983 por Mike Muuss e é uma ferramenta eficiente para testar quando um host é alcançável ou não, dentro da rede.
O problema com o ping é que ele envia uma requisição echo e fica esperando pela resposta. Imagine ter que testar um segmento da rede com 255 possíveis hosts – sendo que alguns, mesmo online, demoram, pelos mais variados motivos, algum tempo extra para responder ao ping?
Pois bem, o fping resolve isto. Como já vimos, se a resposta demora a chegar, ele segue em frente.

Como instalar o fping

Se você preferir compilar o código fonte, para usar uma versão mais atual ou específica do fping, passe para o próximo tópico.
No final do artigo, há o link para fazer download do aplicativo – para qualquer sistema operacional. Quem usa Debian ou Ubuntu pode instalar o fping com o comando apt-get:

sudo apt-get install fping

Usuários Debian, ainda podem verificar nos backports por uma versão mais atual em relação ao repositório padrão.
No Fedora ou outras distribuições baseadas no Red Hat, use o yum:

yum install fping

Como compilar o código fonte do fping

Baixar e compilar o código fonte pode trazer uma série de vantagens e costuma ser mais fácil do que algumas pessoas imaginam.
Se você optar por este método de instalação, faça o download do código fonte na página http://fping.org/dist/.
Execute os próximos passos, com privilégios administrativos:

./configure 
make
make check
make install
make clean
make distclean

… e pronto!
Se você ainda tiver dúvidas sobre como compilar código fonte no Linux, leia o artigo Como compilar código fonte.
O processo padrão, descrito acima, vai instalar o fping no diretório
/usr/local/sbin/fping.
Você pode usar o comando whereis, para obter esta informação:

whereis fping
fping: /usr/local/sbin/fping

Estar neste diretório, indica que o fping necessitará de privilégios administrativos para ser executado.

Como usar o fping para sondar e scanear a rede

O bom senso diz que devemos tomar alguns cuidados antes de fazer varreduras na rede. Uma vez que os sistemas de segurança podem identificar a atitude como agressiva, convém pedir permissão ao administrador da rede antes de iniciar esta atividade.
Veja um exemplo de aplicação do fping, com resultado:

fping 192.168.1.1
192.168.1.1 is alive

com este exemplo, fica claro que a resposta is alive (“está vivo”) significa que o host está de pé e pôde ser alcançado.
A brincadeira fica mais interessante, quando você fizer a busca baseada em uma lista, que pode ter centenas ou mais endereços IP de máquinas na sua rede. Imagine o arquivo lista_de_ips.txt, com o seguinte conteúdo:

192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5

Nota: Adeque os valores acima à realidade da sua rede.
Feito isto, vamos jogar esta lista pro fping testar cada IP:

fping -a < lista_de_ips.txt

Se tiver privilégios administrativos na sua máquina, use fping -f, assim:

sudo fping -f lista_de_ips.txt

Em um rápido resumo, até aqui:

  • Quando a mensagem retornada vem com a expressão
    is alive — é por que o host foi encontrado e está respondendo;
  • Quando a mensagem contiver expressões como ICMP Host Unreachable from ou is unreachable — é por que ele não foi encontrado ou não está respondendo.

Você pode usar a opção -g para verificar um intervalo grande como todas os 255 possíveis hosts em 192.168.1.*. Veja como:

fping -g 192.168.1.0/24

… e nem demorou tanto.
Para enviar o resultado (restrito aos hosts que foram alcançados) para um arquivo, pode usar o comando grep:

fping -g 192.168.254.0/24 | grep alive > is_alive.txt
cat is_alive.txt

Quando o perímetro, em que você deseja fazer sua busca, não está com o tráfego ICMP bloqueado, é possível encontrar rápido e sem muito esforço todos as máquinas conectadas à rede.

Defina o intervalo de tempo entre os pacotes ping

Você pode usar o parâmetro -i para especificar o intervalo mínimo de tempo entre um pacote ping (em milisegundos) a qualquer alvo:

fping -i 10 -g 192.168.254.0/24

O comando, acima, estabelece o intervalo de 10 milisegundos (ou 0,01 segundo) entre o envio de um pacote e outro, para todos endereços compreendidos no espectro de 192.168.254.0 a 192.168.254.255.
O valor padrão é 25 ms, de acordo com a documentação do programa.

Obtenha um resumo da sondagem do fping na sua rede

Ao adicionar -s à linha de comando, é possível obter um resumo ao final do trabalho do fping, em que ele informa:

  1. targets — alvos objetivados.
  2. alive — alvos ativos.
  3. unreachable — alvos intangíveis, inalcançáveis.
  4. unkown addresses — endereços desconhecidos.
  5. timeouts — tempo de resposta expirado (esperando retorno).
  6. ICMP Echos sentechos ICMP enviados.
  7. ICMP Echo Replies received — respostas em echos ICMP recebidas.
  8. other ICMP received — outros sinais ICMP recebidos.
  9. (elapsed real time) — tempo de execução real.

Veja um exemplo de relatório resumido:

fping -g 192.168.254.0/24 -s
192.168.254.1 is alive
192.168.254.2 is alive
192.168.254.3 is alive
192.168.254.7 is alive
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.4
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.5
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.6
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.8
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.9
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.10
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.11
ICMP Host Unreachable from 192.168.254.3 for ICMP Echo sent to 192.168.254.12

     (...)

     254 targets
       5 alive
     249 unreachable
       0 unknown addresses

     249 timeouts (waiting for response)
    1001 ICMP Echos sent
       5 ICMP Echo Replies received
     942 other ICMP received

 0.10 ms (min round trip time)
 50.3 ms (avg round trip time)
 131 ms (max round trip time)
       26.827 sec (elapsed real time)

Como filtrar resultados do fping

Além do comando grep (veja os links ao final), é possível resumir bastante o relatório de saída.
Para obter apenas o relatório resumido, visto anteriormente, acrescente a opção -q:

fping -g 192.168.254.0/24 -s -q

Limite a quantidade de tentativas

O fping faz 3 tentativas para alcançar os alvos definidos, como comportamento padrão.
É possível aumentar ou diminuir este valor, de acordo com a sua conveniência. Veja como definir o número de tentativas para 5:

fping -r 5 -g 192.168.254.0/24

Se você acha que não precisa haver outras tentativas e prefere obter um resultado mais rápido da sondagem, use o valor -r 1.
Você pode encontrar muito mais informações sobre possibilidades de utilização no manual do comando. Recomendo a sua leitura, daqui pra frente.
Que suas buscas sejam frutíferas! 😉

Fontes:

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

5 thoughts on “Use o fping para scanear a sua rede”

  1. Grande Elias,
    eu tô querendo enviar 1000 pacotes em um intervalo de 1 segundo durante um tempo específico. (Durante 10 segundos, por exemplo)
    Em outras palavras eu quero enviar 1 pacote a cada 1 ms.
    Tentei usar alguns parâmetros do fping mas não tô conseguindo o resultado esperado.
    Como proceder?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *