netcat – ネットワーク接続を読み書きするコマンド

診断・疎通確認

netcat(略称 nc)は、TCP/UDP接続を使って任意のホストとポート間でデータを読み書きできるコマンドです。
ポートスキャン、簡易チャット、ファイル転送、デバッグなど幅広く利用されます。

構文(Syntax)

nc [オプション] ホスト名 ポート

主なオプション一覧

オプション説明使用例
-l接続を待ち受ける(サーバーモード)nc -l -p 1234
-p ポートローカルポートを指定nc -l -p 8080
-uUDPモードで接続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)があり、オプションに差異があります。
  • セキュリティの観点から、意図せず外部から接続可能なポートを開くと危険です。
  • サーバー管理やデバッグの現場では「ネットワークのスイスアーミーナイフ」と呼ばれることもあります。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント