Qual é a melhor maneira de verificar se a conexão com a internet está viva?

0

Eu sou estudante e me conecto à internet com Shibboleth . Na verdade, eu tenho um script Python em um pi de framboesa com selênio e phantomjs para conectar automaticamente em execução.

Eu gostaria de verificar a conexão com a internet sem inundar a rede.

Monitoramento Icinga, netstat estabeleceu conexões, ping, nmap ... Melhor caminho?

Raph
fonte
5
Raramente há uma maneira melhor, mas geralmente uma maneira que funciona melhor para você. Para ajudá-lo a escolher, você deve adicionar o máximo de detalhes possível à sua pergunta, incluindo todos os requisitos (como você deseja ser notificado, você precisa de um painel, o que você já tentou, etc.)
uSlackr
2
Quais são os seus critérios para determinar o que é melhor?
Então, se 8.8.8.8 é alcançável e 8.8.4.4. Isso não é indicativo de uma conexão ativa com a Internet?
Konrad Gajewski
Sim, mas não é assim que estou inundando meu roteador?

Respostas:

3

Seria incorreto supor que uma conexão precisa estar viva ou morta e que você pode dizer com segurança a diferença. Esse tipo de suposição leva a sistemas não confiáveis ​​porque você pode acabar contando com uma heurística que não verifica a propriedade de vitalidade que você esperava.

Uma abordagem melhor é monitorar se a coisa que você precisa fazer a conexão para você está realmente funcionando. Por exemplo, se você precisa de um cliente específico para se conectar a um servidor específico, então é 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 baixa.

Se o monitoramento detectar um problema, talvez você queira que o monitoramento seja alertado sobre isso. Pode ser que você queira que o monitoramento não só detecte a conexão e esteja alerta, mas também tente corrigir o problema. Isso, no entanto, leva a mais perguntas.

Por exemplo, suponha que você tenha um hardware que possa desligar e ligar um componente de rede em caso de uma falha. Então, talvez você não queira fazer o ciclo de energia apenas porque o cliente e o servidor não podem se comunicar uns com os outros. Pode ser que a outra extremidade da conexão esteja inativa e o ciclo de energia não tenha sido necessário. Pode até ser que a ciclagem de energia apresentasse uma interrupção própria ou atrapalhasse a intervenção manual.

Existem maneiras de contornar esses problemas. Por exemplo, se a conexão com o servidor parece estar inativa, você pode enviar uma pesquisa de DNS para o servidor. Se você recebeu uma resposta, não foi porque a conexão está completamente inativa. 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 obter um ICMP de volta do terceiro salto, é improvável que a passagem de energia pelo 1º salto resolva o problema.

Isto, obviamente, não é uma bala de prata. Mesmo as melhores heurísticas às vezes dão errado. Se você construir algo tentando reiniciar automaticamente uma conexão quebrada, certamente precisará garantir que ela tenha uma estratégia de recuo exponencial para impedir que ela seja reiniciada repetidamente.

Monitorar a conectividade obviamente não pode ser feito sem trocar nenhum pacote. Mas você quer limitar o custo de processamento desses pacotes. Por exemplo, embora você possa enviar um pacote com 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 um pacote para fora e voltar sem envolver nada, a não ser o hardware encaminhando parte dos roteadores, então isso é mais barato, mesmo se precisar de mais pulos para fazer isso.

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

kasperd
fonte
0

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

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

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

caskey
fonte
Poderia haver um problema de peering entre você e o google. Então não é necessariamente algo errado com a sua internet, mas eu acho que ping 8.8.8.8 seria suficiente, eu não vejo a necessidade de uma pesquisa de DNS.
Devon
É mais provável que o ICMP seja descartado do que UDP ou TCP
caskey
Por um roteador, talvez, mas um host final não deve estar descartando o ICMP aleatoriamente.
Devon
Ao tentar verificar uma conexão com a Internet, é provável que os roteadores estejam envolvidos.
caskey
Não é assim que funciona. Os roteadores continuarão encaminhando os pacotes ICMP, eles simplesmente não responderão de forma confiável. Um servidor (como 8.8.8.8) deve responder de forma confiável. Se você pingar, você não está procurando uma resposta de volta dos roteadores, se você traceroute, você está.
Devon