Comando «nc» de Linux: Utilidades y funcionalidades

El comando «nc», también conocido como «netcat», es una herramienta de línea de comandos que se utiliza para leer y escribir datos a través de conexiones de red utilizando el protocolo TCP o UDP. Es una herramienta extremadamente flexible y poderosa que permite a los administradores de sistemas realizar una amplia variedad de tareas relacionadas con la red. En este artículo, exploraremos las utilidades y funcionalidades del comando «nc» en Linux.

Utilidades de «nc» en redes y conectividad

El comando «nc» tiene varias utilidades en el ámbito de las redes y la conectividad. Una de las funciones más comunes de «nc» es la transferencia de archivos a través de la red. Con «nc», se puede enviar un archivo desde un sistema a otro utilizando el siguiente comando:

$ nc -w 3 [dirección IP destino] [puerto] < archivo.txt

En este comando:

  • nc: Es el comando netcat.
  • -w 3: Establece un timeout de espera de 3 segundos para la conexión.
  • [dirección IP destino]: Aquí debes reemplazar con la dirección IP del destino al que deseas enviar el archivo.
  • [puerto]: Reemplaza con el número de puerto en el destino.
  • < archivo.txt: Redirige el contenido del archivo archivo.txt a la entrada de nc.

Además de la transferencia de archivos, «nc» también se puede utilizar para realizar pruebas de conectividad. Por ejemplo, se puede comprobar si un servidor determinado está escuchando en un puerto específico utilizando el siguiente comando:

$echo "GET /" | nc [dirección IP servidor] [puerto]

En este comando:

  • echo "GET /": Envía el texto GET /, que es una solicitud HTTP GET simple para la raíz del servidor.
  • |: Este es un pipe que toma la salida del comando echo y la redirige como entrada al siguiente comando.
  • nc [dirección IP servidor] [puerto]: Ejecuta nc con la dirección IP del servidor y el puerto especificado. Aquí, debes reemplazar [dirección IP servidor] con la dirección IP real del servidor al que deseas conectarte, y [puerto] con el puerto correspondiente.

Funcionalidades avanzadas del comando «nc»

El comando «nc» también tiene una serie de funcionalidades avanzadas que lo hacen extremadamente útil en diversas situaciones. Una de estas funcionalidades es la capacidad de establecer conexiones de túnel a través de proxies. Esto puede ser útil para acceder a servicios en una red interna desde una red externa.

Otra funcionalidad interesante de «nc» es la capacidad de realizar escuchas en puertos y direccionar las conexiones a otros puertos o direcciones IP. Esto se puede lograr utilizando la opción «-l» de «nc» junto con las opciones «-p» y «-r» para especificar el puerto y la dirección IP de destino respectivamente.

Casos de uso y ejemplos prácticos de «nc» en Linux

Un caso de uso común de «nc» es la transferencia de archivos. Por ejemplo, si queremos transferir un archivo llamado «archivo.txt» desde el sistema local al sistema remoto, podemos utilizar el siguiente comando:

$ nc -w 3 [dirección IP destino] [puerto] < archivo.txt

Otro caso de uso es la comprobación de la conectividad a un servidor. Si queremos verificar si un servidor está escuchando en el puerto 80, podemos utilizar el siguiente comando:

echo "GET / HTTP/1.1" | nc [dirección IP servidor] 80

Además, «nc» también se puede utilizar para crear túneles a través de proxies. Por ejemplo, si queremos acceder a un servicio en el puerto 8080 de un servidor interno a través de un proxy en el puerto 8888, podemos utilizar el siguiente comando:

$ nc -X connect -x [dirección IP proxy]:[puerto proxy] [dirección IP servidor interno] 8080

El comando «nc» es una herramienta increíblemente útil y versátil en Linux que proporciona a los administradores de sistemas capacidades avanzadas para trabajar con redes y conectividad. Desde la transferencia de archivos hasta la comprobación de la conectividad y la creación de túneles a través de proxies, «nc» ofrece una amplia gama de utilidades y funcionalidades. Con un poco de práctica y comprensión, los administradores de sistemas pueden aprovechar al máximo esta poderosa herramienta en su trabajo diario.

Referencia rápida: sintaxis, opciones y ejemplos de nc

Sinopsis: nc [OPCIONES] HOST PUERTO

Opciones más utilizadas

OpciónDescripción
-lmodo escucha (servidor)
-kmantiene la escucha tras desconexión
-uUDP en lugar de TCP
-vverboso
-zscan, no envía datos
-w Ntimeout en segundos
-p PUERTOpuerto local

Ejemplos prácticos

nc -zv host 80 443

comprueba puertos abiertos

nc -lk 9000 > recibido.bin

servidor que guarda lo que reciba

nc host 9000 < envio.bin

cliente que envía un fichero

echo 'GET / HTTP/1.0\n' | nc host 80

request HTTP manual

nc -u host 514 <<< 'mensaje'

syslog por UDP

Buenas prácticas y trucos

  • Existen variantes: ncat (nmap) y socat, más potentes en TLS, filtros y PTY.

Comandos relacionados

socat, ncat, curl

Esta referencia rápida está pensada como hoja de trucos: pruébala con --help y con man nc para ver todas las opciones disponibles en tu distribución.

Otros Comandos Linux