Tengo un controlador de proceso basado en Linux que ocasionalmente se bloquea hasta el punto en el que no puede hacer ping (es decir, puedo hacer ping, luego ya no se puede hacer ping sin modificaciones en la configuración de la red).
Tengo curiosidad, ¿qué proceso / sistema es responsable de responder realmente a los pings? Parece que este proceso se está bloqueando.
network-interface
ping
icmp
Izzo
fuente
fuente
Respuestas:
La pila de red del núcleo maneja los mensajes ICMP, que son los que envía el
ping
comando.Si no recibe respuestas, además de problemas de red o filtrado, y filtrado basado en host / limitación de velocidad / black-holing / etc. significa que la máquina probablemente esté sobrecargada por algo, que puede ser transitorio, o que el kernel se bloquee, lo cual es raro pero puede suceder (hardware defectuoso, etc.), no necesariamente por el tráfico ICMP (sino por tratar de sobrecargarlo con dicho tráfico) puede ser una buena prueba al comienzo de la vida de un servidor para ver cómo sostiene las cosas). En el último caso de bloqueo del kernel, debe tener amplia información en los archivos de registro o en la consola.
También tenga en cuenta que
ping
casi siempre es la herramienta incorrecta para verificar si un servicio está en línea o no. Por varias razones, pero principalmente porque no imita el tráfico real de las aplicaciones, por definición. Por ejemplo, si necesita verificar que un servidor web aún esté activo, debe realizarle una consulta HTTP (puerto TCP 80 o 443), si necesita verificar un servidor de correo, debe realizar una consulta SMTP (puerto TCP 25), si un servidor DNS, una consulta UDP y TCP al puerto 53, etc.fuente
ping
ya que esto crea demasiados falsos positivos en la resolución de problemas, por lo que creo que los usuarios que no saben exactamente qué hace el ping y cómo puede dar resultados engañosos deberían apegarse a otra cosa.No hay un proceso de usuario responsable de responder a los pings. Ping es solo una utilidad para enviar paquetes de eco ICMP. Estos son recibidos y procesados por la pila de red del núcleo
fuente
El propio núcleo (no cualquier proceso de usuario) es responsable de enviar ICMP Echo Reply mensajes en respuesta a la solicitud de eco ICMP mensajes. Entonces, si un host deja de responder a pings, generalmente se debe a algunas de las siguientes razones:
la conectividad de red entre usted y el host que se está haciendo ping podría haberse cortado. Podría deberse a toneladas de razones en sí: daños físicos a los cables, ruido en el caso de la conexión inalámbrica, tablas de rutas rotas, estar bajo ataque DDoS, enrutadores / conmutadores problemáticos entre etc. Comenzaría a solucionar problemas en este caso al usando
ethtool(8)
,iwconfig(8)
,route(8)
,ping(8)
su router,tcpdump(8)
etc. en el host de destino.La configuración del firewall en el host de destino (o cualquier enrutador / firewall entre usted y el host de destino) puede estar limitando la cantidad de pings (o la cantidad de tráfico). También podría deberse a herramientas como
fail2ban(8)
cortafuegos bajo demanda. Veriptables(8)
para verificar.ha habido un mal funcionamiento del software / hardware en el host de destino El módulo del kernel de red en el host de destino podría haber OOPSed y / o confundirse, o incluso el kernel completo podría haber PANICked. Verá mensajes sobre en
dmesg(8)
el host de destino, o como salida de pantalla en la consola física (si el acceso físico no es práctico, otra máquina con consola serie puede ayudar). Si el kernel OOPS / PANIC es el problema, un kernel más nuevo con mejores controladores podría ayuda, o podría analizar los bloqueos del sistema conwatchdog(8)
controladores auxiliares. O puede cambiar partes de hardware.fuente