In Linux y Windows Última actualizaciónated:
Comparte en:
Cloudways ofrece alojamiento en la nube administrado para empresas de cualquier tamaño para alojar un sitio web o aplicaciones web complejas.

Telnet es un protocolo de red que se utiliza para acceder de forma remota a una computadora y proporciona comunicación bidireccional basada en texto. Por lo tanto, necesita un servidor telnet y un cliente para comunicarse entre sí.

Telnet es uno de los populares Linux/Windows utilidades que durante mucho tiempo han cumplido su propósito.

Un problema importante con telnet en los sistemas modernos es que no es seguro. Toda la comunicación en telnet se realiza en texto sin formato y todo el tráfico de la red no está cifrado. Esencialally Cualquiera con acceso y herramientas adecuados puede espiar el tráfico de la red para leerlo. Como tal, la mayoría de los sistemas operativos Linux modernos no vienen con telnet preinstalado y otros recomiendan no usarlo.

Con el advenimiento de SSH o el protocolo Secure Shell, que es más que un reemplazo cifrado de telnet, el uso de telnet para el propósito previsto ha quedado descartado desde hace mucho tiempo.ated. Pero hay una alternativaate uso de telnet que muchos administradores de sistemas y entusiastas de la tecnología todavía usan, que consiste en verificar la conectividad de los puertos TCP remotos.

Uno puede simplemente verificar si el puerto TCP remoto está escuchando y respondiendo correctamente usando el comando telnet. El siguiente fragmento muestra cómo podemos verificar si google.com está en funcionamiento comprobando HTTP/HTTPS Conectividad.

$ telnet google.com 80
Trying 142.250.183.206...
Connected to google.com.
Escape character is '^]'.
^]
telnet> quit
Connection closed.

$
$ telnet google.com 443
Trying 142.250.183.206...
Connected to google.com.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
$

Un puerto TCP que no está abierto o accesible se comportará como se muestra a continuación cuando se marque con telnet:

$ telnet google.com 22
Trying 142.250.193.174...
^C
$

Esto facilita la resolución de problemas de conectividad de red simples en combinación con ping, traceroute or tracepath, netstat etc comandos.

Si estás usando RHEL 8 (o incluso versiones anteriores de RHEL/CentOS), tiene la opción de usar nc (o Ncat o Network Connector), que admite muchos diagnósticos de red.related opciones. Discutiremos cómo instalar y usar esta herramienta en RHEL8 y sistemas similares.

¿Qué es nc?

nc (o Ncat) es una popular herramienta de línea de comandos de uso general para leer, escribir, redirigir y cifrar datos a través de una red. Origenally escrito para nmap proyecto, ahora hay múltiples Netcat implementaciones disponibles. Funciona con TCP y UDP en IPv4 e IPv6 y proporciona casos de uso potenciales ilimitados.

A continuación se presentan algunas de las principales características de nc utilidad:

  • Habilidad de encadenar ncats juntos
  • Redirección de puertos TCP, UDP y SCTP a otros sitios
  • Cifrar la comunicación con soporte SSL
  • Compatibilidad con proxy a través de proxies SOCK4/5 o HTTP (incluida la autenticación)
  • Soporta múltiples platformas, incluyendo Windows, Linux y macOS

Instalando nc

nc está disponible como parte de los repositorios predeterminados en los sistemas RHEL. Para instalarlo en el sistema RHEL 7, simplemente emita el siguiente comando en la terminal:

$ sudo yum install -y nc

Para el sistema RHEL 8, puede usar dnf como:

$ sudo dnf install -y nc

Comprobar la conectividad TCP

Frente a nc ofrece una serie de características que admiten una serie de casos de uso en todas las aplicaciones, uno de los más comunes es durante la resolución de problemas de red en lugar de telnet.

nc puede mostrar si puede llegar a un puerto TCP. Aquí está la sintaxis:

$ nc -vz <IP/DNS> <Port>

Por ejemplo, si quiero comprobar si puedo alcanzar Geekflare Más de http or https. Puedo verificar eso usando nc como se muestra a continuación (puerto 80 es para http mientras 443 es para https):

$ nc -vz geekflare.com 80
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to 104.26.11.88:80.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
$
$ nc -vz geekflare.com 443
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to 104.26.10.88:443.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
$

De manera similar, un puerto bloqueado o no accesible mostrará resultados como (se marcan varias direcciones como Geekflare DNS apunta a múltiples IP):

$ nc -vz geekflare.com 22
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connection to 172.67.70.213 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 104.26.11.88 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 104.26.10.88 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 2606:4700:20::681a:a58 failed: Network is unreachable.
Ncat: Trying next address...
Ncat: Connection to 2606:4700:20::681a:b58 failed: Network is unreachable.
Ncat: Trying next address...
Ncat: Network is unreachable.
$
$ dig geekflare.com +short
104.26.10.88
172.67.70.213
104.26.11.88
$

Comprobar la conectividad UDP

telnet solo puede verificar la comunicación con un puerto TCP remoto mientras nc le permite comprobar tanto la conectividad TCP como la UDP.

nc puede simplemente enviar paquetes UDP en lugar de paquetes TCP predeterminados usando:

$ nc -vzu <IP/DNS> <Port>

Pero UDP es un protocolo sin sesión, a diferencia de TCP, por lo que no se puede confirmar la conectividad UDP de extremo a extremo en todos los escenarios posibles simplemente enviando paquetes UDP en un extremo, a menos que la escucha. process en el extremo remoto envía alguna respuesta, nc no podrá juzgar si su paquete enviado llegó al destino o no. Pero nc ofrece una alternativa para determinar la conectividad UDP de extremo a extremo mediante el lanzamiento de un agente de escucha UDP, suponiendo que tenga acceso adecuado a la CLI en el servidor remoto.

Entonces, suponiendo que necesita verificar la conectividad UDP entre dos hosts Linux para DNS usando nc, una forma sencilla de hacerlo sería lanzar nc servidor escuchando en el puerto requerido:

$ sudo nc -ul <Port>

Para DNS, necesitamos verificar el puerto 53 lo que haría el comando anterior como:

$ nc -ul 53

En el extremo del cliente, necesitaría lanzar otro nc process que envía paquetes UDP al servidor:

$ nc -u <IP/DNS> <Port>

Lo que haría que nuestro comando:

$ nc -u <IP/DNS> 53

Teniendo en cuenta que nada bloquea el tráfico UDP para el puerto 53 entre estas dos máquinas, ¿cuálateTodo lo que escribe e ingresa en una máquina debe ser visible en los otros hosts, como un chat bidireccional. Si no, algunos cortafuegos está bloqueando la conectividad entre estos dos sistemas.

Modelo de servidor y cliente usando nc funciona perfectamente para este tipo de controles de conectividad simples entre hosts. Al igual que la verificación UDP anterior, nc también puede escuchar paquetes TCP en un puerto determinado:

$ sudo nc -l <Port>

Del lado del cliente, puedes normarally enviar paquetes TCP para comprobar la conectividad:

$ nc <IP/DNS> <Port>

El servidor/cliente anterior nc El método no es necesario en el caso de conexiones TCP (a diferencia de UDP), ya que es un protocolo orientado a la conexión y funciona con acuses de recibo. Cualquier escucha process trabajar en TCP responderá directamente a nc paquetes TCP.

Resumen

Este artículo resume cómo nc utilidad se erige como un reemplazo directo para telnet en los sistemas Linux modernos en lo que respecta a la verificación de la conectividad del puerto y proporciona mucho más poder al usuario final para diagnosticar y resolver problemas de red.

nc Se puede acceder a la ayuda usando nc -h mando:

$ nc -h
Ncat 7.70 ( https://nmap.org/ncat )
Usage: ncat [options] [hostname] [port]

Options taking a time assume seconds. Append 'ms' for milliseconds,
's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).
  -4                         Use IPv4 only
  -6                         Use IPv6 only
  -U, --unixsock             Use Unix domain sockets only
  -C, --crlf                 Use CRLF for EOL sequence
  -c, --sh-exec <command>    Executes the given command via /bin/sh
  -e, --exec <command>       Executes the given command
      --lua-exec <filename>  Executes the given Lua script
  -g hop1[,hop2,...]         Loose source routing hop points (8 max)
  -G <n>                     Loose source routing hop pointer (4, 8, 12, ...)
  -m, --max-conns <n>        Maximum <n> simultaneous connections
  -h, --help                 Display this help screen
  -d, --delay <time>         Wait between read/writes
  -o, --output <filename>    Dump session data to a file
  -x, --hex-dump <filename>  Dump session data as hex to a file
  -i, --idle-timeout <time>  Idle read/write timeout
  -p, --source-port port     Specify source port to use
  -s, --source addr          Specify source address to use (doesn't affect -l)
  -l, --listen               Bind and listen for incoming connections
  -k, --keep-open            Accept multiple connections in listen mode
  -n, --nodns                Do not resolve hostnames via DNS
  -t, --telnet               Answer Telnet negotiations
  -u, --udp                  Use UDP instead of default TCP
      --sctp                 Use SCTP instead of default TCP
  -v, --verbose              Set verbosity level (can be used several times)
  -w, --wait <time>          Connect timeout
  -z                         Zero-I/O mode, report connection status only
      --append-output        Append rather than clobber specified output files
      --send-only            Only send data, ignoring received; quit on EOF
      --recv-only            Only receive data, never send anything
      --allow                Allow only given hosts to connect to Ncat
      --allowfile            A file of hosts allowed to connect to Ncat
      --deny                 Deny given hosts from connecting to Ncat
      --denyfile             A file of hosts denied from connecting to Ncat
      --broker               Enable Ncat's connection brokering mode
      --chat                 Start a simple Ncat chat server
      --proxy <addr[:port]>  Specify address of host to proxy through
      --proxy-type <type>    Specify proxy type ("http" or "socks4" or "socks5")
      --proxy-auth <auth>    Authenticate with HTTP or SOCKS proxy server
      --ssl                  Connect or listen with SSL
      --ssl-cert             Specify SSL certificate file (PEM) for listening
      --ssl-key              Specify SSL private key (PEM) for listening
      --ssl-verify           Verify trust and domain name of certificates
      --ssl-trustfile        PEM file containing trusted SSL certificates
      --ssl-ciphers          Cipherlist containing SSL ciphers to use
      --ssl-alpn             ALPN protocol list to use.
      --version              Display Ncat's version information and exit

See the ncat(1) manpage for full options, descriptions and usage examples
$

Para obtener información más detallada sobre nc comando, consulte su página de manual.

$ man nc
Comparte en:
  • Abhishek Nair
    Autor
    Abhishek es un SysOps Ingeniero y le encanta escribir sobre Linux, AWS y administración de sistemas.

Gracias a nuestros patrocinadores

Más lecturas excelentes sobre Linux

Técnicas avanzadas de formato en Google Docs
Más allá de lo básico: técnicas avanzadas de formato en Google Docs

Google Docs hace un gran trabajo manteniendo las cosas simples. La configuración de página predeterminada funciona muy bien para la mayoría de los documentos y las opciones de formato comunes se encuentran directamente en la barra de herramientas. Sin embargo, cuando necesites realizar algún formateo avanzado, necesitarás profundizar un poco más.

Impulse su negocio

Algunas de las herramientas y servicios para ayudar a su negocio grow.
  • La herramienta de conversión de texto a voz que utiliza IA para generarate Voces realistas parecidas a las humanas.

    Intente Murf AI
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.

    Prueba Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno para ayudarlo a administrar proyectos, tareas, trabajo, ventas, CRM, operaciones, workflows, y más.

    Intente Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.

    Intente Intruder