Ejemplos Prácticos del Comando Ping en Linux

Una herramienta indispensable para la administración de redes es el comando Ping en Linux. Es posible que hayas utilizado ping anteriormente para solucionar problemas básicos, pero ¿qué hace este comando?

El comando ping envía solicitudes del Protocolo de Mensajes de Control de Internet (ICMP) a hosts remotos o locales y espera una respuesta. La falta de respuesta podría indicar un problema con la conexión o los propios hosts.

¡Sigue leyendo y explora las formas prácticas de utilizar el comando ping en Linux!

Prerrequisitos

Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener una computadora con Linux con conexión a Internet. Este tutorial utiliza una computadora Ubuntu 20.04.

Asegúrate también de haber abierto una sesión de terminal en tu computadora Linux.

Comprobando la Conectividad de la Red Local

Imagina que estás desarrollando una aplicación web. La prueba falla cuando intentas acceder a la aplicación a través de la dirección loopback del host (127.0.0.1). Antes de arrancarte los cabellos solucionando problemas con la aplicación, asegúrate de que el protocolo TCP/IP funcione internamente utilizando el comando ping.

Las direcciones loopback predeterminadas son 127.0.0.1 y 0:0:0:0:0:0:0:1 (o ::1) para IPv4 e IPv6, respectivamente.

Para verificar la conectividad de la dirección loopback, ejecuta el siguiente comando ping seguido de la dirección loopback en la terminal. Este comando demuestra el uso más básico del comando ping en Linux.

ping 127.0.0.1

Y si la loopback funciona correctamente, deberías ver una salida similar a la captura de pantalla a continuación.

Pinging the loopback address (127.0.0.1)

Alternativamente, hacer ping al nombre de host localhost debería dar el mismo resultado, ya que se resuelve automáticamente a la dirección loopback.

Pinging the loopback address (localhost)

Para detener el comando ping, presiona CTRL+C en la terminal. De lo contrario, el comando ping se ejecutará continuamente.

Nota: No presiones CTRL+Z para detener el comando ping. Hacerlo detendrá el comando, pero el proceso seguirá ejecutándose en segundo plano.

Terminating the ping command in Linux

Entendiendo la Salida del Comando Ping en Linux

Antes de seguir adelante, te beneficiaría entender la salida de manera explícita en lugar de interpretarla solo como “funciona”. Consulta la imagen a continuación y el desglose de los valores que sigue.

Ping command output
  • A (bytes) – Shows the ICMP echo request (packet) size in bytes.
  • B (from) – Shows the target host’s IP address from where the ping command receives the response.
  • C (icmp_seq) – Indicates the order of packet transmission. As you can see, ping sends the ICMP requests in sequence. The value shows icmp_seq=N, where N is the order number.
  • D (TTL) – Shows the ICMP request’s Time-To-Live (TTL) value. The default value is 64, which means that the request can only live up to a maximum of 64 hops and will expire after. The maximum value possible is 255.
  • E (time) – The total time (milliseconds) elapsed the request reached the destination and circled back to the source. This value is also known as the Round Trip Time (RTT). Notice that the time values are less than 0.1 milliseconds in this example since the target is the same machine. The time value increases naturally when the ping destinations are remote or have an internet address.
  • F (statistics) – Shows the summary and statistics of the ping command results. The summary shows the number of packets transmitted and received, packet loss percentage, and the total time. The bottom line shows the minimum, average (mean value), maximum, and standard deviation of the total RTT.

Forzando la Versión del Protocolo de Internet

El comando ping utiliza IPv4 de forma predeterminada. Pero, ¿qué sucede si estás probando la compatibilidad de tu aplicación con IPv6? Para forzar al comando ping a utilizar IPv6, debes especificar la opción -6 en tu comando ping en Linux, como se muestra en el código a continuación.

ping -6 localhost

Como se puede ver a continuación, la respuesta muestra que proviene de la dirección de bucle IPv6 (::1).

Pinging the IPv6 loopback address

En lugar de la opción -6, la opción -4 obliga a ping a utilizar IPv4. Pero dado que ping se establece de forma predeterminada en IPv4, normalmente no es necesario especificar la opción -4.

Limitar el número de respuestas

En los ejemplos anteriores, tuviste que presionar CTRL+C para terminar el comando ping, ya que de lo contrario se ejecutaría continuamente.

La opción -c te permite especificar el número de respuestas que recibirá el comando ping antes de detenerse. ¿Por qué usar esta opción? En algunos casos, es posible que desees probar cómo responde tu sistema a 10, 100, 1000 paquetes ICMP, y así sucesivamente.

Ejecuta el siguiente comando para enviar cinco paquetes ICMP al host de destino. Reemplaza 5 con el número de respuestas ICMP que deseas recibir antes de detenerlo.

ping -c 5 localhost

Como se puede ver a continuación, el comando ping se detuvo después de la quinta solicitud (icmd_seq=5), y no fue necesario presionar CTRL+C para terminarlo.

Ping with a limited request count

Ajustar el intervalo de solicitud

Supongamos que deseas probar la conexión de red entre dos dispositivos, y uno de ellos tiene un ancho de banda bajo. En este caso, puedes aumentar el intervalo entre cada solicitud para que el segundo dispositivo tenga suficiente tiempo para procesar el paquete ICMP actual.

El comando ping envía la solicitud ICMP subsiguiente un segundo después de completar la anterior de forma predeterminada. Para ajustar el retraso, debes especificar la opción -i seguida del valor de retraso en segundos.

Por ejemplo, ejecuta el siguiente comando ping para enviar cinco solicitudes ICMP con un intervalo de dos segundos entre cada una.

ping -c 5 -i 2 localhost

Otro ejemplo, ejecuta el siguiente comando ping para enviar cinco solicitudes ICMP con un intervalo de medio segundo entre cada solicitud.

ping -c 5 -i 0.5 localhost

Comparar los resultados de ambos comandos con diferentes intervalos muestra la diferencia entre los valores totales de tiempo.

Comparing ping results with different intervals

Simulación de un Ataque de Flood

A ping flood is a type of Denial of Service (DoS) attack in which the attacker attempts to overwhelm a targeted device with ICMP packets. The attack aims to overwhelm the targeted machine to respond to so many requests that it becomes overloaded and unavailable to legitimate users.

Puedes simular un ataque de inundación para probar cómo responde tu sistema ante un ataque. Sin embargo, no te preocupes. La simulación de inundación de ping está controlada y puedes detenerla en cualquier momento presionando CTRL+C.

Ejecuta el siguiente comando en tu máquina local para ver cuántas solicitudes puede manejar tu dispositivo por segundo. La opción -f significa enviar varios paquetes de ping rápidamente y sin límite arbitrario.

Sustituye “localhost” por la dirección IP o el nombre de host de la aplicación que deseas probar. Este ejemplo simula el ataque de ping en el host local únicamente. Deja que el comando ping se ejecute durante unos cinco segundos y luego presiona CTRL+C para terminar.

El comando ping -f requiere que seas el usuario root o que tengas privilegios de sudo.

ping -f localhost

Como puedes ver a continuación, el comando ping logró enviar y recibir 124,685 paquetes ICMP en 4276 milisegundos con una pérdida de paquetes del 0%. Bastante bien, ¿no? Pero, en un caso de uso real, verás algo de pérdida de paquetes. La pérdida de paquetes es inevitable porque la red no es perfecta.

Simulating a ping flood attack

Verificación de la Conectividad a Internet

Todo el mundo usa Internet de alguna manera, ¿verdad? Supongamos que intentas cargar un sitio web usando tu navegador, pero el tiempo de carga de la página se siente lento. El síntoma indicaría que la resolución DNS está funcionando, pero algo afecta la velocidad de la red.

Diagnosticar el problema sin herramientas de terceros incluiría el comando ping. El uso del comando es el mismo que cuando pruebas la conectividad de la red local. Pero en lugar de apuntar a la dirección de loopback, especificarías una IP pública o una dirección web.

Ejecuta el siguiente comando para hacer ping a un sitio web público externo. Reemplaza adamtheautomator.com con otra dirección web como desees.

ping -c 5 adamtheautomator.com

De inmediato, notarás que el valor de tiempo es relativamente más alto que cuando haces ping al localhost. Este aumento en el tiempo transcurrido se debe a que la dirección de destino adamtheautomator.com no está en el mismo host ni siquiera en la misma red.

En los pasos anteriores, tu comando ping fue exitoso, pero en el uso del mundo real, hay momentos en que el comando ping fallará por muchas razones posibles.

A continuación, se muestran algunos errores comunes y cómo solucionarlos.

  • Host de destino no alcanzable – Este error significa que no hay una ruta hacia el host de destino. Este error puede ocurrir si el host o dominio está caído.
  • El tiempo de espera de la solicitud expiró – Este error significa que la solicitud al host de destino tardó demasiado (más de 4 segundos o 4000 milisegundos), y la conexión se agotó. Este error puede ocurrir si el host de destino está demasiado ocupado para responder, un firewall bloquea la conexión o hay hardware de red defectuoso (cable, enrutador, etc.).
  • Host desconocido – Este error significa que el DNS no puede resolver el nombre de host a una dirección IP. Verifique que haya ingresado el nombre de host correcto. Si sospecha que su enrutador podría no estar funcionando correctamente, intente reiniciarlo.
  • TTL Expirado en Tránsito – Este error significa que la solicitud ICMP ha expirado antes de llegar a su destino. Su paquete de ping se reduce a cero (0) antes de llegar al host de destino. En la mayoría de los casos, una configuración incorrecta en su tabla de enrutamiento puede causar este error. Considere verificar su tabla de rutas para ver si hay algún problema.

Por si no lo sabías: Los jugadores se refieren al ping como su conexión al servidor de juegos en la comunidad de juegos. Un ping bajo significa una conexión más receptiva, especialmente en juegos de ritmo rápido. Un ping alto indica una conexión menos receptiva y puede hacer que el juego se sienta lento.

Algunos Proveedores de Servicios de Internet (ISP) devuelven una página de búsqueda en lugar de un mensaje de error cuando intentas conectarte a un sitio web que no existe. Puedes obtener un resultado falso positivo porque estás recibiendo una respuesta en lugar de un error.

Guardando la Salida de Ping en un Archivo

La mayoría de los comandos, si no todos, solo devuelven los resultados en la pantalla, y el comando ping en Linux no es diferente. El terminal de Linux tiene operadores de redirección de salida incorporados que te permiten redirigir la salida a un archivo.

Estos operadores de redirección son los siguientes:

El carácter (>), que sobrescribirá el contenido del archivo, y el;

El carácter (>>), que añadirá la salida al contenido existente.

Pero, ¿por qué querrías guardar los resultados del ping en un archivo? Principalmente para llevar un registro y luego analizarlo usando un editor de texto o un analizador de registros.

También puedes usar un programa de hoja de cálculo para crear un gráfico que muestre cómo cambia el tiempo de ping con el tiempo.

Ejecuta el siguiente comando para guardar la salida del ping en un archivo. Este comando escribe toda la salida estándar del comando ping en un archivo llamado log.txt en el disco.

ping -c 10 localhost > log.txt

Mientras el comando ping se está ejecutando, notarás que no hay salida en la pantalla.

Ahora, abre el archivo log.txt en un editor de texto, como nano. O muestra el contenido del archivo ejecutando el comando cat.

# Abrir en un editor de texto
nano log.txt
# O
# Mostrar el contenido en la pantalla
cat log.txt
Opening the ping output file in a text editor
Displaying the ping output file contents on the screen

Conclusión

En este tutorial, has aprendido cómo utilizar el comando ping en Linux con varios ejemplos prácticos. También has aprendido cómo guardar la salida del ping en un archivo en el disco para que puedas analizarlo más tarde.

En este punto, deberías tener una buena comprensión de cómo funciona el comando ping y cómo puede ser útil. Pero antes de salir y empezar a hacer pings a todo lo que veas, hay algunas reglas que debes habilitar en tus grupos de seguridad para permitir el tráfico ICMP.

¡Gracias por leer y feliz aprendizaje!

Source:
https://adamtheautomator.com/ping-command-in-linux/