Ищете телнет на RHEL 8? Попробуйте

Опубликовано: 2022-05-02

Telnet — это сетевой протокол, используемый для удаленного доступа к компьютеру и обеспечивающий двустороннюю текстовую связь. Итак, вам нужен telnet-сервер и клиент для общения друг с другом.

Telnet — одна из популярных утилит Linux/Windows, которая уже давно служит своей цели.

Основная проблема с telnet в современных системах заключается в том, что он небезопасен. Вся связь в telnet происходит в виде обычного текста, и весь сетевой трафик не зашифрован. По сути, любой, у кого есть надлежащий доступ и инструменты, может отслеживать сетевой трафик, чтобы читать этот трафик. Таким образом, большинство современных операционных систем Linux не поставляются с предустановленным telnet, а другие рекомендуют не использовать его.

С появлением протокола SSH или Secure Shell, который является более чем зашифрованной заменой telnet, использование telnet по прямому назначению давно устарело. Но есть альтернативное использование telnet, которое до сих пор используют многие системные администраторы и технические энтузиасты, а именно проверка соединения удаленных TCP-портов.

Можно просто проверить, правильно ли прослушивает удаленный TCP-порт и отвечает ли он, используя команду telnet. В приведенном ниже фрагменте показано, как мы можем проверить, работает ли google.com , проверив подключение HTTP/HTTPS .

 $ 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. $

TCP-порт, который не открыт или недоступен, будет вести себя, как показано ниже, при проверке с помощью telnet :

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

Это упрощает устранение простых проблем с сетевым подключением в сочетании с командами ping , traceroute или tracepath , netstat и т. д.

Если вы используете RHEL 8 (или даже более ранние версии RHEL/CentOS), у вас есть возможность использовать nc (или Ncat или Network Connector), который поддерживает множество параметров, связанных с диагностикой сети. Мы обсудим, как установить и использовать этот инструмент в RHEL8 и подобных системах.

Что такое нк?

nc (или Ncat) — популярный инструмент командной строки общего назначения для чтения, записи, перенаправления и шифрования данных в сети. Первоначально написанный для проекта nmap , теперь доступно несколько реализаций Netcat. Он работает как с TCP, так и с UDP через IPv4 и IPv6 и предоставляет безграничные возможности использования.

Ниже приведены некоторые из основных функций утилиты nc :

  • Возможность ncats вместе
  • Перенаправление портов TCP, UDP и SCTP на другие сайты
  • Шифрование связи с поддержкой SSL
  • Поддержка прокси через SOCK4/5 или HTTP-прокси (включая аутентификацию)
  • Поддерживает несколько платформ, включая Windows, Linux и macOS.

Установка нк

nc доступен как часть репозиториев по умолчанию в системах RHEL. Чтобы установить его в системе RHEL 7, просто выполните следующую команду на терминале:

 $ sudo yum install -y nc

Для системы RHEL 8 вы можете использовать dnf как:

 $ sudo dnf install -y nc

Проверьте TCP-подключение

Хотя nc предлагает множество функций, которые поддерживают ряд вариантов использования в разных приложениях, одна из распространенных — устранение неполадок в сети вместо telnet .

nc может показать, можете ли вы связаться с TCP-портом. Вот синтаксис:

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

Например, если я хочу проверить, могу ли я связаться с Geekflare по http или https . Я могу проверить это, используя nc , как показано ниже (порт 80 для http , а 443 для 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. $

Точно так же недостижимый или заблокированный порт будет отображать вывод, например (несколько адресов проверяются, поскольку Geekflare DNS указывает на несколько 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 $

Проверьте UDP-подключение

telnet может проверять связь только с удаленным TCP-портом, в то время как nc позволяет проверять как TCP, так и UDP-соединение.

nc может просто отправлять UDP-пакеты вместо TCP-пакетов по умолчанию, используя:

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

Но UDP — это протокол без сеанса, в отличие от TCP, поэтому вы не можете подтвердить сквозное соединение UDP во всех возможных сценариях, просто отправив пакеты UDP на одном конце, если только процесс прослушивания на удаленном конце не отправит какой-то ответ, nc не сможет судить, достиг ли его отправленный пакет пункта назначения или нет. Но nc предлагает альтернативу для определения сквозного соединения UDP путем запуска прослушивателя UDP, при условии, что у вас есть надлежащий доступ к CLI на удаленном сервере.

Итак, если вам нужно проверить соединение UDP между двумя хостами Linux для DNS с помощью nc , простой способ сделать это — запустить сервер nc , прослушивающий требуемый порт:

 $ sudo nc -ul <Port>

Для DNS нам нужно проверить порт 53 , что сделает приведенную выше команду такой:

 $ nc -ul 53

На стороне клиента вам нужно будет запустить еще один процесс nc , который отправляет UDP-пакеты на сервер:

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

Что сделает нашу команду:

 $ nc -u <IP/DNS> 53

Учитывая, что ничто не блокирует трафик UDP для порта 53 между этими двумя машинами, все, что вы вводите и вводите на одной машине, должно быть видно на других хостах, как двусторонний чат. В противном случае какой-то брандмауэр блокирует соединение между этими двумя системами.

Модель сервера и клиента с использованием nc безупречно работает для таких простых проверок подключения между хостами. Как и в приведенной выше проверке UDP, nc также может прослушивать TCP-пакеты на заданном порту:

 $ sudo nc -l <Port>

На стороне клиента вы обычно можете отправлять TCP-пакеты для проверки подключения:

 $ nc <IP/DNS> <Port>

Вышеупомянутый метод сервер/клиент nc не требуется в случае TCP-соединений (в отличие от UDP), поскольку это протокол, ориентированный на соединение и работающий с подтверждениями. Любой процесс прослушивания, работающий на TCP, будет напрямую отвечать на nc TCP-пакеты.

Резюме

В этой статье кратко изложено, как утилита nc выступает в качестве прямой замены telnet в современных системах Linux в том, что касается проверки подключения портов и предоставляет конечному пользователю гораздо больше возможностей для диагностики и решения сетевых проблем.

Доступ к справке nc можно получить с помощью команды nc -h :

 $ 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 (eg 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 $

Для получения более подробной информации о команде nc обратитесь к соответствующей странице руководства.

 $ man nc