nc(ncat)の使い方

ポートにつないで確かめる

書き方

nc -zv ホスト ポート(開いているか)
nc -l ポート(待ち受ける)
echo 文字 | nc ホスト ポート(話しかける)

Connected なら開いている、Connection refused は待ち受けていない、TIMEOUT は途中で止められている(ファイアウォール)ことが多い。nc -l はつないでくる相手を待ち続け、届いた文字を出して終わります(-k なら続ける。Ctrl+C で止める)。nmap-ncat パッケージに入っています。

よく使うオプション

オプション意味
-zデータを送らず、つながるかだけを確かめる
-v結果を詳しく出す
-l待ち受ける(サーバーの側になる)
-k-l のとき、1 回つながったあとも待ち続ける
-uTCP ではなく UDP を使う
-w 秒つながるまで待つ時間

例

$ nc -zv 10.0.4.40 5432Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.4.40:5432.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

相手の 5432 番(PostgreSQL)が開いているか確かめます。Connected なら待ち受けています。

$ nc -zv -w 3 10.0.4.40 3306Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: TIMEOUT.

3 秒だけ待ちます。Connection refused は届いたが待ち受けていない、No route to host は相手の firewalld が断った、TIMEOUT は途中で黙って捨てられた(セキュリティグループ・DROP など)ことが多いです。

$ nc -l 7000

7000 番で待ち受けます。ファイアウォールを開けたあと、別のサーバーから届くかを試すのに使えます。

$ echo ping | nc 10.0.4.25 7000

待ち受けている相手に文字を送ります。相手の画面に ping と出れば、道が通っています。

よくある間違い・注意

  • RHEL 系の nc は nmap-ncat です。ほかの nc(OpenBSD 版など)とオプションが少し違います。
  • 待ち受けを & で後ろに回したら、終わったあと kill で止めます。止め忘れるとポートが開いたままになります。

実際に打って練習する

Linux レベル2 コースの Lv60「戸をたたく nc」で覚えます(第4章 街道の整備(ネットワークの設定と調査))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、ゴールド以上のプランで遊べます。

Linux サーバー構築のコマンド一覧(LinuC レベル2 の範囲)へ戻る