GNU/Linux >> Tutoriales Linux >  >> Linux

8 ejemplos prácticos de comandos Linux Netcat NC

Netcat o nc es una utilidad de red para depurar e investigar la red.

Esta utilidad se puede utilizar para crear conexiones TCP/UDP e investigarlas. El mayor uso de esta utilidad está en las secuencias de comandos en las que tenemos que lidiar con los sockets TCP/UDP.

En este artículo aprenderemos sobre el comando netcat con algunos ejemplos prácticos.

1. Netcat en una arquitectura servidor-cliente

La utilidad netcat se puede ejecutar en el modo de servidor en un puerto específico escuchando las conexiones entrantes.

$ nc -l 2389

Además, se puede usar en modo cliente intentando conectarse en el puerto (2389) recién abierto

$ nc localhost 2389

Ahora, si escribimos un texto en el lado del cliente, llega al lado del servidor. Aquí está la prueba:

$ nc localhost 2389
HI, server

En la terminal donde se ejecuta el servidor:

$ nc -l 2389
HI, server

Entonces vemos que la utilidad netcat se puede usar en la comunicación del socket del servidor del cliente.

2. Utilice Netcat para transferir archivos

La utilidad netcat también se puede utilizar para transferir archivos. En el lado del cliente, supongamos que tenemos un archivo llamado 'testfile' que contiene:

$ cat testfile
hello test

y en el lado del servidor tenemos un archivo vacío 'prueba'

Ahora, ejecutamos el servidor como:

$ nc -l 2389 > test

y ejecute el cliente como:

cat testfile | nc localhost 2389

Ahora, cuando vemos el archivo 'test' al final del servidor, vemos:

$ cat test
hello test

Entonces vemos que los datos del archivo se transfirieron del cliente al servidor.

3. Netcat admite tiempos de espera

Hay casos en los que no queremos que una conexión permanezca abierta para siempre. En ese caso, a través del interruptor '-w' podemos especificar el tiempo de espera en una conexión. Entonces, después de los segundos especificados junto con el indicador -w, la conexión entre el cliente y el servidor finaliza.

Servidor:

nc -l 2389

Cliente:

$ nc -w 10 localhost 2389

La conexión anterior terminaría después de 10 segundos.

NOTA:No use el indicador -w con el indicador -l en el lado del servidor, ya que en ese caso el indicador -w no causa ningún efecto y, por lo tanto, la conexión permanece abierta para siempre.

4. Netcat admite conectividad IPV6

El indicador -4 o -6 especifica qué tipo de direcciones debe usar la utilidad netcat. -4 obliga a nc a usar la dirección IPV4 mientras que -6 obliga a nc a usar la dirección IPV6.

Servidor:

$ nc -4 -l 2389

Cliente:

$ nc -4 localhost 2389

Ahora, si ejecutamos el comando netstat, vemos:

$ netstat | grep 2389
tcp        0      0 localhost:2389          localhost:50851         ESTABLISHED
tcp        0      0 localhost:50851         localhost:2389          ESTABLISHED

El primer campo en el resultado anterior contendría un sufijo '6' en caso de que se utilicen las direcciones IPV6. Ya que en este caso no lo es, por lo que se establece una conexión entre servidor y cliente utilizando direcciones IPV4.

Ahora, si obligamos a nc a usar direcciones IPV6

Servidor:

$ nc -6 -l 2389

Cliente:

$ nc -6 localhost 2389

Ahora, si ejecutamos el comando netstat, vemos:

$ netstat | grep 2389
tcp6       0      0 localhost:2389          localhost:33234         ESTABLISHED
tcp6       0      0 localhost:33234         localhost:2389          ESTABLISHED

Así que ahora un sufijo '6' con 'tcp' muestra que nc ahora está usando direcciones IPV6.

5. Deshabilitar lectura desde STDIN en Netcat

Esta funcionalidad se puede lograr usando la bandera -d. En el siguiente ejemplo, usamos esta bandera en el lado del cliente.

Servidor:

$ nc -l 2389

Cliente:

$ nc -d localhost 2389
Hi

El texto "Hola" no se enviará al extremo del servidor, ya que al usar la opción -d, la lectura desde la entrada estándar se ha deshabilitado.

6. Forzar al servidor de Netcat a permanecer activo

Si el cliente de netcat está conectado al servidor y luego de un tiempo el cliente se desconecta, normalmente el servidor de netcat también termina.

Servidor:

$ nc -l 2389

Cliente:

$ nc localhost 2389
^C

Servidor:

$ nc -l 2389
$

Entonces, en el ejemplo anterior, vemos que tan pronto como el cliente se desconectó, el servidor también terminó.

Este comportamiento se puede controlar usando el indicador -k en el lado del servidor para obligar al servidor a permanecer activo incluso después de que el cliente se haya desconectado.

Servidor:

$ nc -k -l 2389

Cliente:

$ nc localhost 2389
^C

Servidor:

$ nc -k -l 2389

Entonces vemos que al usar la opción -k, el servidor permanece activo incluso si el cliente se desconecta.

7. Configure el cliente de Netcat para permanecer activo después de EOF

El cliente de Netcat se puede configurar para permanecer activo después de recibir EOF. En un escenario normal, si el cliente nc recibe un carácter EOF, finaliza inmediatamente, pero este comportamiento también se puede controlar si se usa el indicador -q. Este indicador espera un número que represente la cantidad de segundos de espera antes de que el cliente finalice (después de recibir EOF)

El cliente debe iniciarse como:

nc  -q 5  localhost 2389

Ahora, si el cliente alguna vez recibe un EOF, esperará 5 segundos antes de finalizar.

8. Usar Netcat con protocolo UDP

De forma predeterminada, todos los sockets que crea la utilidad nc son protocolos TCP, pero esta utilidad también funciona con el protocolo UDP. Para habilitar el protocolo UDP se usa el indicador -u.

Servidor:

$ nc -4 -u -l 2389

Cliente:

$ nc -4 -u localhost 2389

Ahora, tanto el servidor como el cliente están configurados para usar el protocolo UDP. Esto se puede confirmar con el siguiente comando netstat. Entonces vemos que esta conexión ahora está usando el protocolo UDP.

$ netstat | grep 2389
udp        0      0 localhost:42634         localhost:2389          ESTABLISHED

Linux
  1. 7 ejemplos prácticos del comando cd en Linux

  2. 5 ejemplos prácticos del comando chgrp en Linux

  3. Comando cp en Linux:7 ejemplos prácticos

  4. Comando de apagado de Linux:5 ejemplos prácticos

  5. 10 ejemplos prácticos de comandos de Linux nm

12 ejemplos prácticos de In Command en Linux

Los 50 Ejemplos Prácticos del Comando SED en Linux

15 ejemplos prácticos del comando Rsync en Linux

5 ejemplos prácticos de Tail Command en Linux

Comando echo en Linux:7 ejemplos prácticos

Ejemplos prácticos de comando ping en Linux