Tabla de contenido
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 archivoarchivo.txta la entrada denc.
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 textoGET /, que es una solicitud HTTP GET simple para la raíz del servidor.|: Este es un pipe que toma la salida del comandoechoy la redirige como entrada al siguiente comando.nc [dirección IP servidor] [puerto]: Ejecutanccon 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ón | Descripción |
|---|---|
-l | modo escucha (servidor) |
-k | mantiene la escucha tras desconexión |
-u | UDP en lugar de TCP |
-v | verboso |
-z | scan, no envía datos |
-w N | timeout en segundos |
-p PUERTO | puerto 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) ysocat, 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.