RHEL系(CentOS)
---
サーバ運用で、急にサーバへの通信が不安定になったり、今まで通信(接続)できていたが、急に通信(接続)できなくなったりしたとき、障害切り分け方法としてncat(nc)コマンドを利用して、簡単に疎通確認を実施することができます。
ポート番号を指定して、TCPかUDP通信かを選択して設定するだけですぐに疎通確認することができます。
よく利用するオプションと利用方法を解説します。
ncatコマンドとncコマンドと2つ存在しています。
どちらも同じコマンドです。
ncコマンドは、ncatのシンボリックリンクになっております。
その根拠は、下記画像を参照ください。
サーバ側ですでに利用中のポートに対してクライアント側からncat(nc)コマンドを利用して接続確認する方法
サーバ側で、ポートがすでにListenとなっているポートへncat(nc)コマンドをクライアンから実行して接続確認をすることができます。
FW(ファイアーウォール)での遮断、ネットワーク経路が確立しているか?を簡単に確認して障害切り分けすることができます。
コマンド実行例1
下記コマンド実行で、Linuxクライアント(192.168.11.17)からLinuxサーバ(192.168.11.16)へ「80(http)/tcp」の疎通確認した場合の実行結果が下記になります。
※OKとNG両方の結果を確認できます。
nc -zv 192.168.11.13 80
オプション | 説明 |
-v | 詳細表示 ※接続が確立されると接続したままの状態になります ※「ctrl+c」で接続終了 |
-vv | 「-v」よりさらに詳細を表示 ※接続が確立されると接続したままの状態になります ※「ctrl+c」で接続終了 |
-z | 接続確認したらすぐに接続を終了 ※「-zv」「-zvv」と併用で利用することが多い |
-u | UDPを指定 ※「-u」がない場合はTCPとなります。 nc 192.168.11.13 -u 1234 ->1234/udp nc 192.168.11.13 1234 ->1234/tcp |
サーバ側とクライアント側ともにncat(nc)コマンドを利用して接続確認する方法
サーバ側でこれから利用するポート(Listenしていない(利用していない)へクライアントから接続できるか?を確認するときに利用できます。
サービスする前に、利用するポートに対して、FW(ファイアーウォール)での遮断、ネットワーク経路に異常がないか?を簡単に確できます。
今回は、サーバが「ポート12345/tcp」を利用することを想定してクライアントからアクセスできるかを確認します。
■情報
サーバ側(192.168.11.13)
クライアント側(192.168.11.17)
■条件
1.サーバで利用していないポート(12345/tcp)をncat(nc)コマンドでListenさせます。
2.クライアントからサーバに対してポート(12345/tcp)へ接続します。
コマンド実行例2
■サーバ側(192.168.11.13)の設定
nc -kl 12345
※「ポート12345/tcp」でListen(待ち受け)
※「-u 12345」とするとUDPポートの「12345」となるので注意
※ncat(nc)コマンド実行後に、プロンプトが返ってこない場合は「ctrl+c」で終了する
■クライアント側(192.168.11.17)の設定
nc 192.168.11.13 12345
※サーバ(192.168.11.13)へ「ポート12345/tcp」で接続
※サーバ側のポートが「tcp接続」か「udp接続」を確認してポートを指定
※ncat(nc)コマンド実行後に、プロンプトが返ってこない場合は「ctrl+c」で終了する
オプション | 説明 |
-k | 複数のクライアントとセッションをはる tcp接続でListen(待ち受け)するときは必須 ※udpでListenするときは「-k」のオプションははずす 例 tcp:nc -kl 12345 udp:nc -l -u 12345 |
-l | Listen(待ち受け)するモード サーバ側でListenするときに「-l」オプションを使用する |
■接続確認
1.クライアント側(192.168.11.17)
「input 192.168.11.17」と文字入力して実行します。
2.サーバ側(192.168.11.13)
クライアント側(192.168.11.17)で入力された文字列が表示されます。
この接続確認によりクライアント側(192.168.11.17)からサーバ側(192.168.11.13)へ「ポート12345/tcp」でアクセス可能であることが確認できました。
■追加情報
1.サーバ側(192.168.11.13)
「input 192.168.11.13」と文字入力して実行します。
2.クライアント側(192.168.11.17)
サーバ側(192.168.11.13)で入力された文字列が表示されます。
趣旨は違いますが、サーバからクライアントに対しても文字列送信することができます。
ncat(nc)コマンドを利用することでサーバとクライアント間のデータ送受信が可能となります。
コメント