nc
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.
nc [opciones] HOST PUERTODespiece
5 ejemplosProbar si un puerto está abierto (TCP)
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | nc | Comando | El comando netcat para conexiones de red. |
| 2 | -vz | Opción | -v verboso, -z modo escaneo sin enviar datos. |
| 3 | ejemplo.com | Argumento | El host al que te quieres conectar. |
| 4 | 80 | Argumento | El puerto TCP a probar. |
Muestra si la conexión al puerto 80 en ejemplo.com fue exitosa (open) o falló.
Escuchar en un puerto (servidor simple)
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | nc | Comando | El comando netcat. |
| 2 | -l | Opción | Modo escucha: espera a que alguien se conecte. |
| 3 | 1234 | Valor | El puerto donde escucha. Usa uno mayor a 1024 para no necesitar sudo. |
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
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | nc | Comando | El comando netcat. |
| 2 | localhost | Argumento | Host al que conectarse. |
| 3 | 1234 | Argumento | Puerto al que conectarse. |
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)
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | nc | Comando | El comando netcat. |
| 2 | -l | Opción | Modo escucha. |
| 3 | 5555 | Valor | El puerto por el que va a llegar el archivo. |
| 4 | > | Operador | Guarda en un archivo todo lo que llegue. |
| 5 | recibido.txt | Argumento | El archivo donde queda lo recibido. |
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)
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | nc | Comando | El comando netcat. |
| 2 | -N | Opción | Cierra la conexión al terminar de mandar el archivo. |
| 3 | receptor.local | Argumento | El equipo que está escuchando (puede ser su IP). |
| 4 | 5555 | Valor | El mismo puerto en el que escucha el receptor. |
| 5 | < | Operador | Le pasa el archivo a nc como entrada. |
| 6 | archivo.txt | Argumento | El archivo que quieres mandar. |
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.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -l | Modo escucha (servidor): espera conexiones en el puerto que indiques, por ejemplo nc -l 1234. |
| -v | Muestra información de la conexión: si se conectó, si fue rechazada, etc. |
| -z | Solo prueba si el puerto responde, sin enviar datos. Ideal con -v para revisar puertos. |
| -u | Usa UDP en lugar de TCP. |
| -w | Segundos máximos de espera para conectar o sin recibir datos, por ejemplo -w 3. |
| -N | Cierra 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ó. |
Fallas comunes
| Falla | Remedio |
|---|---|
| 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. |
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.
Ver también
Comprueba si un equipo responde en la red o en internet.
57curlTransfiere datos hacia o desde una URL y muestra la respuesta.
69sshConecta a un servidor o equipo remoto con una sesión segura y cifrada.
68ssMuestra conexiones de red, puertos abiertos y sockets activos.
63netstatMuestra conexiones de red, tablas de rutas y estadísticas de interfaces.