Comandos LinuxExplicados en español
/
Ficha62 / 104
Categoría
Redes
Ejemplos
5
Ver también
ping · curl · ssh · ss · netstat

nc

netcat (el «gato» de la red: lee y escribe datos por TCP o UDP)

Lee y escribe datos por TCP/UDP para probar conexiones de red.

Sirve para probar si un puerto está abierto, abrir una conexión rápida entre dos equipos o pasar un archivo sin montar ningún servicio. Lo usas para diagnosticar la red y comprobar que un servicio escucha. Ubuntu trae la versión netcat-openbsd, que es la que se explica aquí; en Debian se instala con sudo apt install netcat-openbsd.

Sintaxisnc [opciones] HOST PUERTO
§ 1

Despiece

5 ejemplos
Probar si un puerto está abierto (TCP)

Probar si un puerto está abierto (TCP)

4 piezas
Lámina01 / 05
Comandonc -vz ejemplo.com 80
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1ncComandoEl comando netcat para conexiones de red.
2-vzOpción-v verboso, -z modo escaneo sin enviar datos.
3ejemplo.comArgumentoEl host al que te quieres conectar.
480ArgumentoEl puerto TCP a probar.
Resultado

Muestra si la conexión al puerto 80 en ejemplo.com fue exitosa (open) o falló.

Escuchar en un puerto (servidor simple)

3 piezas
Lámina02 / 05
Comandonc -l 1234
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1ncComandoEl comando netcat.
2-lOpciónModo escucha: espera a que alguien se conecte.
31234ValorEl puerto donde escucha. Usa uno mayor a 1024 para no necesitar sudo.
Resultado

Queda esperando una conexión. Lo que llegue se muestra en pantalla y lo que escribas se manda al otro lado. Sales con Ctrl+C.

Conectarse a un puerto

3 piezas
Lámina03 / 05
Comandonc localhost 1234
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1ncComandoEl comando netcat.
2localhostArgumentoHost al que conectarse.
31234ArgumentoPuerto al que conectarse.
Resultado

Se establece conexión con el servidor nc que escucha en 1234; pueden enviarse mensajes de ida y vuelta.

Recibir un archivo (lado que escucha)

5 piezas
Lámina04 / 05
Comandonc -l 5555 > recibido.txt
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1ncComandoEl comando netcat.
2-lOpciónModo escucha.
35555ValorEl puerto por el que va a llegar el archivo.
4>OperadorGuarda en un archivo todo lo que llegue.
5recibido.txtArgumentoEl archivo donde queda lo recibido.
Resultado

Este equipo espera en el puerto 5555. Cuando el otro equipo mande el archivo, queda guardado como recibido.txt y nc se cierra solo.

Enviar un archivo (lado que se conecta)

6 piezas
Lámina05 / 05
Comandonc -N receptor.local 5555 < archivo.txt
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1ncComandoEl comando netcat.
2-NOpciónCierra la conexión al terminar de mandar el archivo.
3receptor.localArgumentoEl equipo que está escuchando (puede ser su IP).
45555ValorEl mismo puerto en el que escucha el receptor.
5<OperadorLe pasa el archivo a nc como entrada.
6archivo.txtArgumentoEl archivo que quieres mandar.
Resultado

El contenido de archivo.txt viaja al otro equipo y se guarda allá. Sin -N la conexión se queda abierta y tienes que cortarla con Ctrl+C. Ojo: va sin cifrar; para algo sensible usa scp.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-lModo escucha (servidor): espera conexiones en el puerto que indiques, por ejemplo nc -l 1234.
-vMuestra información de la conexión: si se conectó, si fue rechazada, etc.
-zSolo prueba si el puerto responde, sin enviar datos. Ideal con -v para revisar puertos.
-uUsa UDP en lugar de TCP.
-wSegundos máximos de espera para conectar o sin recibir datos, por ejemplo -w 3.
-NCierra la conexión cuando se acaba lo que le mandaste por la entrada. Necesario al enviar un archivo para que el otro lado sepa que terminó.
§ 3

Fallas comunes

FallaRemedio
nc -l pide permiso o el puerto ya está en uso.Usa un puerto mayor a 1024 (o más alto) y verifica con ss -tlnp o netstat -tlnp que esté libre. Para puertos < 1024 necesitas sudo.
Confundir nc de diferentes variantes (BSD vs tradicional).El comportamiento de -p/-l varía entre netcat-traditional y netcat-openbsd. Si falla, prueba la otra variante o revisa man nc de tu sistema.
Transferir sin -N y la conexión queda abierta.Usa -N del lado que envía para que la conexión se cierre al terminar el archivo.
§ 4

Preguntas frecuentes

¿Para qué sirve nc (netcat)?
Sirve para leer y escribir datos por TCP o UDP. Es muy útil para probar puertos, hacer conexiones rápidas, debug de red o transferir archivos sencillos.
¿Cómo pruebo si un puerto está abierto?
Con nc -vz host puerto. Por ejemplo nc -vz ejemplo.com 80 te dice si el puerto 80 TCP responde (open/closed).
¿Cuál es la diferencia entre nc con y sin -u?
Sin -u usa TCP (confiable, orientado a conexión). Con -u usa UDP (sin conexión, más rápido pero no garantiza entrega).
¿Cómo transfiero un archivo con netcat?
En el equipo que recibe: nc -l 5555 > archivo. En el que envía: nc -N IP-del-receptor 5555 < archivo. El archivo viaja sin cifrar, así que para algo sensible usa scp.
¿Qué hace -z en nc?
Activa modo escaneo (zero-I/O): intenta conectar pero no envía datos, solo para ver si el puerto responde. Ideal para chequeos rápidos.
§ 5

Ver también