'\" te .\" Copyright (c) 1996 David Sacerdote. All rights reserved. .\" Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" Portions Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. .TH nc 1 "2012 年 6 月 6 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 nc, netcat \- 任意の TCP および UDP の接続と待機 .SH 形式 .LP .nf \fBnc\fR \fB-h\fR .fi .LP .nf \fBnc\fR [\fB-46dnrtuvz\fR] [\fB-i\fR \fIinterval\fR] [\fB-P\fR \fIproxy_username\fR] [\fB-p\fR \fIport\fR] [\fB-s\fR \fIsource_ip_address\fR] [\fB-T\fR \fIdspc\fR] [\fB-w\fR \fItimeout\fR] [\fB-X\fR \fIproxy_protocol\fR] [\fB-x\fR \fIproxy_address\fR[:\fIport\fR]][\fB-L\fR \fItimeout\fR] [\fB-e\fR \fIprogram\fR] [\fB-b\fR \fIbufsize\fR] [\fB-q\fR \fItimeout\fR] [\fB-m\fR \fIbytes\fR] [\fB-I\fR \fIbufsize\fR][\fB-O\fR \fIbufsize\fR] [\fB-S\fR \fIsla-prop\fR] \fIhostname\fR \fIport_list\fR .fi .LP .nf \fBnc\fR \fB-l\fR [\fB-46DdEFnrtuvzZ\fR] [\fB-i\fR \fIinterval\fR] [\fB-T\fR \fIdspc\fR] [\fB-e\fR \fIprogram\fR] [\fB-b\fR bufsize] [\fB-q\fR \fItimeout\fR] [\fB-R\fR \fIaddress\fR/\fIport\fR[/\fIproto\fR]] [\fB-m\fR \fIbytes\fR] [\fB-L\fR \fItimeout\fR] [\fB-I\fR \fIbufsize\fR] [\fB-O\fR \fIbufsize\fR] [\fB-S\fR \fIsla-prop\fR] [\fIhostname\fR] \fIport\fR .fi .LP .nf \fBnc\fR \fB-l\fR [\fB-46DEFdnrtuvzZ\fR] [\fB-i\fR \fIinterval\fR] [\fB-T\fR \fIdspc\fR] [\fB-e\fR \fIprogram\fR] [\fB-b\fR \fIbufsize\fR] [\fB-q\fR \fItimeout\fR] [\fB-R\fR \fIaddress\fR/\fIport\fR[/\fIproto\fR]] [\fB-m\fR \fIbytes\fR] [\fB-L\fR \fItimeout\fR] [\fB-I\fR \fIbufsize\fR] [\fB-O\fR \fIbufsize\fR] [\fB-S\fR \fIsla-prop\fR] \fB-p\fR \fIport\fR [\fIhostname\fR] .fi .LP .nf \fBnc\fR \fB-U\fR [\fB-Ddtvz\fR] [\fB-i\fR \fIinterval\fR] [\fB-w\fR \fItimeout\fR] [\fB-e\fR \fIprogram\fR] [\fB-b\fR \fIbufsize\fR] [\fB-q\fR \fItimeout\fR] [\fB-m\fR \fIbytes\fR] \fIpath\fR .fi .LP .nf \fBnc\fR \fB-Ul\fR [\fB-46DdktvZ\fR] [\fB-i\fR \fIinterval\fR] [\fB-e\fR \fIprogram\fR] [\fB-b\fR \fIbufsize\fR] [\fB-q\fR \fItimeout\fR] [\fB-R\fR \fIaddress\fR/\fIport\fR[/\fIproto\fR]] [\fB-m\fR \fIbytes\fR] \fIpath\fR .fi .SH 機能説明 .sp .LP \fBnc\fR (または \fBnetcat\fR) ユーティリティーは、TCP または UDP に関連付けられたさまざまなタスクに使用できます。\fBnc\fR は、TCP 接続を開き、UDP パケットを送信し、任意の TCP および UDP ポートで待機し、ポートスキャンを実行し、IPv4 と IPv6 の両方に対応します。\fBtelnet\fR(1) とは異なり、\fBnc\fR は簡単にスクリプト化でき、エラーメッセージを標準出力に送信するのではなく標準エラーに分割します。 .sp .LP \fBnc\fR コマンドは、多くの場合、次のタスクに使用されます。 .RS +4 .TP .ie t \(bu .el o 単純な TCP プロキシ .RE .RS +4 .TP .ie t \(bu .el o シェルスクリプトベースの HTTP クライアントおよびサーバー .RE .RS +4 .TP .ie t \(bu .el o ネットワークデーモンのテスト .RE .RS +4 .TP .ie t \(bu .el o \fBssh\fR(1) 用の SOCKS または プロキシコマンド (\fBProxyCommand\fR) .RE .sp .LP \fBnc\fR コマンドは、\fBnetcat\fR として実行して同じオプションを使用することもできます。 .SH オプション .sp .LP サポートしているオプションは、次のとおりです。 .sp .ne 2 .mk .na \fB\fB-4\fR\fR .ad .sp .6 .RS 4n \fBnc\fR が IPv4 アドレスのみを使用するよう強制します。 .RE .sp .ne 2 .mk .na \fB\fB-6\fR\fR .ad .sp .6 .RS 4n \fBnc\fR が IPv6 アドレスのみを使用するよう強制します。 .RE .sp .ne 2 .mk .na \fB\fB-b\fR \fIbufsize\fR\fR .ad .sp .6 .RS 4n 読み取り操作のバッファーサイズを指定します。 .sp デフォルト値は \fB1024\fR バイトです。 .RE .sp .ne 2 .mk .na \fB\fB-D\fR\fR .ad .sp .6 .RS 4n ソケット上でのデバッグを有効にします。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR\fR .ad .sp .6 .RS 4n \fBstdin\fR からの読み取りを行いません。 .RE .sp .ne 2 .mk .na \fB\fB-E\fR\fR .ad .sp .6 .RS 4n 排他バインドを使用して、TCP または UDP ソケットを待機します。 .sp \fB-l\fR オプションを指定せずにこのオプションを使用すると、エラーになります。 .sp このオプションは、\fB-U\fR オプションと同時に使用しても何の効果もありません。 .RE .sp .ne 2 .mk .na \fB\fB-e\fR \fIprogram\fR\fR .ad .sp .6 .RS 4n 接続の受け入れまたは実行後に外部プログラムを実行します。実行前に、\fBstdin,stdout,stderr\fR がネットワーク記述子にリダイレクトされます。このオプションでは、1 つのポートのみを使用できます。 .sp このオプションを \fB-R\fR、\fB-k\fR、または \fB-i\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-F\fR\fR .ad .sp .6 .RS 4n \fBstdin\fR で \fBEOF\fR を表示したあと、書き込みのためにネットワークソケットを閉じないでください。 .RE .sp .ne 2 .mk .na \fB\fB-h\fR\fR .ad .sp .6 .RS 4n \fBnc\fR のヘルプを表示します。 .RE .sp .ne 2 .mk .na \fB\fB-I\fR \fIbufsize\fR\fR .ad .sp .6 .RS 4n 受信する (入力) ソケットのバッファーサイズを設定します。 .sp このオプションは、\fB-U\fR オプションと同時に使用しても何の効果もありません。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fIinterval\fR\fR .ad .sp .6 .RS 4n テキスト行の送受信間隔 (\fIinterval\fR) の遅延時間を指定します。 .sp 間隔は適切な小数で指定します (秒単位)。 .sp このオプションを使用すると複数のポートへの接続で遅延が発生するため、ポートスキャンモードにも影響が及びます。 .RE .sp .ne 2 .mk .na \fB\fB-k\fR\fR .ad .sp .6 .RS 4n 現在の接続が閉じられたら、\fBnc\fR が別の接続を待機するよう強制します。 .sp \fB-l\fR オプションを指定せずにこのオプションを使用すると、エラーになります。 .sp このオプションを \fB-e\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-L\fR \fItimeout\fR\fR .ad .sp .6 .RS 4n 閉じる操作を遅らせます。ネットワーク記述子が閉じられたあとにメッセージが送信されるのを、指定した時間 (秒) だけ待機します。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n リモートホストへの接続を開始せずに、着信する接続を待機します。 .sp このオプションを \fB-s\fR または \fB-z\fR オプションと同時に使用すると、エラーになります。 .sp \fB-l\fR オプションをワイルドカードソケット (IP アドレスとホスト名の指定はなし) とともに使用し、\fB-4\fR/\fB-6\fR オプションを指定しない場合は、IPv4 接続と IPv6 接続の両方が受け入れられます。 .RE .sp .ne 2 .mk .na \fB\fB-m\fR \fIbyte_count\fR\fR .ad .sp .6 .RS 4n 少なくとも \fBbyte_count\fR バイトを受信したあとに終了します。\fB-l\fR オプションとともに使用すると、\fBbyte_count\fR はクライアントから受信したバイト数と比較されます。 .sp \fBbyte_count\fR は \fB0\fR より大きく \fBINT_MAX\fR より小さい値である必要があります。 .RE .sp .ne 2 .mk .na \fB\fB-N\fR \fIfile\fR\fR .ad .sp .6 .RS 4n ファイルをパターンで指定して UDP ポートをスキャンします。このファイルの内容は、放出された各 UDP パケットのペイロードとして使用されます。 .sp \fB-u\fR オプションと \fB-z\fR オプションを指定せずにこのオプションを使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-n\fR\fR .ad .sp .6 .RS 4n アドレス、ホスト名、またはポートに対して名前およびサービスの検索を行いません。 .sp このオプションを使用すると、\fIhostname\fR 引数と \fIport\fR 引数は数値に制限されます。 .sp \fB-v\fR オプションとともに使用すると、引数に対する制限に加えて、すべてのアドレスとポートが数値形式で出力されます。このオプションは、\fB-U\fR オプションと同時に使用しても何の効果もありません。 .RE .sp .ne 2 .mk .na \fB\fB-O\fR \fIbufsize\fR\fR .ad .sp .6 .RS 4n 送信 (出力) ソケットのバッファーサイズを設定します。 .sp このオプションは、\fB-U\fR オプションと同時に使用しても何の効果もありません。 .RE .sp .ne 2 .mk .na \fB\fB-P\fR \fIproxy_username\fR\fR .ad .sp .6 .RS 4n 認証を要求するプロキシサーバーに渡されるユーザー名 (\fIproxy_username\fR) を指定します。\fIproxy_username\fR を指定しない場合、認証は行われません。現時点では、\fBHTTP CONNECT\fR プロキシのプロキシ認証のみがサポートされています。 .sp このオプションを \fB-l\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIport\fR\fR .ad .sp .6 .RS 4n \fB-l\fR オプションを指定せずに使用する場合は、\fBnc\fR が使用する発信元ポートを特権の制限と使用条件に従って指定します。\fB-l\fR オプションと同時に使用する場合は、待機ポートを設定します。 .sp このオプションと \fB-l\fR オプションの組み合わせは、グローバルなポート引数が指定されていない場合にのみ使用できます。 .RE .sp .ne 2 .mk .na \fB\fB-q\fR \fItimeout\fR\fR .ad .sp .6 .RS 4n \fBstdin\fR で \fBEOF\fR を受信したあとに、指定した秒数待機してから終了します。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR \fIaddr\fR/\fIport\fR[/\fIproto\fR]\fI\fR\fR .ad .sp .6 .RS 4n 指定した \fIhost\fR と \fIport\fR へのポートリダイレクトを実行します。 .sp 接続が受け入れられると、\fBnc\fR はリモートの \fIhost\fR/\fIport\fR に接続し、クライアントとリモートホスト間ですべてのデータを受け渡しします。リダイレクト指定の \fIproto\fR (プロトコル) 部分は、\fBtcp\fR と \fBudp\fR のどちらかにできます。\fIproto\fR が指定されていない場合、\fBredirector\fR はサーバーと同じプロトコルを使用します。 .sp このオプションを \fB-z\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-r\fR\fR .ad .sp .6 .RS 4n \fIport_list\fR 引数で指定されたすべてのポートの中から着信先ポートを (順番にではなく) ランダムに選択します。 .sp このオプションを \fB-l\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR \fIsource_ip_address\fR\fR .ad .sp .6 .RS 4n パケットの送信に使用するインタフェースの IP を指定します。 .sp このオプションを \fB-l\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-S\fR \fIsla-prop\fR\fR .ad .sp .6 .RS 4n ソケット用に作成された MAC フローのプロパティーを指定します。\fIsla-prop\fR はプロパティーの「name=value」をコンマで区切ったリストとして指定されます。 .sp 現在サポートされているプロパティー名は \fBmaxbw\fR、\fBpriority\fR、および \fBinherit\fR です。 .sp \fBmaxbw\fR および \fBpriority\fR は flowadm(1M) で定義されたプロパティーから取得され、そのフローの最大の帯域幅および優先度を示します。\fBmaxbw\fR に指定できる値は整数とオプションの接尾辞 (デフォルトでは Mega) です。\fBpriority\fR は「high」、「medium」、および「low」のいずれかの値を取ることができます。 .sp フローの作成では、\fBmaxbw\fR および \fBpriority\fR を少なくとも 1 つ指定する必要があります。 .sp \fBinherit\fR は「on」および「off」のどちらかの値を取ることができ、デフォルト値は「off」です。デフォルトでは、(accept(3C) から返される) 受け入れられた/新しいソケットはリスナーソケットのプロパティーを継承しません。それが「on」に設定されていると、新しいソケットはリスナーソケットのプロパティーを継承します。これは、それらのプロパティーを新しいソケットに強制する必要がある場合に \fB-l\fR オプションで役立ちます。 .sp このオプションでは、\fBSYS_FLOW_CONFIG\fR 権限が必要です。このオプションでは、IP アドレスまたはホスト名を指定する必要もあります。 .RE .sp .ne 2 .mk .na \fB\fB-T\fR \fIdscp\fR\fR .ad .sp .6 .RS 4n 接続用の差別化サービスコードポイントを指定します。 .sp IPv4 の場合、IP Type of Service (ToS) IP ヘッダーフィールドが指定されます。この引数の有効な値は文字列トークンで、\fBlowdelay\fR、\fBthroughput\fR、\fBreliability\fR、または \fB0x\fR の後に 8 ビットの 16 進数値が付いた値になります。 .sp IPv6 (トラフィッククラス) の場合、16 進数値のみが使用できます。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR\fR .ad .sp .6 .RS 4n \fIRFC 854\fR の \fBDO\fR および \fBWILL\fR 要求に対して、\fBnc\fR が \fIRFC 854\fR の \fBDON'T\fR および \fBWON'T\fR 応答を送信します。これにより、\fBnc\fR を使用して \fBtelnet\fR セッションをスクリプト化できるようになります。 .RE .sp .ne 2 .mk .na \fB\fB-U\fR\fR .ad .sp .6 .RS 4n UNIX ドメインソケットの使用を指定します。\fB-l\fR を指定せずにこのオプションを指定すると、\fBnc\fR は \fBAF_UNIX\fR クライアントになります。このオプションを \fB-l\fR オプションと同時に指定すると、\fBAF_UNIX\fR サーバーが作成されます。 .sp このオプションを使用する場合は、ホスト名やポートではなく、有効な UNIX ドメインパスからなる単独の引数を \fBnc\fR に指定する必要があります。 .RE .sp .ne 2 .mk .na \fB\fB-u\fR\fR .ad .sp .6 .RS 4n デフォルトのオプションである TCP の代わりに UDP を使用します。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .sp .6 .RS 4n 詳細出力を指定します。 .RE .sp .ne 2 .mk .na \fB\fB-w\fR \fItimeout\fR\fR .ad .sp .6 .RS 4n 接続と \fBstdin\fR のアイドル状態が \fItimeout\fR 秒を超えた場合に、メッセージを表示せずに接続を閉じます。 .sp デフォルトはタイムアウトなしです。 .sp クライアントモードで接続確立フェーズにある場合、またはサーバーモードで接続を待機している場合、このオプションの効果はありません。 .RE .sp .ne 2 .mk .na \fB\fB-X\fR \fIproxy_protocol\fR\fR .ad .sp .6 .RS 4n プロキシサーバーとの通信時に、指定したプロトコルを使用します。サポートされるプロトコルは、\fB4\fR (\fBSOCKS v.4\fR)、\fB5\fR (\fBSOCKS v.5\fR)、および \fBconnect\fR (\fBHTTP\fR プロキシ) です。プロトコルを指定しなかった場合は、\fBSOCKS v. 5\fR が使用されます。 .sp このオプションを \fB-l\fR オプションと同時に使用すると、エラーになります。 .RE .sp .ne 2 .mk .na \fB\fB-x\fR \fIproxy_address\fR[:\fIport\fR]\fR .ad .sp .6 .RS 4n \fIproxy_address\fR および \fIport\fR で指定されたプロキシを使用して、\fIhostname\fR への接続を要求します。\fIport\fR を指定しなかった場合は、プロキシプロトコルのウェルノウンポート (\fBSOCKS\fR の場合は \fB1080\fR、\fBHTTP\fR の場合は \fB3128\fR) が使用されます。 .sp このオプションを \fB-l\fR オプションと同時に使用すると、エラーになります。 .sp このオプションは、IPv6 アドレスの数値表現では機能しません。 .RE .sp .ne 2 .mk .na \fB\fB-Z\fR\fR .ad .sp .6 .RS 4n 待機モードで、\fBSO_ALLZONES\fR ソケットオプションを使用して、すべてのゾーンでアドレス/ポートにバインドします。 .sp このオプションでは、\fBSYS_NET_CONFIG\fR 権限が必要です。 .RE .sp .ne 2 .mk .na \fB\fB-z\fR\fR .ad .sp .6 .RS 4n ポートスキャンを実行します。 TCP ポート (デフォルト) の場合、データが送信されずに接続スキャン (3 方向のフルハンドシェーク) が試行されます。UDP (\fB-u\fR) の場合、空の UDP パケットがデフォルトで送信されます。UDP ペイロードを指定するには、 \fB-N\fR オプションを使用できます。 .sp UDP スキャンモードでは、否定応答 (ICMP 着信先ポート未達メッセージ) が受信されない場合は、ポートが開かれているものと推定します。このモードでは、\fB-w\fR オプションで設定したタイムアウトを使用して、リモートノードからの ICMP メッセージまたはデータを待機します。\fB-v\fR を指定すると、すべての受信データが 16 進数バイト値として \fBstderr\fR にダンプされます。 .sp ほとんどのオペレーティングシステムが、入力パケットに対する ICMP メッセージの送信に速度制限を課しているため、UDP スキャンを実行するときに \fB-i\fR オプションを使用しないと、結果が信頼性のないものになります。 .sp このオプションを \fB-l\fR オプションと同時に使用すると、エラーになります。 .RE .SH オペランド .sp .LP 次のオペランドがサポートされています。 .sp .ne 2 .mk .na \fB\fIhostname\fR\fR .ad .RS 13n .rt ホスト名を指定します。 .sp \fIhostname\fR には、数値 IP アドレスまたは記号ホスト名 (\fB-n\fR オプションを指定していない場合のみ) を指定できます。 .sp 一般に、\fIhostname\fR を指定する必要があるのは、\fB-l\fR オプションを指定しない場合か、\fB-U\fR を使用しない場合です (その場合、この引数はパスになります)。\fIhostname\fR 引数を \fB-l\fR オプションを同時に指定した場合、\fIport\fR 引数も指定する必要があり、\fBnc\fR はそのアドレスとポートにバインドしようとします。\fIhostname\fR 引数を \fB-l\fR オプションと同時に指定しなかった場合、\fBnc\fR は指定されたポートのワイルドカードソケットで待機しようとします。\fI\fR .RE .sp .ne 2 .mk .na \fB\fIpath\fR\fR .ad .RS 13n .rt パス名を指定します。 .RE .sp .ne 2 .mk .na \fB\fIport\fR\fR .ad .br .na \fB\fIport_list\fR\fR .ad .RS 13n .rt ポートを指定します。 .sp \fIport_list\fR には、1 つの整数、整数の範囲、あるいはその両方の組み合わせを指定できます。範囲は \fInn-mm\fR の形式で指定します。\fIport_list\fR には 1 つ以上のメンバーを指定する必要があり、複数のポートまたは範囲をコンマで区切って指定できます。 .sp 一般に、着信先ポートを指定する必要があるのは、\fB-U\fR オプションを指定しない場合です。そのオプションを指定した場合は、\fIhostname\fR の代わりに Unix ドメインソケットのパスを指定する必要があります。 .sp 複数のポートが含まれているポート一覧を -e オプションと同時に使用すると、エラーになります。 .RE .SH 使用法 .SS "クライアント/サーバーモデル" .sp .LP \fBnc\fR を使用すると、非常に基本的なクライアント/サーバーモデルをきわめて簡単に構築できます。1 つ目のコンソールで、特定のポートで接続を待機する \fBnc\fR を起動します。次に例を示します。 .sp .in +2 .nf $ nc -l 1234 .fi .in -2 .sp .sp .LP これは、ポート \fB1234\fR で接続を待機します。2 つ目のコンソール (または 2 つ目のマシン) で、\fBnc\fR が待機しているマシンとポートに接続します。 .sp .in +2 .nf $ nc 127.0.0.1 1234 .fi .in -2 .sp .sp .LP これで、ポート間の接続が確立されます。2 つ目のコンソールで入力した内容が、1 つ目のコンソールで入力した内容に連結されます (その逆も同様)。接続が設定されると、\fBnc\fR はどちら側がサーバーとして使用され、どちら側がクライアントとして使用されているかを区別しません。\fB\fR\fB\fR接続を終了するには \fBEOF\fR (Ctrl-D) を使用します。 .SS "データ転送" .sp .LP 前のセクションの例を応用すると、基本的なデータ転送モデルを作成できます。接続の一方の側に入力された情報がもう一方の側に出力されるため、入力と出力を簡単に取り込んでファイル転送をエミュレートできます。 .sp .LP 最初に、\fBnc\fR を使用して特定のポートで待機し、出力をファイルに取り込みます。 .sp .in +2 .nf $ nc -l 1234 > filename.out .fi .in -2 .sp .sp .LP 2 つ目のマシンを使用して、待機中の \fBnc\fR プロセスに接続し、転送するファイルを入力します。 .sp .in +2 .nf $ nc host.example.com 1234 < filename.in .fi .in -2 .sp .sp .LP ファイルの転送が完了すると、接続は自動的に終了します。 .SS "サーバーとの通信" .sp .LP ユーザーインタフェースを使用せずに手動でサーバーと通信したほうが便利な場合があります。\fB\fRこの方法は、トラブルシューティングで、クライアントが実行したコマンドに対応してサーバーがどのようなデータを送信しているのかを確認する必要がある場合などに役立ちます。 .sp .LP たとえば、Web サイトのホームページを取得するには、次のコマンドを使用します。 .sp .in +2 .nf $ echo -n "GET / HTTP/1.0\er\en\er\en" | nc host.example.com 80 .fi .in -2 .sp .sp .LP これにより、Web サーバーが送信したヘッダーも表示されます。表示された内容は、\fBsed\fR(1) などのツールを使用すると、必要に応じてフィルタ処理できます。 .sp .LP サーバーが求める要求形式がわかっている場合は、より複雑な例を作成できます。もう 1 つの例として、電子メールを SMTP サーバーに送信するには、次を使用します。 .sp .in +2 .nf $ nc localhost 25 << EOF HELO host.example.com MAIL FROM: > /etc/services wwwredir 8080/tcp # WWW redirect EOF # cat << EOF > /tmp/wwwredir.conf wwwredir stream tcp nowait nobody /usr/bin/nc /usr/bin/nc -w 3 realwww 80 EOF # inetconv -i /tmp/wwwredir.conf wwwredir -> /var/svc/manifest/network/wwwredir-tcp.xml Importing wwwredir-tcp.xml ...Done # inetadm -l wwwredir/tcp SCOPE NAME=VALUE name="wwwredir" endpoint_type="stream" proto="tcp" isrpc=FALSE wait=FALSE exec="/usr/bin/nc -w 3 realwww 80" arg0="/usr/bin/nc" user="nobody" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=TRUE default tcp_wrappers=FALSE .fi .in -2 .sp .SS "特権" .sp .LP 特権ポート番号にバインドするには、\fBnc\fR に \fBnet_privaddr\fR 特権を付与する必要があります。Solaris Trusted Extensions が構成され、\fBnc\fR が待機するポートがマルチレベルポートとして構成されている場合は、\fBnet_bindmlp\fR 特権も必要です。\fB\fR .sp .LP 特権をユーザーまたは役割に直接割り当てるには、\fBuser_attr\fR(4) にアカウントのデフォルトの特権セットを指定します。ただし、このユーザーまたは役割が起動したアプリケーションにもこれらの特権が追加されます。\fBnc\fR が起動されたときにだけ特権 (\fBprivileges\fR(5)) を付与するには、\fBrbac\fR(5) 権利プロファイルを作成して割り当てることをお勧めします。詳細は、「\fB使用例\fR」を参照してください。 .SH 使用例 .LP \fB例 1 \fR\fBnc\fR を使用する .sp .LP ポート \fB3141\fR を発信元ポートとして使用し、タイムアウトを \fB5\fR 秒に設定して、\fBhost.example.com\fR のポート \fB42\fR への TCP 接続を開きます。 .sp .in +2 .nf $ nc -p 3141 -w 5 host.example.com 42 .fi .in -2 .sp .sp .LP ポート \fB7777\fR の \fBhost.example.com\fR への TCP 接続を開き、ソケット上に 50M ビット/秒の最大帯域幅を設定します。 .sp .in +2 .nf $ nc -M maxbw=50M host.example.com 7777 .fi .in -2 .sp .sp .LP \fBhost.example.com\fR のポート \fB53\fR への UDP 接続を開きます。 .sp .in +2 .nf $ nc -u host.example.com 53 .fi .in -2 .sp .sp .LP 接続のローカル側の IP として \fB10.1.2.3\fR を使用し、\fBhost.example.com\fR のポート 42 への TCP 接続を開きます。 .sp .in +2 .nf $ nc -s 10.1.2.3 host.example.com 42 .fi .in -2 .sp .sp .LP ポートとポート範囲の一覧を使用して、さまざまなポートでポートスキャンを実行します。 .sp .in +2 .nf $ nc -z host.example.com 21-25,53,80,110-120,443 .fi .in -2 .sp .sp .LP UNIX ドメインソケットを作成して、待機します。 .sp .in +2 .nf $ nc -lU /var/tmp/dsocket .fi .in -2 .sp .sp .LP 関連付けられたポート \fB8888\fR を使用して UDP ソケットを作成し、待機します。 .sp .in +2 .nf $ nc -u -l -p 8888 .fi .in -2 .sp .sp .LP これは次と同じです。 .sp .in +2 .nf $ nc -u -l 8888 .fi .in -2 .sp .sp .LP 関連付けられたポート \fB2222\fR を使用して TCP ソケットを作成して待機し、アドレス \fB127.0.0.1\fR にのみバインドします。 .sp .in +2 .nf $ nc -l 127.0.0.1 2222 .fi .in -2 .sp .sp .LP 関連付けられたポート \fB2222\fR を使用して TCP ソケットを作成して待機し、リスナーおよび接続されたソケット上に優先度の高い MAC フローを作成します。 .sp .in +2 .nf $ nc -l -M priority=high,inherit=on host.example.com 2222 .fi .in -2 .sp .sp .LP 遅延オプションを設定してタイムアウトを \fB0\fR に設定すると、TCP ポートに接続し、データを送信し、(従来の TCP クロージングハンドシェークではなく) TCP RST セグメントを使用して接続を終了します。 .sp .in +2 .nf $ echo "foo" | nc -L 0 host.example.com 22 .fi .in -2 .sp .sp .LP ローカルポート \fB4545\fR からホスト \fBhost.example.com\fR 上のポート \fB22\fR へのポートリダイレクトを実行します。 .sp .in +2 .nf $ nc -R host.example.com/22 -l 4545 .fi .in -2 .sp .sp .LP これにより、\fBssh\fR(1) クライアントを実行し、上記のコマンドを実行している \fBhost redir.example.com\fR を使用して \fBhost.example.com\fR に接続できるようになります。 .sp .in +2 .nf $ ssh -oStrictHostKeyChecking=no -p 4545 redir.example.com .fi .in -2 .sp .sp .LP TCP ポート上で \fBnc\fR を待機させ、TCP データストリームを UDP に変換することもできます (またはその逆も可能です)。 .sp .in +2 .nf $ nc -R host.example.com/53/udp -l 4666 .fi .in -2 .sp .sp .LP \fB10.2.3.4\fR、ポート \fB8080\fR の HTTP プロキシを使用して \fBhost.example.com\fR のポート \fB42\fR に接続します。この例は \fBssh\fR(1) で使用することもできます。詳細は、\fBssh_config\fR(4) の \fBProxyCommand\fR 指令を参照してください。 .sp .in +2 .nf $ nc -x10.2.3.4:8080 -Xconnect host.example.com 42 .fi .in -2 .sp .sp .LP 同じ例で、今度はユーザー名 \fBruser\fR を使用してプロキシ認証を有効にします (プロキシが認証を要求する場合)。 .sp .in +2 .nf $ nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42 .fi .in -2 .sp .sp .LP 基本的な UDP ポートスキャンは、次のように効率的に実行できます。 .sp .in +2 .nf $ nc -z -w 3 -u -i 0.5 host.example.com 11-100 .fi .in -2 .sp .sp .LP 2 つの各ポート間で 0.5 秒間一時停止し (これにより、ICMP メッセージの速度制限が回避されます)、最大で 3 秒間返信を待機します。返信がない場合、そのポートは開かれている可能性があります。 .sp .LP 多くの特権を持つユーザーまたは役割 (デフォルトの \fBroot\fR アカウントなど) として最小限の特権セットで \fBnc\fR を実行するには、 \fBppriv\fR(1) も使用して起動します。たとえば、特権ポートにバインドするための特権だけで実行するように制限します。 .sp .in +2 .nf $ ppriv -e -sA=basic,!file_link_any,!proc_exec,!proc_fork,\e !proc_info,!proc_session,net_privaddr nc -l 42 .fi .in -2 .sp .sp .LP ユーザーまたは役割が \fBnet_privaddr\fR 特権だけで \fBnc\fR を実行できるようにするには、権利プロファイルを作成する必要があります。 .sp .in +2 .nf /etc/security/exec_attr Netcat privileged:solaris:cmd:::/usr/bin/nc:privs=net_privaddr /etc/security/prof_attr Netcat privileged:::Allow nc to bind to privileged ports:help=None.html .fi .in -2 .sp .sp .LP \fBuser_attr\fR(4) を使用してこの権利プロファイルを割り当てると、そのユーザーまたは役割は、任意のポートで待機できる \fBnc\fR を実行できるようになります。ユーザーまたは役割が \fBnc\fR を使用して特定のポートだけで待機できるようにするには、権利プロファイルにラッパースクリプトを指定するようにしてください。 .sp .in +2 .nf /etc/security/exec_attr Netcat restricted:solaris:cmd:::/usr/bin/nc-restricted:privs=net_privaddr /etc/security/prof_attr Netcat restricted:::Allow nc to bind to privileged ports:help=None.html .fi .in -2 .sp .sp .LP また、許可されるオプションを制限するシェルスクリプトを作成する必要があります。たとえば、ポート \fB42\fR - \fB64\fR (42 と 64 は除く) へのバインドのみを許可するものです。 .sp .in +2 .nf /usr/bin/nc-restricted: #!/bin/sh [ $# -eq 1 ] && [ $1 -gt 42 -a $1 -lt 64 ] && /usr/bin/nc -l -p "$1" .fi .in -2 .sp .sp .LP これにより、ユーザーまたは役割がプロファイルシェルからラッパースクリプトを使用して \fBnc\fR を起動すると、追加の特権が付与されます。\fBpfsh\fR(1)、\fBpfksh\fR(1)、\fBpfcsh\fR(1)、および \fBpfexec\fR(1) を参照してください。 .sp .LP \fBnc\fR を直接起動したり、\fBpfexec\fR またはプロファイルシェルを使用せずに起動したりすると、追加の特権を使用して nc が実行されません。 .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件network/netcat _ インタフェースの安定性下記を参照。 .TE .sp .LP パッケージ名は「確実」です。\fB-4\fR、\fB-6\fR、\fB-l\fR、\fB-n\fR、\fB-p\fR、\fB-u\fR、\fB-w\fR の各オプションとその引数 (存在する場合) のコマンド行構文は「確実」です。\fIname\fR および \fIport\fR リスト引数は「確実」です。ポート範囲の構文は「不確実」です。ほかのすべてのコマンド行オプションとその引数に関しては、インタフェースの安定性レベルは「不確実」です。 .SH 関連項目 .sp .LP \fBcat\fR(1), \fBpfcsh\fR(1), \fBpfexec\fR(1), \fBpfksh\fR(1), \fBpfsh\fR(1), \fBppriv\fR(1), \fBsed\fR(1), \fBssh\fR(1), \fBtelnet\fR(1), \fBinetadm\fR(1M), \fBinetconv\fR(1M), \fBinetd\fR(1M), \fBssh_config\fR(4), \fBuser_attr\fR(4), \fBattributes\fR(5), \fBprivileges\fR(5), \fBrbac\fR(5) .SH 著者 .sp .LP \fBnc\fR の最初の実装は Hobbit (\fBhobbit@avian.org\fR) によって作成されました。 .sp .LP IPv6 サポートに伴う \fBnc\fR の改訂は、Eric Jackson (\fBericj@monkey.org\fR) によって行われました。 .SH 注意事項 .sp .LP \fBnc\fR のインスタンスが (アドレスファミリ指定にかかわらず) ワイルドカードソケット上で待機している場合、別の \fBnc\fR プロセスを実在する IP アドレスにバインドしてこのアドレスへの接続を受け入れることもできます。たとえば、以下のプロセスを実行している場合、 .sp .in +2 .nf $ nc -4 -l 5656 .fi .in -2 .sp .sp .LP 特定の IP アドレスおよび同じポート上で待機している別の \fBnc\fR プロセスを実行できます。 .sp .in +2 .nf $ nc -4 -l 10.20.30.40 5656 .fi .in -2 .sp .sp .LP アドレス \fB10.20.30.40\fR およびポート \fB5656\fR への TCP 接続はあとのプロセスによって受け入れられ、ポート \fB5656\fR および異なるアドレスへのすべての TCP 接続は前のプロセスによって受け入れられます。 .sp .LP また、IPv4 ワイルドカードソケットにバインドすることによって、(アドレスファミリを指定せずに) ワイルドカードソケット上で待機するプロセスから IPv4 接続を流用できます。この動作および上記の動作を無効にするには、\fB-E\fR オプションを使用します。