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 回つながったあとも待ち続ける |
-u | TCP ではなく 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章 街道の整備(ネットワークの設定と調査))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、ゴールド以上のプランで遊べます。