ncat コマンドを実行することで、TCP/IP レベルの疎通を確認できます。
1. 確認した環境
$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
$ ncat --version
Ncat: Version 7.50 ( https://nmap.org/ncat )
2. 利用方法
ncat コマンドを -zv オプションを指定して実行します。
- z オプション: 3wayハンドシェイクを行い TCP/IP コネクションを確立後、データを送らずにコネクションを切断します。
- v オプション: 詳細情報を表示します。
実行例
例1
当サイト linux-guide.com の 443 番ポートが開放されているか調べる場合は…
$ ncat -zv linux-guide.com 443
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 49.212.180.105:443.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
Connected と表示されているので、443 番ポートと通信できています。
例2
当サイト linux-guide.com の 23 番ポートが開放されているか調べる場合は…
$ ncat -zv linux-guide.com 23
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection timed out.
Connection timed out と表示されているので 23番ポートとの通信に失敗しています。
3. 補足
補足 1.
ポートが開放されているからといって、必ずしも ncat が成功するわけではないので注意してください。下記のエントリは Windows の Test-NetConnection コマンドに関する記事ですが nc コマンドについてもそのまま当てはまります。
※参考: ファイアウォールを開放しているのにTest-NetConnectionに失敗する
補足 2.
厳密にいうと ncat はpingではありません。なぜなら ping はICMPというプロトコルを利用したプログラムであり、ICMPにはポート番号という概念がないからです。ncat はその上位のトランスポート層レベルでの通信を確認しています。ポート番号とはトランスポート層に所属するプロトコルであるTCPやUDPに存在する概念です。
下の図はホストA からホストBに対して、ping と ncat を実行したときのイメージです。
コメント