Nping es una herramienta para generar paquetes de red, analizar respuestas y medición de tiempos de respuesta. Es capaz de generar paquetes para un amplio rango de protocolos de red, permitiendo modificar prácticamente cualquier campo en la cabecera del protocolo. Puede ser utilizado como una simple herramienta de ping, ya sea para detectar hosts activos como para medir tiempos de respuesta de diferentes protocolos, pero también para correr tests de stress, hacer trazas de rutas e implementar ataques de ARP y DoS.

Este artículo demuestra el uso básico de Nping para escanear puertos en una red y medir tiempos de respuesta de un protocolo. Otra buena herramienta para tener a mano todo SysAdmin o experto en seguridad informática y redes.

El utilitario nping es parte del paquete nmap, por ello sus opciones son muy similares a las de dicha herramienta. A diferencia de otros utilitarios para ping y generación de paquetes, Nping soporta múltiples targets y puertos. Esto permite escanear y medir respuestas para múltiples hosts en un solo comando. Todo lo que nos ea una opción en la línea de comandos es interpretado como un target, ya sean direcciones IP, rangos y nombres de hosts. Es posible escanear redes completas utilizando el formato RED/MÁSCARA, por ejemplo 192.168.0.0/24.

Para instalar Nping en Debian y derivados, simplemente ejecutar apt install nmap.

Veamos algunos ejemplos de uso.

Escanear todos los puertos 80 y 443 en un rango IP

Para escanear todos los puertos 80 y 443 (HTTP y HTTPS, respectivamente) abiertos en un rango de direcciones IP o subred, es posible utilizar el siguiente comando:

root@hal9000:~# nping -c 1 --tcp -p 80,443 192.168.56.105-109

Starting Nping 0.7.70 ( https://nmap.org/nping ) at 2019-12-09 08:33 -03
SENT (0.0457s) TCP 192.168.10.59:42834 > 192.168.56.105:80 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
SENT (1.0459s) TCP 192.168.10.59:42834 > 192.168.56.106:80 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (1.0480s) TCP 192.168.56.106:80 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=4290209608 win=29200 <mss 1460>
SENT (2.0479s) TCP 192.168.10.59:42834 > 192.168.56.107:80 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (2.0720s) TCP 192.168.56.107:80 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=3334738587 win=29200 <mss 1460>
SENT (3.0491s) TCP 192.168.10.59:42834 > 192.168.56.108:80 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (3.0960s) TCP 192.168.56.108:80 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=2167979459 win=29200 <mss 1460>
SENT (4.0510s) TCP 192.168.10.59:42834 > 192.168.56.109:80 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (4.1280s) TCP 192.168.56.109:80 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=4064106646 win=29200 <mss 1460>
SENT (5.0531s) TCP 192.168.10.59:42834 > 192.168.56.105:443 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
SENT (6.0542s) TCP 192.168.10.59:42834 > 192.168.56.106:443 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (6.1760s) TCP 192.168.56.106:443 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=3178371044 win=29200 <mss 1460>
SENT (7.0560s) TCP 192.168.10.59:42834 > 192.168.56.107:443 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (7.2000s) TCP 192.168.56.107:443 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=4213414837 win=29200 <mss 1460>
SENT (8.0580s) TCP 192.168.10.59:42834 > 192.168.56.108:443 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (8.2280s) TCP 192.168.56.108:443 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=319509203 win=29200 <mss 1460>
SENT (9.0593s) TCP 192.168.10.59:42834 > 192.168.56.109:443 S ttl=64 id=51997 iplen=40  seq=75501853 win=1480 
RCVD (9.2520s) TCP 192.168.56.109:443 > 192.168.10.59:42834 SA ttl=63 id=0 iplen=44  seq=1494948517 win=29200 <mss 1460>
 
Statistics for host 192.168.56.105:
 |  Probes Sent: 2 | Rcvd: 0 | Lost: 2  (100.00%)
 |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Statistics for host 192.168.56.106:
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 121.714ms | Min rtt: 2.007ms | Avg rtt: 61.860ms
Statistics for host 192.168.56.107:
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 143.979ms | Min rtt: 24.024ms | Avg rtt: 84.001ms
Statistics for host 192.168.56.108:
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 169.955ms | Min rtt: 46.870ms | Avg rtt: 108.412ms
Statistics for host 192.168.56.109:
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 192.630ms | Min rtt: 76.922ms | Avg rtt: 134.776ms
Raw packets sent: 10 (400B) | Rcvd: 8 (368B) | Lost: 2 (20.00%)
Nping done: 5 IP addresses pinged in 9.29 seconds

Se observan 2 paquetes por IP, ya que estamos escaneando 2 puertos (80 y 443). Lógicamente cada intento se arma en un paquete separado. Cuando se especifícan múltiples hosts y puertos, Ngping rota las solicitudes en modo round-robin. Esto permite que un host lento tenga tiempo suficiente para enviar sus respuestas antes de que el siguiente paquete sea enviado.

La opción -c es idéntica a la de la herramienta ping y permite controlar cuántas solicitudes enviar a cada target.

Con un poco de magia usando grep y cut es posible obtener un listado en formato IP:PUERTO abiertos:

root@hal9000:~# nping -c 1 --tcp -p 80,443 192.168.56.105-109 | grep RCVD | cut -d' ' -f4
192.168.56.106:80
192.168.56.107:80
192.168.56.108:80
192.168.56.109:80
192.168.56.106:443
192.168.56.107:443
192.168.56.108:443
192.168.56.109:443

Medir tiempos de respuesta para un protocolo

Es posible utilizar Nping para medir tiempos respuestas de un protocolo especificado mediante IP o nombre de host y puerto, en adición a alguna de las siguientes opciones (para cada protocolo soportado): --tcp-connect, --tcp, --udp, --icmp, --arp, --traceroute.

Por ejemplo, el siguiente comando toma 10 muestras cada 5 segundos para el puerto 443 de este sitio:

root@hal9000:/home/emi# nping -c 10 --delay 5 --tcp -p 443 www.linuxito.com

Starting Nping 0.7.70 ( https://nmap.org/nping ) at 2019-12-09 09:15 -03
SENT (0.0415s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (0.2239s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=465729216 win=29200 <mss 1460>
SENT (5.0440s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (5.3400s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=543890917 win=29200 <mss 1460>
SENT (10.0480s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (10.2400s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=622078404 win=29200 <mss 1460>
SENT (15.0519s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (15.3559s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=700266894 win=29200 <mss 1460>
SENT (20.0559s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (20.2640s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=778452462 win=29200 <mss 1460>
SENT (25.0600s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (25.3919s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=856640178 win=29200 <mss 1460>
SENT (30.0639s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (30.3200s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=934827085 win=29200 <mss 1460>
SENT (35.0680s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (35.2360s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=1013017129 win=29200 <mss 1460>
SENT (40.0726s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (40.3600s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=1091214153 win=29200 <mss 1460>
SENT (45.0760s) TCP 192.168.56.59:29690 > 192.184.81.204:443 S ttl=64 id=48036 iplen=40  seq=3184051419 win=1480 
RCVD (45.2720s) TCP 192.184.81.204:443 > 192.168.56.59:29690 SA ttl=52 id=0 iplen=44  seq=1169392058 win=29200 <mss 1460>
 
Max rtt: 331.865ms | Min rtt: 167.978ms | Avg rtt: 242.160ms
Raw packets sent: 10 (400B) | Rcvd: 10 (460B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 45.31 seconds

Al final de la salida se resume el tiempo de respuesta máximo, promedio y mínimo. Junto con la cantidad de paquetes enviados, recibidos y perdidos.

Otro ejemplo, esta vez hacia Google:

root@hal9000:/home/emi# nping -c 10 --delay 5 --tcp -p 443 www.google.com

Starting Nping 0.7.70 ( https://nmap.org/nping ) at 2019-12-09 09:26 -03
SENT (0.0488s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (0.2269s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=62123 iplen=44  seq=4064008129 win=60720 <mss 1380>
SENT (5.0509s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (5.3349s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=64911 iplen=44  seq=4142165842 win=60720 <mss 1380>
SENT (10.0549s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (10.2389s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=1915 iplen=44  seq=4220352716 win=60720 <mss 1380>
SENT (15.0589s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (15.3509s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=4650 iplen=44  seq=3573382 win=60720 <mss 1380>
SENT (20.0629s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (20.2469s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=7506 iplen=44  seq=81760462 win=60720 <mss 1380>
SENT (25.0669s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (25.3509s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=10260 iplen=44  seq=159948630 win=60720 <mss 1380>
SENT (30.0709s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (30.2669s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=12946 iplen=44  seq=238135561 win=60720 <mss 1380>
SENT (35.0749s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (35.3949s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=15514 iplen=44  seq=316323805 win=60720 <mss 1380>
SENT (40.0789s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (40.3109s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=17982 iplen=44  seq=394510481 win=60720 <mss 1380>
SENT (45.0829s) TCP 192.168.56.59:62960 > 172.217.8.68:443 S ttl=64 id=28122 iplen=40  seq=2989460599 win=1480 
RCVD (45.4269s) TCP 172.217.8.68:443 > 192.168.56.59:62960 SA ttl=118 id=20531 iplen=44  seq=472697937 win=60720 <mss 1380>
 
Max rtt: 344.026ms | Min rtt: 178.077ms | Avg rtt: 249.778ms
Raw packets sent: 10 (400B) | Rcvd: 10 (460B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 45.47 seconds

Linuxito tiene mejor tiempo de respuesta promedio que Google (al menos desde América Latina).

Para más información, consultar la guía de Nping en las referencias a continuación.

Referencias

Compartí este artículo