Testes rápidos em sua rede: parte 4

Já falamos sobre nslookup, traceroute, nmap e fiquei na dúvida sobre qual poderia sera próxima ferramenta dentre tantas outras que poderia entrar na lista. Embora não esteja apresentando as ferramentas em nenhuma ordem de importância ou prioridade, eu relutei bastante para colocar o onipresente ping nesta posição, mas aqui está ela, que não vem sozinha. Falemos então do ping e seu primo “fping”.

ping

Ping é talvez a ferramenta mais popular para testes de conectividade de rede. Também pudera, ela é praticamente onipresente.

De smartphones e desktops à servidores e switchs, particularmente, desconheço qualquer dispositivo inteligente e conectado que não possua alguma versão desta ferramenta disponível.

O seu trabalho é bem simples, ele envia uma mensagem via o protocolo ICMP e aguarda que o destinatário responda. Quando isso ocorre temos as estatísticas de tempo de resposta, tempo de vida dos pacotes etc.

Embora ela não costume dar muitos detalhes sobre a situação da rede, o seu propósito de dizer se conseguimos estabelecer um conexão de duas vias na rede é atendido com respeitável praticidade.

Uma informação que é bom já deixar aqui de aviso é que a maioria das implementações de ping disponíveis definem um número padrão de mensagens a serem enviadas (geralmente 3 ou 5) mas a implementação disponível no Linux e alguns outros SO, não.

Uma vez que você invoque o ping, nestas distribuições, sem qualquer argumento, o fará executar os testes indefinidamente até que que você o cancele pressionando CTRL+C.

fping

O Fping é uma ferramenta que não vem no pacote padrão da maioria dos sistemas operacionais, por isso é menos conhecida, mas está disponível para instalação ao menos nas principais distribuições Linux.

O seu propósito é o mesmo que o do seu primo mais velho, mas possui algumas opções adicionais que são bastante úteis em várias situações.

A instalação pode ser feita usando o gerenciador de pacotes oficial da sua distribuição Linux, como no exemplo abaixo para Debian, Unbunt, Mint etc.

sudo apt install fping

Para não perdermos muito tempo, seguem alguns parâmetros comuns as duas ferramentas que podem ser úteis:

  • -6 = Somente respostas IPv6
  • -4 = Somente respostas IPv4
  • -c = Número de pings enviados
  • -D = Exibe o timestamp do momento de envio

Indo direto aos testes práticos, compare abaixo a diferença na saída das duas ferramentas para um uso básico com 3 pings para o servidor DNS público do Google.

ping -c 3 dns.google
PING dns.google(dns.google (2001:4860:4860::8888)) 56 data bytes
64 bytes de dns.google (2001:4860:4860::8888): icmp_seq=1 ttl=115 tempo=11.5 ms
64 bytes de dns.google (2001:4860:4860::8888): icmp_seq=2 ttl=115 tempo=10.7 ms
64 bytes de dns.google (2001:4860:4860::8888): icmp_seq=3 ttl=115 tempo=11.1 ms

--- dns.google estatísticas de ping ---
3 pacotes transmitidos, 3 recebidos, 0% perda de pacote, tempo 2001ms
rtt min/avg/max/mdev = 10.668/11.085/11.500/0.339 ms
fping -c 3 dns.google
dns.google : [0], 64 bytes, 11.6 ms (11.6 avg, 0% loss)
dns.google : [1], 64 bytes, 11.1 ms (11.3 avg, 0% loss)
dns.google : [2], 64 bytes, 10.3 ms (11.0 avg, 0% loss)

dns.google : xmt/rcv/%loss = 3/3/0%, min/avg/max = 10.3/11.0/11.6

Tal como mencionado lá em cima e também nas ferramentas anteriores que já apresentei, eu poderia ter usado o parâmetro “-4” para forçar os testes em IPv4, ao invés de deixar o método automático que elegeu o IPv6.

Nos demais exemplos eu não vou ficar comparando ambas as ferramentas, pois o propósito é conciliar o uso das duas, mas observe que neste caso, enquanto o “ping” foca em mostrar o tempo de resposta para cada pacote enviado, o fping enfatiza o tempo médio e as perdas.

Nenhuma é melhor do que o outra neste aspecto, são apenas visões diferentes para o mesmo teste e você deverá decidir qual é melhor para seu caso.

Agora vamos a um dos pontos que eu gosto no fping e por isso eu a recomendo. Veja os dois exemplos abaixo:

fping -a  dns.google
dns.google
fping -a  dns1.google
dns1.google: Name or service not known

Nos dois testes acima, eu pedi para o fping reportar se um dado destino estava online (-a), e como se vê, o resultado positivo indica que dns.google está OK (retornou o mesmo nome requisitado), enquanto dns1.google, não está disponível.

No texto não dá para mostrar, mas além da saída resumida ao extremo, o fping retorna com um código de saída que é excelente para ser usado em scripts de teste de rede, fazendo pipes com outros comandos para automatizar alguma tarefa, quando um host está online ou não.

Observe agora este novo caso:

fping -u  dns.google
fping -u  dns1.google
dns1.google: Name or service not known

Aqui foi usado o parâmetro “-u” que é oposto do anterior. Enquanto “-a” retorna OK para hosts online, o “-u” retorna OK para hosts offline.

Tal como no caso anterior, você poderia usá-lo em algum script para monitorar se determinado host está indisponível e disparar algum procedimento de alerta ou recuperação.

Um outro uso que faço do fping com muita frequência é o teste em múltiplos destinos. Você já precisou enviar ping para 2, 3, 10 destinos ao mesmo tempo ou até para toda a sua rede ?

fping 8.8.8.8 8.8.4.4 4.4.4.4
8.8.8.8 is alive
8.8.4.4 is alive
4.4.4.4 is unreachable

No teste acima eu coloquei intencionalmente um endereço que não existe e observe a saída como ficou.

Uma dica que pode ser útil é usar também os parâmetros “-u” ou “-a”, já apresentados, para que apenas os hosts offline ou apenas os online fossem retornados. Mas vou deixar pra vocês fazerem os testes por conta própria.

Da mesma forma que você pode testar hosts em separado, você também pode testar todo um intervalo de rede usando o parâmetro “-g”, como no exemplo abaixo:

fping -g 192.168.88.0/28
192.168.88.1 is alive
192.168.88.2 is alive
192.168.88.3 is alive
192.168.88.4 is alive
192.168.88.5 is alive
192.168.88.10 is alive
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
[...]
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.14
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.14
192.168.88.6 is unreachable
192.168.88.7 is unreachable
192.168.88.8 is unreachable
192.168.88.9 is unreachable
192.168.88.11 is unreachable
192.168.88.12 is unreachable
192.168.88.13 is unreachable
192.168.88.14 is unreachable

Uma coisa importante a se notar no resultado deste teste é que eu trunquei a saída (note o […] ali no meio). Dependendo da quantidade hosts testados e indisponíveis, as mensagens de “ICM Host Unreachable” poderão ser muitas a ponto de impedir a leitura do resultado.

Uma solução que uso para isso é redirecionar o “STDERR” (a saída de erros) para fora da tela, como no exemplo abaixo, onde apenas adicionei o redirecionamento para /dev/null.

fping -g 192.168.88.0/28 2>/dev/null
192.168.88.1 is alive
192.168.88.2 is alive
192.168.88.3 is alive
192.168.88.4 is alive
192.168.88.5 is alive
192.168.88.10 is alive
192.168.88.6 is unreachable
192.168.88.7 is unreachable
192.168.88.8 is unreachable
192.168.88.9 is unreachable
192.168.88.11 is unreachable
192.168.88.12 is unreachable
192.168.88.13 is unreachable
192.168.88.14 is unreachable

Veja como a saída ficou mais limpa. E tal como nos exemplos anteriores, usar o “-a” ou “-u” retornará apenas a parte dos hosts que interessar ao seu caso (online ou offline).

Se você precisar manter um teste de ping rodando indefinidamente, o argumento que que você precisa é o “-l” que deixará o fping em loop até que você pressione CTRL+C.

fping -l 192.168.88.2 192.168.88.5
192.168.88.2 : [0], 84 bytes, 0.23 ms (0.23 avg, 0% loss)
192.168.88.5 : [0], 84 bytes, 64.1 ms (64.1 avg, 0% loss)
192.168.88.2 : [1], 84 bytes, 0.24 ms (0.23 avg, 0% loss)
192.168.88.5 : [1], 84 bytes, 1.17 ms (32.6 avg, 0% loss)
192.168.88.2 : [2], 84 bytes, 0.25 ms (0.24 avg, 0% loss)
192.168.88.5 : [2], 84 bytes, 30.5 ms (31.9 avg, 0% loss)
192.168.88.2 : [3], 84 bytes, 0.24 ms (0.24 avg, 0% loss)
192.168.88.5 : [3], 84 bytes, 1.21 ms (24.2 avg, 0% loss)
^C
192.168.88.2 : xmt/rcv/%loss = 4/4/0%, min/avg/max = 0.23/0.24/0.25
192.168.88.5 : xmt/rcv/%loss = 4/4/0%, min/avg/max = 1.17/24.2/64.1

Perceba que cada sessão de teste é numerada [0], [1] etc. Por padrão após terminar uma sessão a outra inicia praticamente em seguida, mas se desejável você pode definir um intervalo entre cada sessão de testes especificando também o parâmetro “-p” seguido do tempo em milissegundos. Isso faria com que o fping aguardasse tanto tempo quanto o especificado entre cada sessão de testes.

Por fim, mas não menos importante, se você precisar de uma estatística geral de todo o teste, não deixe de incluir o parâmetro “-s”, que o mostrará um breve relatório do teste executado.

fping -s -l 192.168.88.2 192.168.88.5 192.168.88.7
192.168.88.2 : [0], 84 bytes, 0.27 ms (0.27 avg, 0% loss)
192.168.88.5 : [0], 84 bytes, 22.7 ms (22.7 avg, 0% loss)
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
192.168.88.2 : [1], 84 bytes, 0.22 ms (0.24 avg, 0% loss)
192.168.88.5 : [1], 84 bytes, 1.22 ms (11.9 avg, 0% loss)
192.168.88.2 : [2], 84 bytes, 0.24 ms (0.24 avg, 0% loss)
192.168.88.5 : [2], 84 bytes, 33.3 ms (19.1 avg, 0% loss)
192.168.88.2 : [3], 84 bytes, 0.26 ms (0.24 avg, 0% loss)
192.168.88.5 : [3], 84 bytes, 1.23 ms (14.6 avg, 0% loss)
192.168.88.2 : [4], 84 bytes, 0.23 ms (0.24 avg, 0% loss)
192.168.88.5 : [4], 84 bytes, 12.0 ms (14.1 avg, 0% loss)
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
ICMP Host Unreachable from 192.168.88.10 for ICMP Echo sent to 192.168.88.7
^C
192.168.88.2 : xmt/rcv/%loss = 5/5/0%, min/avg/max = 0.22/0.24/0.27
192.168.88.5 : xmt/rcv/%loss = 5/5/0%, min/avg/max = 1.22/14.1/33.3
192.168.88.7 : xmt/rcv/%loss = 5/0/100%

       3 targets
       2 alive
       1 unreachable
       0 unknown addresses

       0 timeouts (waiting for response)
      15 ICMP Echos sent
      10 ICMP Echo Replies received
       5 other ICMP received

 0.22 ms (min round trip time)
 7.18 ms (avg round trip time)
 33.3 ms (max round trip time)
        4.645 sec (elapsed real time)

Nesta parte eu foquei mais no fping do que no ping porque a primeira ferramenta faz tudo o que a segunda, porém oferecendo algumas facilidades, mas para uso geral e onde não for possível adotar o fping, o ping atende muito bem, já que o seu objetivo, como já dito é bem básico.

Por hoje é só e até a próxima.

Deixe um comentário

O seu endereço de e-mail não será publicado.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.