ホーム テクノロジー LINUX RHEL 8 で Telnet をお探しですか? NCを試してください

RHEL 8 で Telnet をお探しですか? NCを試してください


Telnet は、コンピュータにリモート アクセスするために使用されるネットワーク プロトコルであり、テキストベースの双方向通信を提供します。したがって、相互に通信するには Telnet サーバーとクライアントが必要です。

Telnet は、長い間その目的を果たしてきた、人気のある Linux/Windows ユーティリティの 1 つです。

最新のシステムにおける Telnet の主な問題は、安全ではないことです。 Telnet でのすべての通信はプレーン テキストで行われ、すべてのネットワーク トラフィックは暗号化されません。基本的に、適切なアクセス権とツールを持っている人は誰でも、ネットワーク トラフィックを覗き見してこのトラフィックを読み取ることができます。そのため、最新の Linux オペレーティング システムのほとんどには Telnet がプリインストールされておらず、他のオペレーティング システムでは Telnet の使用を推奨していません。

Telnet の暗号化された代替品以上の SSH または Secure Shell プロトコルの出現により、本来の目的での Telnet の使用は時代遅れになって久しいです。しかし、多くのシステム管理者や技術愛好家が今でも使用している Telnet の別の使用法があり、それはリモート TCP ポートの接続をチェックすることです。

telnet コマンドを使用して、リモート TCP ポートが正しくリッスンし、応答しているかどうかを簡単に確認できます。以下のスニペットは、 HTTP/HTTPS接続をチェックすることでgoogle.com稼働しているかどうかを確認する方法を示しています。

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

これにより、 pingtracerouteまたはtracepathnetstatなどのコマンドと組み合わせて、単純なネットワーク接続の問題のトラブルシューティングが容易になります。

RHEL 8 (または古いバージョンの RHEL/CentOS) を使用している場合は、多くのネットワーク診断関連オプションをサポートする nc (または Ncat または Network Connector) を使用するオプションがあります。このツールを RHEL8 および同様のシステムにインストールして使用する方法について説明します。

NCとは何ですか?

nc (または Ncat) は、ネットワーク上のデータの読み取り、書き込み、リダイレクト、暗号化を行うための一般的な汎用コマンド ライン ツールです。元々はnmapプロジェクト用に作成されましたが、現在では複数の Netcat 実装が利用可能です。 IPv4 と IPv6 の TCP と UDP の両方で動作し、無限の潜在的なユースケースを提供します。

以下は、 ncユーティリティの主な機能の一部です。

  • ncatsを連鎖させる機能
  • TCP、UDP、および SCTP ポートの他のサイトへのリダイレクト
  • SSL対応による通信の暗号化
  • SOCK4/5 または HTTP プロキシ経由のプロキシ サポート (認証を含む)
  • Windows、Linux、macOS を含む複数のプラットフォームをサポート

NCの取り付け

nc RHEL システムのデフォルト リポジトリの一部として利用できます。 RHEL 7 システムにインストールするには、ターミナルで次のコマンドを発行するだけです。

 $ sudo yum install -y nc

RHEL 8 システムの場合、 dnf次のように使用できます。

 $ sudo dnf install -y nc

TCP接続を確認する

ncアプリケーション全体で多くの使用例をサポートする多数の機能を提供しますが、一般的な機能の 1 つは、ネットワークのトラブルシューティング中にtelnetの代わりに使用されるものです。

nc TCP ポートに到達できるかどうかを表示します。構文は次のとおりです。

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

例として、 httpまたはhttps経由で にアクセスできるかどうかを確認したいとします。以下に示すようにncを使用してそれを確認できます (ポート80http用で、ポート443https用です)。

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

同様に、到達不能またはブロックされたポートには次のような出力が表示されます ( DNS が複数の IP をポイントしているため、複数のアドレスがチェックされます)。

 $ nc -vz .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 .com +short
104.26.10.88
172.67.70.213
104.26.11.88
$

UDP 接続を確認する

telnetリモート TCP ポートとの通信のみを確認できますが、 ncでは TCP および UDP 接続を確認できます。

nc以下を使用して、デフォルトの TCP パケットの代わりに UDP パケットを送信することができます。

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

ただし、UDP は TCP とは異なりセッションレス プロトコルであるため、リモート エンドのリッスン プロセスが UDP パケットを送信しない限り、一方の端で UDP パケットを送信するだけでは、考えられるすべてのシナリオでエンドツーエンドの UDP 接続を確認することはできません。何らかの応答があった場合、 ncは送信したパケットが宛先に到着したかどうかを判断できません。ただし、 ncリモート サーバー上の CLI に適切にアクセスできることを前提として、UDP リスナーを起動してエンドツーエンドの UDP 接続を判断する代替手段を提供します。

したがって、 ncを使用して DNS 用の 2 つの Linux ホスト間の UDP 接続を確認する必要があると仮定すると、これを行う簡単な方法は、必要なポートでリッスンするncサーバーを起動することです。

 $ sudo nc -ul <Port>

DNS の場合、ポート53をチェックする必要があります。これにより、上記のコマンドは次のようになります。

 $ nc -ul 53

クライアント側では、UDP パケットをサーバーに送信する別のncプロセスを起動する必要があります。

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

これにより、次のコマンドが作成されます。

 $ nc -u <IP/DNS> 53

これら 2 台のマシン間のポート53の UDP トラフィックをブロックするものがないことを考慮すると、1 台のマシンで入力したものはすべて、双方向チャットのように他のホストにも表示されるはずです。そうでない場合は、ファイアウォールによってこれら 2 つのシステム間の接続がブロックされています。

ncを使用したサーバーおよびクライアント モデルは、ホスト間のこの種の単純な接続チェックでは問題なく機能します。上記の UDP チェックと同様に、 nc特定のポートで TCP パケットをリッスンすることもできます。

 $ sudo nc -l <Port>

クライアント側では、通常、TCP パケットを送信して接続を確認できます。

 $ nc <IP/DNS> <Port>

TCP 接続の場合は、接続指向のプロトコルであり、確認応答で動作するため、上記のサーバー/クライアントncメソッドは必要ありません (UDP とは異なります)。 TCP 上で動作するリッスン プロセスはすべて、 nc TCP パケットに直接応答します。

まとめ

この記事では、 ncユーティリティが、ポート接続の確認に関して、最新の Linux システムにおけるtelnetの直接の代替としてどのように機能し、ネットワークの問題を診断して解決する際にエンドユーザーにより多くの機能を提供するかを要約します。

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

ncコマンドの詳細については、そのマニュアル ページを参照してください。

 $ man nc

「 RHEL 8 で Telnet をお探しですか? NCを試してください」についてわかりやすく解説!絶対に観るべきベスト2動画

How to install and use telnet command in Linux (RedHat 9.0) RHEL 9.0 | A2it Online
How to Use Netcat or NC Command in RHEL-8 With Examples[Hindi]By Karun Behal