No.142ネットワーク
nc
エヌシー・簡易ソケット接続
TCPやUDPで接続、待受、ポート確認を行います。軽量で便利ですが、実装差が大きい道具です。
答えよく使う形
注意危険度は中程度です。
$ printf "GET / HTTP/1.0rnHost: example.comrnrn" | nc example.com 80
HTTP/1.0 200 OK ...
$ nc -zv example.com 443
$ nc -l 12345
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
どんなコマンド?
ポート疎通確認、手動プロトコル確認、簡易待受テストに使います。
ncは、netcatとも呼ばれる軽量なソケット操作コマンドです。指定したホストとポートへ接続したり、待ち受けたり、データを標準入出力へ流したりできます。
実務では、ポートが開いているかの確認、手動でHTTPを打って応答を見る、簡易的な待受テストを行う時に役立ちます。
一方で、OpenBSD版、GNU版、traditional版など実装差が大きく、同じオプションが全環境で同じ意味になるとは限りません。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ nc
使用例と実行結果
行を押すとコピーできます。
HTTP/1.0 200 OK ...
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 1
つまずいたとき
他環境で同じオプションが動かない
原因実装差があります。
こうするmanページでその環境のnc実装を確認します。
終わったときの数(戻り値)
$ echo $?
- 0正常終了。接続または待受に成功しました。
- >0到達不能、拒否、構文差異などで処理できませんでした。
気をつけることと入れ方
危険度は中程度です。待受や転送を安易に使うと意図しない通信経路を作ることがあります。
環境による違い
実装差が非常に大きく、-l、-p、-qなどの扱いが環境で異なることがあります。
確かめた環境2026-04-09 に確認
よくある質問
curlやtelnetの代わりになりますか。
簡易確認にはなりますが、用途によっては専用道具のほうが適切です。
安全ですか。
便利ですが、待受や転送を不用意に使うと問題になり得ます。
nc を最後まで読みました。
Linux コマンド辞典に戻る71 / 144