Existe um serviço de solicitação de eco ICMP?

7

Geralmente, em aplicativos que desenvolvo, gosto de incluir um indicador de status de rede para vários dispositivos na rede. A maneira mais fácil de monitorar esses dispositivos é fazendo ping deles. Mas os ecos do ICMP costumam ser difíceis de integrar em um aplicativo devido a requisitos de segurança com soquetes brutos ou problemas de desempenho com o descascamento para ping . Além disso, para situações em que isso não é um problema, estou escrevendo sobre variações ligeiramente diferentes do mesmo código de ping para várias situações.

A maioria dos dispositivos que monitorei são dispositivos incorporados com capacidades mínimas de rede (mas sempre incluem eco ICMP), então eu faço tenho que ficar com este protocolo, coisas como Echo Protocol (apontado por Mark nos comentários abaixo, obrigado!) geralmente não estão disponíveis para mim.

Existe um serviço que já fornece serviços de ping ICMP de baixa sobrecarga para um aplicativo não-root?

Estou pensando em criar um serviço que seja executado como raiz e permita que outros aplicativos não-raiz se conectem a ele, adicionem dispositivos a serem monitorados e consultem tempos de ping e status de rede, mas não quero reinventar um roda e eu estou querendo saber se algo como isso já existe.

    
por Jason C 10.10.2014 / 18:21

2 respostas

2

A resposta à sua pergunta é provavelmente "Não, não há".

A razão para isso é que o ICMP é um protocolo de baixo nível e, para produzir tráfego ICMP, um aplicativo precisa de acesso privilegiado à sua interface de rede. Você pode ver evidências disso na maioria dos sistemas pelo fato de que os binários que geram o ICMP são set-uid root. Observe o pedaço pegajoso:

$ ls -l /sbin/ping /usr/sbin/traceroute
-r-sr-xr-x  1 root  wheel  28088 Aug 12 12:19 /sbin/ping
-r-sr-xr-x  1 root  wheel  28608 Aug 12 12:20 /usr/sbin/traceroute

(Isto está no FreeBSD. Seus resultados em outros sistemas operacionais podem ser diferentes.)

Para um aplicativo para gerar tráfego de rede bruto, ele precisa ser executado como raiz. Como /sbin/ping já é executado como root, sua melhor aposta provavelmente é usá-lo para gerar seus pings.

Se você estiver fazendo isso para um grande número de hosts, convém analisar fping . Outra opção seria tcping , que pode gerar pacotes TCP que fornecem resultados semelhantes a um ping ICMP. O requisito seria uma porta aberta no sistema de destino para receber o pacote. Você pode usar isso ou replicar sua abordagem com base na origem. Ambos podem já estar disponíveis como um pacote para o seu sistema operacional.

Para uma solução de monitoramento em escala maior, Nagios e Zabbix são opções gratuitas populares, mas existem muitas outras.

    
por 27.10.2014 / 16:55
1

Talvez muito inchado com o que você está procurando, mas a maioria das soluções de monitoramento completas, como Nagios, icinga ou check_mk, fornecem monitoramento icmp e geralmente fornecem APIs que você pode consultar.

    
por 27.10.2014 / 16:23