Qual é a melhor maneira de verificar se a conexão com a Internet está ativa?

Qual é a melhor maneira de verificar se a conexão com a Internet está ativa?

Sou estudante e me conecto à internet comShibolete. Na verdade eu tenho um script Python em um raspberry pi com Selenium e phantomjs para conectar automaticamente durante a execução.

Gostaria de verificar a conexão com a Internet sem inundar a rede.

Monitoramento Icinga, conexões estabelecidas netstat, ping, nmap ... Melhor maneira?

Responder1

Seria incorreto presumir que uma conexão deve estar ativa ou inoperante e que você pode dizer a diferença com segurança. Esse tipo de suposição leva a sistemas não confiáveis ​​porque você pode acabar confiando em uma heurística que na verdade não verifica a propriedade de vivacidade que você esperava.

Uma abordagem melhor é monitorar se o que você precisa fazer para se conectar está realmente funcionando. Por exemplo, se você precisa de um cliente específico para se conectar a um servidor específico, é isso que você deve monitorar. Contanto que os dois continuem se comunicando, você não se importa se uma heurística diferente consideraria a conexão inativa.

Se o monitoramento detectar um problema, talvez você queira que o monitoramento alerte sobre isso. Pode ser que você queira que o monitoramento não apenas detecte a queda da conexão e alerte, mas também tente corrigir o problema. No entanto, isso leva a mais perguntas.

Por exemplo, suponha que você tenha hardware que possa desligar e ligar um componente de rede em caso de interrupção. Então talvez você não queira desligá-lo apenas porque o cliente e o servidor não podem se comunicar entre si. Pode ser que a outra extremidade da conexão esteja desligada e o ciclo de energia não seja necessário. Pode até acontecer que desligar e ligar a energia introduza uma interrupção própria ou atrapalhe a intervenção manual.

Existem maneiras de contornar esses problemas. Por exemplo, se a conexão com o servidor parecer estar inoperante, você poderá enviar uma pesquisa de DNS para o servidor. Se você recebeu uma resposta, não foi porque a conexão caiu completamente. Mas você nem precisa enviar a solicitação até o servidor DNS. Você poderia enviar a pesquisa de DNS com um limite de salto baixo. Por exemplo, se você enviar uma pesquisa de DNS com um limite de salto de 3 e obtiver um ICMP do terceiro salto, é improvável que desligar e ligar o primeiro salto resolva o problema.

É claro que isso não é uma solução mágica. Mesmo as melhores heurísticas às vezes dão errado. Se você alguma vez criar algo tentando reiniciar automaticamente uma conexão interrompida, certamente precisará garantir que ele tenha uma estratégia de recuo exponencial para impedir que seja reiniciado repetidamente.

Obviamente, o monitoramento da conectividade não pode ser feito sem a troca de pacotes. Mas você deseja limitar o custo de processamento desses pacotes. Por exemplo, embora você possa enviar um pacote em alguns saltos e receber uma mensagem de erro de um roteador específico, essa não é a operação mais barata para a maioria dos roteadores. Se você puder encontrar uma maneira de enviar e retornar um pacote sem envolver nada além da parte de encaminhamento de hardware dos roteadores, isso será mais barato, mesmo que seja necessário mais saltos para fazer isso.

Se você tiver mais sites, poderá melhorar a confiabilidade do monitoramento da conexão fazendo com que eles se comuniquem periodicamente entre si. Se um site perder simultaneamente a conectividade com todos os outros sites, é muito provável que esse site tenha um problema de conectividade.

Responder2

Se você quer saber se o acesso à Internet é possível, uma pesquisa de DNS de www.google.com por meio dos servidores 8.8.8.8 e 8.8.4.4 é a maneira mais confiável.

Se você não conseguir uma resposta, certamente há algo errado com sua conectividade com a Internet. Observe que "algo errado" não significa nenhum acesso.

Você não pode provar que uma conexão com a Internet é perfeita.

informação relacionada