日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
NC(1) FreeBSD 一般コマンドマニュアル NC(1) 名称 nc -- 任意の TCP と UDP の接続と listen (接続を受け付け) 書式 nc [-46DdEFhklNnrStUuvz] [-e IPsec_policy] [-I length] [-i interval] [--no-tcpopt] [-O length] [-P proxy_username] [-p source_port] [-s source] [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port] 解説 nc (または、netcat) ユーティリティは、ほとんど何にでも TCP、UDP、または UNIX ドメインソケットに関連する世界中で使用されます。それは、TCP 接続を オープンして、UDP パケットを送信して、任意の TCP と UDP ポート上で listen (接続を受け付け) して、ポートスキャンをして、そして IPv4 と IPv6 の両方を 処理することができます。telnet(1) と異なって、nc は、うまくスクリプトにし て、何らかを行う telnet(1) のように、エラーメッセージを標準出力に送る代わ りに標準エラーに分離します。 一般的な用途は、次を含みます: • 単純な TCP プロキシ • HTTP クライアントとサーバに基づくシェルスクリプト • ネットワークデーモンのテスト • ssh(1) (セキュアシェル) のための SOCKS または HTTP ProxyCommand • そして多く、さらに多く オプションは、次の通りです: -4 nc に強制的に IPv4 アドレスだけを使用させます。 -6 nc に強制的に IPv6 アドレスだけを使用させます。 -D ソケットでデバッグを有効にします。 -d stdin から読み込むことを試みません。 -E 両方向への IPsec ESP 転送モードを有効にする、"-e 'in ipsec esp/transport//require' -e 'out ipsec esp/transport//require'" の 短縮形です。 -e IPsec サポートが利用可能であるなら、それは、ipsec_set_policy(3) で記述された構文を使用することで IPsec ポリシを指定することができ ます。このフラグは、一般的に各方向で 1 つのポリシが必要とされるよ うに 2 回まで指定することができます。 -F sendmsg(2) を使用して、最初の接続されたソケットを stdout に渡し、 終了します。これは、プロキシで接続のセットアップを実行する nc を 持つために -X とともに役に立ちますが、別のプログラムに接続をまか せます (例えば、ssh_config(5) ProxyUseFdpass オプションを使用する ssh(1))。 -h nc ヘルプを印刷します。 -I length TCP 受信バッファのサイズを指定します。 -i interval テキスト送受信の行の間の遅延時間の間隔を指定します。また、複数の ポートに接続する間に遅延時間が生じます。 -k nc に、現在の接続が終了した後に別の接続を listen (接続の受け付け) したままにすることを強制します。-l オプションなしでこのオプション を使用するとエラーとなります。-u オプションとともに使用されると き、サーバソケットは、接続されず、複数のホストから UDP データグラ ムを受信することができます。 -l nc が、リモートホストに接続を開始するよりむしろ着信接続を listen (接続の受け付け) するべきであることを指定するために使用されます。 -p, -s または -z オプションと同時にこのオプションを使用すればエ ラーとなります。さらに、-w オプションで指定されたどんなタイムアウ トも無視されます。 -N 入力で EOF の後にネットワークソケットを shutdown(2) します。いく つかのサーバは、それらの作業を終了するために、これを要求します。 -n 任意の指定されたアドレス、ホスト名またはポートで、DNS またはサー ビス検索を行ないません。 --no-tcpopt ブール値 TCP_NOOPT ソケットオプションを設定することによって、ソ ケットで TCP オプションの使用を無効にします。 -O length TCP 送信バッファのサイズを指定します。 -P proxy_username 認証を必要とするプロキシサーバに提示するユーザ名を指定します。 ユーザ名が指定されないなら、認証は、試みられません。プロキシ認証 は、現在のところ、HTTP CONNECT プロキシのためだけにサポートされて います。 -p source_port 特権制限と利用可能性にしたがって、nc が使用すべきである発信元 (始 点) ポートを指定します。-l オプションと同時にこのオプションを使用 すればエラーとなります。 -r 発信元 (始点) そして/または宛先 (終点) ポートが、範囲内で連続して いるか、またはシステムがそれらを割り当てる順序の代わりにランダム に選択すべきであることを指定します。 -S RFC 2385 TCP MD5 シグネチャ (署名) オプションを有効にします。 -s source パケットを送信するために使用される IP インタフェースを指定しま す。UNIX ドメインデータグラムソケットのために、データグラムを受信 することができるように、作成して、使用するローカルの一時的なソ ケットファイルを指定します。-l オプションと同時にこのオプションを 使用すればエラーとなります。 -T toskeyword IPv4 TOS 値を変更します。toskeyword は、critical, inetcontrol, lowdelay, netcontrol, throughput, reliability の 1 つ、または次の DiffServ Code Points の 1 つを指定できます: ef, af11 ... af43, cs0 ... cs7; または 16 進数か 10 進数の数値。 -t nc は、RFC 854 DO と WILL 要求対して RFC 854 DON'T と WON'T 応答 を送るようにします。これで、nc が telnet セッションでスクリプトを 使用することが可能になります。 -U UNIX ドメインソケットを使用するために指定します。 -u TCP のデフォルトのオプションの代わりに UDP を使用します。UNIX ド メインソケットに関して、ストリームソケットの代わりにデータグラム ソケットを使用します。UNIX ドメインソケットが使用されていて、-s フラグが与えられないなら、一時的な受信ソケットは、/tmp に作成され ます。 -V rtable 使用される経路表 (routing table) の (``FIB'') を設定します。 -v nc により冗長な出力を生じさせます。 -w timeout 確立することができないか、または timeout 秒の後にアイドルとなるタ イムアウトの接続。-w フラグは、-l オプションで効果がありません、 すなわち、nc は、-w フラグのあるなしにかかわらず、いつまでも接続 を listen (接続を受け付け) します。デフォルトでは、タイムアウトは ありません。 -X proxy_protocol プロキシサーバと通信するとき、nc は、指定されたプロトコルを使用す るべきであるということを要求します。サポートされているプロトコル は、``4'' (SOCKS v.4), ``5'' (SOCKS v.5) と ``connect'' (HTTPS プ ロキシ) です。プロトコルが指定されないなら、SOCKS バージョン 5 が 使用されます。 -x proxy_address[:port] nc が proxy_address と port でプロキシを使用して destination に接 続すべきであることを要求します。port が指定されないなら、プロキシ プロトコルのためによく知られているポート (SOCKS のために 1080、 HTTPS のために 3128) が使用されます。 -z nc が任意のデータをそれらに送信しないでデーモンを listen (接続を 受け付け) するためだけにスキャンすべきであることを要求します。-l オプションと同時にこのオプションを使用すればエラーとなります。 destination は、(-n オプションが与えられないなら) 数値 IP アドレスまたは シンボリックなホスト名を指定できます。一般的に、宛先は、-l オプションが与 えられないなら (その場合、ローカルホストが使用されます) 指定されなければ なりません。UNIX ドメインソケットに関して、宛先は、要求され、接続 (また は、-l オプションが与えられるなら、listen (接続を受け付け)) するソケット のパスです。 port は、単一の整数か、またはポートの範囲を指定できます。範囲は、形式 nn mm です。一般的に、宛先 (終点) ポートは、-U オプションが与えられないな ら、指定されなければなりません。 クライアント/サーバモデル nc を使用する、たいへん基本的なクライアント/サーバモデルを構築することは とても簡単です。1 つ目のコンソールで、接続のために特定のポート上で nc の listen (接続を受け付け) を開始します。例えば: $ nc -l 1234 nc は、現在、接続のためにポート 1234 で listen (接続を受け付け) されま す。2 つ目のコンソール (または、2 つ目のマシン) で、次で listen (接続を受 け付け) されるマシンとポートに接続します。 $ nc 127.0.0.1 1234 現在、ポートの間に接続があるべきです。2 つ目のコンソールでタイプされたも のは、最初のものに連結されます、そして逆もまた同様です。接続がセットアッ プされた後に、nc は、どちら側が `サーバ' として使用されているか、そしてど ちら側が `クライアント' として使用されているかを本当に気にしません。接続 は、EOF (`^D') を使用して終了されます。 データ転送 前のセクションの例は、基本的データ転送モデルを構築するために拡張すること ができます。接続の一つの端への入力された任意の情報は、他の端に出力され、 そして入力と出力は、ファイル転送をエミュレートするために容易にキャプチャ (捕獲) されます。 ファイル中にキャプチャ (捕獲) された出力で特定のポートで listen (接続を受 け付け) するために nc を使用することによって、開始します。 $ nc -l 1234 > filename.out 2 つ目のマシンを使用して、転送されるファイルを供給して、listen (接続を受 け付け) する nc プロセスに接続します: $ nc -N host.example.com 1234 < filename.in ファイルが転送された後に、接続は、自動的にクローズされます。 サーバとの対話 ユーザインタフェースを通してよりむしろ ``手動で'' サーバと通信すること は、時々役に立ちます。クライアントによって発行されたコマンドに応答してど んなデータがサーバに送信されているかを確認する必要があるかもしれないとき に、トラブルシューティング (障害点検) で助けとなります。例えば、ウェブサ イトのホームページを検索するために: $ printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80 また、これは、ウェブサーバによって送られたヘッダを表示することに注意して ください。必要なら、sed(1), などのツールを使用して、それらをフィルタする ことができます。 ユーザが、サーバによって要求された要求 (リクエスト) の形式を知っていると き、より複雑な例を構築することができます。別の例として、メールは、次を使 用して SMTP サーバに投稿できます: $ nc localhost 25 << EOF HELO host.example.com MAIL FROM:<user@host.example.com> RCPT TO:<user2@host.example.com> DATA Body of email. . QUIT EOF ポートスキャン ターゲットマシン上でどのポートがオープンされ、サービスを実行しているかを 知るために役に立ちます。接続を開始するよりは、むしろオープンしたポートを 報告するように nc に伝えるために -z フラグを使用することができます。例え ば: $ nc -z host.example.com 20-30 Connection to host.example.com 22 port [tcp/ssh] succeeded! Connection to host.example.com 25 port [tcp/smtp] succeeded! ポート範囲は、ポート 20 - 30 への検索を制限するために指定されます。 代わりに、それは、どのサーバソフトウェアが実行しているか、そして、どの バージョンかを知るために役に立つかもしれません。この情報は、あいさつバ ナーの中にしばしば含まれています。これらを検索するために、最初に接続を確 立する必要があり、次に、バナーが検索された時に、接続を切る必要がありま す。-w フラグで小さいタイムアウトを指定することによって、または恐らくサー バに "QUIT" コマンドを発行することによって、これを達成することができます: $ echo "QUIT" | nc host.example.com 20-30 SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready 使用例 5 秒のタイムアウトで、発信元 (始点) ポートとしてポート 31337 を使用して、 host.example.com のポート 42 へ TCP 接続をオープンします: $ nc -p 31337 -w 5 host.example.com 42 host.example.com のポート 53 へ UDP 接続をオープンします: $ nc -u host.example.com 53 接続のローカルの終りの IP として 10.1.2.3 を使用して、host.example.com の ポート 42 へ TCP 接続をオープンします: $ nc -s 10.1.2.3 host.example.com 42 着信と発信トラフィックのための IPsec ESP を使用して、host.example.com の ポート 42 へ TCP 接続をオープンします: $ nc -E host.example.com 42 発信トラフィックだけのための IPsec ESP を使用して、host.example.com の ポート 42 へ TCP 接続をオープンします: $ nc -e 'out ipsec esp/transport//require' host.example.com 42 UNIX ドメインストリームソケットを作成して、listen (接続を受け付け) しま す: $ nc -lU /var/tmp/dsocket 10.2.3.4 のポート 8080 の HTTP プロキシを通して host.example.com のポート 42 へ接続します。ssh(1) によって、この例を使用することもできます。詳細に ついては、ssh_config(5) の ProxyCommand ディレクティブを参照してくださ い。 $ nc -x10.2.3.4:8080 -Xconnect host.example.com 42 再び同じ例ですが、今回は、プロキシが必要とするなら、ユーザ名 ``ruser'' で プロキシ認証を有効にします: $ nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42 終了ステータス ユーティリティ nc は、成功すると 0 で、エラーがあった場合は >0 で終了しま す。 関連項目 cat(1), setfib(1), ssh(1), tcp(4) 作者 オリジナルの実装は、*Hobbit* <hobbit@avian.org> によります。 Eric Jackson <ericj@monkey.org> によって IPv6 サポートのために書き直され ました。 警告 フラグの -uz の組み合わせを使用する UDP ポートスキャンは、常にターゲット マシンの状態に関係なく成功を報告します。しかしながら、ターゲットマシンま たは中間のデバイスのいずれかでトラフィックのスニファ (訳注: ネットワーク をモニタするプログラム) とともに、-uz の組み合わせは、通信の診断に役に立 つことができます。生成された UDP トラフィックの量は、ハードウェアのリソー スおよび/または設定により、制限されているかもしれないことに注意してくださ い。 FreeBSD 11.4 September 26, 2015 FreeBSD 11.4