netcat(略称 nc)は、TCP/UDP接続を使って任意のホストとポート間でデータを読み書きできるコマンドです。
ポートスキャン、簡易チャット、ファイル転送、デバッグなど幅広く利用されます。
構文(Syntax)
nc [オプション] ホスト名 ポート
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-l | 接続を待ち受ける(サーバーモード) | nc -l -p 1234 |
-p ポート | ローカルポートを指定 | nc -l -p 8080 |
-u | UDPモードで接続 | nc -u 192.168.1.5 5000 |
-v | 詳細情報を表示(冗長モード) | nc -v google.com 80 |
-z | スキャンモード(データ送信せずに接続確認) | nc -z -v 192.168.1.1 20-80 |
-w 秒数 | タイムアウトを指定 | nc -w 5 google.com 80 |
実行例
TCPでサーバーに接続
nc example.com 80
出力例(HTTPサーバーに接続後、自分で入力):
GET / HTTP/1.0
Host: example.com
ポートを待ち受ける(サーバーモード)
nc -l -p 1234
(他の端末から nc ホストIP 1234 で接続可能)
ファイル転送(送信側)
cat file.txt | nc -l -p 1234
ファイル転送(受信側)
nc 192.168.1.10 1234 > file.txt
ポートスキャン
nc -z -v 192.168.1.1 20-80
出力例:
Connection to 192.168.1.1 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.1 80 port [tcp/http] succeeded!
UDPモードでの通信
nc -u -l -p 5000
(別の端末から echo "hello" | nc -u 192.168.1.10 5000 を実行すると受信できる)
エラー例(接続できない場合)
nc 192.168.1.100 9999
出力例:
nc: connect to 192.168.1.100 port 9999 (tcp) failed: Connection refused
関連コマンド
telnet: TCP接続を行う古いツール。デバッグ用途に類似。nmap: 高機能なポートスキャナ。nc -zの上位互換的な機能を持つ。socat: より高機能なネットワーク接続ツール。
備考
netcatには複数の実装(GNU netcat, OpenBSD netcat, Nmap の ncat)があり、オプションに差異があります。- セキュリティの観点から、意図せず外部から接続可能なポートを開くと危険です。
- サーバー管理やデバッグの現場では「ネットワークのスイスアーミーナイフ」と呼ばれることもあります。
参考
- manページ: https://man7.org/linux/man-pages/man1/nc.1.html
- Nmapプロジェクト ncat: https://nmap.org/ncat/

コメント