Administración del servidor

15 ejemplos de comando ping de Linux para el diagnóstico de la red

Gracias a Linux, tenemos acceso a muchas herramientas que facilitan la administración de las redes y el diagnostico. En este sentido, los comando ping de Linux son una de las herramientas más útiles para los administradores de sistemas y los administradores de redes.

Su función básica es determinar si uno de los hosts de la red está disponible o no. Sin embargo, en este post, nos referiremos a otra capacidad más avanzada de los comandos Ping de Linux.

 

 

¿Para qué se utiliza un comando ping?

  • El comando ping es una de las herramientas más básicas para trabajar con redes. Su propósito es diagnosticar errores en la  conexión de red.De esta forma, es posible saber si un nodo de red ha perdido conectividad. Por otra parte, también es útil para realizar otras tareas de diagnóstico como las siguientes:
  • Medir el tiempo que le toma a dos nodos de red comunicarse.
  • También seremos capaces de identificar la dirección IP de un host especifico. Esta característica puede ser tanto en el Internet como en una red privada.
  • El comando Ping puede ser utilizado en un bash script para realizar chequeos automáticos con los nodos de red.
  • Permite conocer si existe una conexión con un equipo especifico.

Como puede ver, es un comando necesario para la administración de las redes y servidores.

 

¿Como funciona un comando ping?

En Linux, el funcionamiento de los comandos ping es bastante sencillo de explicar. El comando envía una serie de pequeños paquetes a un nodo especifico.

Este nodo puede ser probado utilizando ya sea una dirección IP o un nombre de domino. Entonces luego que el paquete es enviado, el comando verifica y mide el tiempo que tarda en recibir una respuesta del nodo de destino.

Como podría esperar, el tiempo de respuesta puede estar afectado por condiciones como la ubicación geográfica entre los puntos de conexión y cualquier pieza de hardware utilizado entre dos nodos.

Por ejemplo, en redes cableadas privadas, el comando obtendrá mejores tiempos que con una red con múltiples routers o puentes.

Sin embargo, la información que el comando generara juzgara si la red está en buena o mala condición.

La sintaxis del comando es la siguiente:

ping [options] [destination]

Algunas de las opciones más útiles y utilizadas de los comandos ping son las siguientes:

  • -c: Con esta opción, puede especificar cuantos paquetes enviar.
  • -s: Esta opción le permite cambiar el tamaño por defecto de los paquetes.
  • -v: Modo verbal.
  • -w: Especifica un tiempo en segundos en el que la ejecución del comando terminara. Sin importar cuantos paquetes el comando haya enviado o recibido.
  • -i: Con esta opción, puede especificar la red o interface a utilizar.

El nodo de destino puede ser especificado por una dirección IP o un nombre de dominio.

 

¿Puedo utilizar el comando Ping con un Proxy?

Un proxy es un servidor o aplicación que actúa como intermediario para la conexión entre dos puntos en una red. Es el hombre en el medio que hace el pedido directamente a otro nodo.

El problema es que el comando ping requiere una conexión de red directa entre los nodos.

Por lo tanto, el comando ping generalmente no puede funcionar apropiadamente si existe un proxy detrás de él.

Por lo que una posible solución es que muchos sitios web ofrecen los servicios del comando ping. Por otra parte, para algunas tareas del comando ping, es posible utilizar el comando curl. También, usted puede utilizar una VPN con lo que esconderá su IP.

Sin embargo, en algunas distribuciones Linux, este comando no está instalado por defecto. Así que primero verifíquelo y luego instálelo en caso de que no lo este.

 

Protocolo Ping IPV6

Normalmente, cuando utilizamos el comando Ping, utilizamos la dirección IP con el protocolo IPv4. Sin embargo, con el advenimiento del protocolo IPV6, es cada vez más común notar direcciones en este formato.

El núcleo de Linux soporta el protocolo IPv6 desde la versión 2.2, por lo que todas las distribuciones Linux actualmente lo soportan.

La sintaxis básica es como sigue:

$ ping -6 2001:4860:4860::8888

En versiones antiguas, había un comando ping6. En versiones recientes de Linux, ping6 no existe más y su funcionalidad ha sido sumergido en ping y funciona de la misma forma que usted vio.

La sintaxis básica es como sigue:

ping6 [options] [Destination]

Con la opción -c, podemos especificar el número de paquetes a enviar y con -i para la interfaz de red que usted utilizara. Por ejemplo:

ping6 2001:4860:4860::8888

Usar ping en una dirección IPv6

 

Ping un puerto especifico

Algunas veces queremos conocer si un puerto en específico en un nodo está activo. Sin embargo, el ping comando no proporciona esta funcionalidad, pero es posible hacerlo con el comando telnet que está instalado en Linux por defecto.

Para hacer esto, solo utilice la siguiente sintaxis:

telnet [host] [port]
telnet google.com 80

Ping un puerto especifico

De esta forma, es posible ping un puerto especifico en un nodo de una red en una forma primitiva.

 

Ping con tiempo

Aunque el comando ping muestra información útil, puede ser un poco simple. Sin embargo, es posible modificar la operación del comando un poco, para hacerlo muestra la fecha del paquete enviado.

Esto puede hacer la información placentera al ojo y puede ser útil para script y logs.

Esta sintaxis es suficiente para hacerlo. Sin embargo, necesita instalar el paquete ccze.

Como puede ver, muestra el tiempo para cada paquete enviado.

ping [host] | xargs -n1 -i bash -c 'echo `date +%F\ %T`" {}"' | ccze

Ping con tiempo

As you can see, it shows the time for every packet sent.

 

Ping todos los hosts en una subred dada

Utilizando el comando ping, pude enviar una señal ping para todos los hosts en una red o subred. Para esto, es suficiente agregar la opción -b y la transmisión de pin a la dirección IP de cualquier red la cual termina con 255.

por ejemplo:

ping -b -c 4 192.168.1.255

Opción de difusión en el comando ping

Así que, si el destino es inalcanzable, probablemente ellos bloquearon los paquetes ICMP enviados por el comando ping o probablemente existe un problema de red o un problema en la tabla de ruta.

 

¿Como finalizar un ping?

Por defecto, el comando ping en Linux continuamente envía paquetes a hosts. Sin embargo, una vez que la información es disponible, es necesario terminar la ejecución del comando ping.

Para hacerlo, simplemente presione las siguientes teclas:

CTRL + C

detener el comando de ping de Linux

De esta forma el comando se detendrá inmediatamente.

Finalizar luego de una cuenta especifica

Usted puede limitar la cuenta de los paquetes a 10 por ejemplo. Cuando finalice de enviar los 10 paquetes, se detendrá.

ping -c 10 [host]

Usando el comando ping de Linux

 

¿Dónde está ubicado el comando ping en Linux?

En un sistema Unix derivado como Linux, binarios son comúnmente encontrados en el camino

/usr/bin/

.

En este directorio, usted encontrara muchos binarios que utilizaremos como comandos en la terminal. En otros sistemas operativos de la familia Linux, también es posible colocarlo en directorio

/usr/sbin/

Así, que podemos revisarlo utilizamos el comando ls:

$ ls /usr/bin | grep ping

La ubicación del comando ping de Linux

En esta imagen, puede ver que el comando ping está localizado en

/usr/bin/

.

Otra forma, en la que pueda utilizar el comando Which para localizar cualquier comando en Linux:

$ which ping

Mostrará lo siguiente::

/usr/bin/ping

 

Revisar la latencia utilizando el comando ping

Una de las posibilidades ofrecidas por el comando ping es que usted puede medir el tiempo de conexión. Esto es la latencia.

Para medir la latencia utilizando el comando ping, solo utilícelo y preste atención a la salida de la pantalla:

ping -c 4 [host]

ping -c 4 192.168.1.1

Usando ping para verificar la latencia

Como podemos ver, 4 paquetes han sido enviados al destino con cierto tiempo de respuesta.

Al fondo, existe una línea que comienza como sigue:

rtt min/avg/max/mdev

El segundo valor luego del signo de igual es el valor de la latencia. En este caso el valor es 6.798.

Verifique la latencia con ping

Con la latencia, es posible determinar los hosts que tienen conectividad inferior al resto. De esta forma, seremos capaces de tomar las medidas pertinentes.

 

Encontrar la MTU ideal

La MTU (Unidad Máxima de Transmisión) es un valor que estáticamente expresa el tamaño en bytes de la unidad de datos más larga que puede ser enviada a través de la red.

Actualmente, debido a medidas de seguridad, más y más redes están previniendo que la MTU trabaje. Sin embargo, la mayoría de las redes de área local de Ethernet utilizan una MTU de 1500 Bytes.

Si quiere encontrar el valor ideal de la MTU utilizando el comando ping, defina el valor inicial y disminuya hasta que no exista error. Si el valor es muy alto, obtendremos el siguiente error:

ping: local error: Message too long

Para hacer esto, utilice la siguiente sintaxis:

ping -M do -s [initial_value] [host]

Por ejmeplo:

ping -M do -s 1473 192.168.1.1

Comprobación de la MTU con ping

En este caso, el valor del tamaño del paquete es muy grande. Por lo que lo disminuiré. En este cso el valor optima es 1472.

Valor óptimo del tamaño del paquete

Si usted obtiene otro mensaje, el valor inicial debe disminuir uno por uno hasta que obtenga el resultado deseado.

Si el valor de la MTU es conocido. Puede ser utilizado para mejorar el comportamiento de la red. Especialmente si esta es una gran o inclusive una red metropolitana.

 

Ping en la capa 2 (utilizando arping)

Con el comando ping, seremos capaces de realizar pruebas conociendo la dirección IP de un nodo específico dentro de la red. Esto es porque el comando ping funciona en capa 3 del OSI model (red)

Por otra parte, es posible utilizar otro comando que está incorporado en Linux como arping.

Este comando trabaja muy similarmente a ping, pero funciona en la capa 2 del OSI model.

La sintaxis del comando es como sigue:

$ sudo arping [Ip_address]
$ sudo arping 192.168.1.1

Usted obtendrá un resultado como el siguiente:

Obtener dirección MAC

La pantalla de salida del comando muestra el primer tamaño del paquete enviado y luego la dirección MAC del nodo. Así como también el tiempo de respuesta.

Nota que este comando no está instalado por defecto en Debian Linux y derivativas. Por lo que tiene que instalarlo luego puede correrlo como raíz.

 

Ping un nombre de dominio

Por defecto, el comando ping envía paquetes de pruebas al destino utilizando la dirección IP o el nombre del dominio de destino. También debería notar que la mayoría de las implementaciones ping en Linux no resolve DNS en reversa.

Por ejemplo, si usted utiliza el comando ping para agregar una dirección IP, solamente devolverá la dirección IP del host en la salida. A la inversa, si hemos especificado un nombre de dominio lo resolverá y mostrará la IP de la salida.

Revise la salida en el siguiente comando:

$ ping google.com

 

Ping route (using traceroute)

Ping una ruta (utilizando traceroute)

El comando ping no muestra la ruta desde la fuente hasta el destino alcanzado.

Y esto puede ser bastante útil en caso de que la conexión con el host haya sido perdida porque podemos entender a qué punto la conexión ha sido perdida.

El comando tracert o traceroute trabaja en una forma similar al ping comando. La ventaja de este es que muestra el camino que el paquete toma, mostrando así su ruta.

Como el comando ping viene instalado en la mayoría de las distribuciones Linux. La sintaxis es como se muestra:

traceroute [hostname/IPaddres]

Ping route en Linux

De esa forma podemos ver las rutas que el paquete está tomando.

 

Correr comandos si ping falla

Supóngase que usted quiere ser alertado cuando el comando ping falla. Para hacer esto, usted necesita incorporar el comando ping en un bash script para establecer la condición deseada.

Por ejemplo, este Shell script le permite revisar si el comando ping falla:

#! /bin/bash

ping -c 1 [host]

If [ $? -eq 0]; then

    #Your_command_here

Fi

 

Establecer el tamaño del paquete ping

El tamaño de los paquetes enviados por el comando ping a los hosts es de 56 bytes. Es lo suficientemente bajo como para no afectar la operación de la red.

Sin embargo, es posible cambiar a otro valor. Para hacer esto, simplemente agregue la -s opción con el tamaño de paquete deseado.

Por ejemplo:

ping -s [packet_size] hostname/IP

Si usted quiere que el tamaño sea 100 bytes, solo utilice el siguiente comando:

ping -s 100 192.168.1.1

Cambiar el tamaño del paquete

Recuerde que puede variar ligeramente por el MTU.

 

Deshabilitar el comando ping

Si somos responsables para el mantenimiento de una red, podríamos querer deshabilitar las respuestas ping en cualquier momento. Podemos hacerlo temporalmente o permanentemente, de acuerdo a sus necesidades.

Si queremos desactivar lo temporalmente, es suficiente utilizar este comando como usuario raíz:

$ su

$ echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Desactivar ping

Esto deshabilitara la respuesta del comando ping, pero solo hasta que reinicie el sistema.

Si usted quiere hacerlo permanentemente, tiene que editar el siguiente archivo

/etc/sysctl.conf

y agregamos la siguiente línea:

$ nano /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1

Deshabilitar ping permanentemente

Entonces guarda el archivo y salga. Para aplicar los cambios, utilice este comando:

$ sysctl -p

Aplicando los cambios

Esto deshabilitara el comando ping o la respuesta de los paquetes ICMP.

 

Conclusión

En este post, hemos explicado en detalle cómo funciona el comando ping en Linux. Desde su utilidad hasta su desactivación. El comando ping es uno de los comandos más fáciles de utilizar.

Esto hace, a la persona responsable por la operación de la red, conocer dónde está el problema para que pueda tomar acción.

Espero que encuentre este post útil. Siga regresando.

Gracias.

Mokhtar Ebrahim
Fundadora de LikeGeeks. Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *