Qual processo do Linux é responsável por responder aos pings?

38

Eu tenho um controlador de processo baseado em Linux que ocasionalmente bloqueia até o ponto em que você não pode executar o ping (ou seja, eu posso fazer ping dele, então ele não pode mais pingar sem nenhuma modificação nas configurações de rede).

Estou curioso, que processo / sistema é responsável por realmente responder a pings? Parece que esse processo está falhando.

    
por Izzo 24.04.2018 / 19:06

3 respostas

53

A pilha de rede do kernel está lidando com mensagens ICMP, que são aquelas enviadas pelo comando ping .

Se você não receber respostas, além de problemas de rede ou filtragem, e filtragem baseada em host / limite de taxa / black-holing / etc. isso significa que a máquina provavelmente está sobrecarregada por algo, que pode ser transitório, ou o kernel travou, o que é raro, mas pode acontecer (hardware defeituoso, etc.), não necessariamente por causa do tráfego ICMP (mas tentando sobrecarregá-lo com esse tráfego pode ser um bom teste no início da vida de um servidor para ver como ele sustenta as coisas). No caso posterior de falha do kernel, você deve ter informações amplas nos arquivos de log ou no console.

Observe também que ping é quase sempre a ferramenta errada para verificar se um serviço está online ou não. Por vários motivos, mas principalmente porque não imita o tráfego real de aplicativos, por definição. Por exemplo, se você precisar verificar se um servidor da Web ainda está ativo, deverá fazer uma consulta HTTP (porta TCP 80 ou 443), se precisar verificar um servidor de e-mail, faça uma consulta SMTP (porta TCP 25), se um servidor DNS, um UDP e uma consulta TCP para a porta 53, etc.

    
por 24.04.2018 / 19:14
11

Não há processo da área do usuário responsável por responder a pings. Ping é apenas um utilitário para enviar pacotes de eco ICMP. Estes são recebidos e processados pela pilha de rede do kernel

    
por 24.04.2018 / 19:09
10

O próprio kernel (não qualquer processo do usuário) é responsável por enviar as mensagens ICMP echo reply em resposta às mensagens ICMP echo request . Portanto, se um host parar de responder a pings, isso geralmente se deve a alguns dos seguintes motivos:

  • A conectividade de rede entre você e o host sendo pingado pode ter sido interrompida. Pode ser devido a vários motivos: danos físicos aos cabos, ruído no caso de wireless, tabelas de roteamento quebradas, ataques de DDoS, roteadores / switches problemáticos entre outros. Você iniciaria a solução de problemas nesse caso usando ethtool(8) , iwconfig(8) , route(8) , ping(8) seu roteador, tcpdump(8) etc. no host de destino.

  • a configuração do firewall no host de destino (ou qualquer roteador / firewall entre você e o host de destino) pode estar limitando a quantidade de pings (ou a quantidade de tráfego de tráfego). Também pode ser devido a ferramentas como fail2ban(8) firewalling on demand. Veja iptables(8) para verificar.

  • houve mau funcionamento de software / hardware no host de destino. O módulo do kernel de rede no host de destino pode ter OOPSed e / ou tornar-se confuso, ou até mesmo o kernel inteiro pode ter o PANICked. Você verá mensagens sobre em dmesg(8) no host de destino ou como saída de tela no console físico (se o acesso físico for impraticável, outra máquina com console serial poderá ajudar.) Se o OOPS / PANIC do kernel é o problema, o kernel mais novo com melhores drivers pode ajudar, ou você pode kludge em torno dos travamentos do sistema com watchdog(8) e drivers auxiliares. Ou você pode alterar as peças de hardware.

por 25.04.2018 / 01:39