多目的 TCP/UDP ネットワーキング ツール
Netcrab は、さまざまな機能を実行できるコマンドライン ネットワーキング ツールです。これは netcat に敬意を表しており、netcat でできることの多くを実行できます。できることの簡単な概要:
完全に使用するには、 netcrab --help
を実行します。
netcrab HOST:PORT
これにより、指定された TCP サーバーに接続されます。これで、標準入力がサーバーに送信され、標準出力が出力されます。
ホスト名の IPv6 形式では、角括弧で囲む必要があります (例: localhost は[::1]
。
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
1 つ以上の任意のポートで TCP サーバーとしてリッスンできます。 -l
使用すると、最初の受信接続が切断された後にプログラムが終了します。 「さらに聞く」には-L
使用します。切断後も聞き続けます。
ADDR:PORT
構文は、いくつかの特殊なバリアントをサポートしています。
localhost:5000
:5000
*:5000
TCP サーバーはデフォルトで、リスニング アドレスごとに一度に 1 つの受信接続のみをアクティブにできますが、 -m max_inbound_clients
フラグを使用すると複数の接続が許可されます。
クライアント モードと同様に、stdin は接続されているすべてのソケットに送信され、すべてのソケットからの受信データは stdout に送信されます。これは、以下の入力モード引数と出力モード引数を使用して変更できます。
-z
引数を指定すると、データの送信を許可せずにソケットがすぐに切断されます。接続をテストするだけの場合に役立ちます。
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP は実際には「接続」しないという点で奇妙です。ローカル ポートにバインドして、リモート ピアとの間でデータグラムを送受信します。 UDP のリスニング モードと接続モードはまったく同じように機能します。ただし、接続モードでは、stdin を送信する最初のピアが最初にわかっており、リスニング モードでは、リスナーが少なくとも受信するまで stdin トラフィックをどこにも送信できない点が異なります。ピアからの 1 つのデータグラム。
-L
の場合、これは上記の TCP と同じADDR:PORT
構文をサポートします。
データグラムのサイズはデフォルトで 1 バイトですが、 --ss
引数で制御できます。
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
Netcrab は、複数のローカル アドレスとポートでの同時リッスンをサポートします。いずれかに到着する接続を受け入れます。これは TCP と UDP をサポートします。
netcrab -u --mc HOST:PORT
Netcrab は、 --mc
引数を追加することで、UDP ソケットのマルチキャスト グループへの参加をサポートします。また、マルチキャスト パケットの TTL ( --ttl
) と、プログラムがグループに参加しているためにループバックされたマルチキャスト パケットを受信するかどうか ( --mc_no_loop
) を制御します。
netcrab -u -b HOST:PORT
Netcrab は、UDP ブロードキャスト データグラムの送信をサポートしています。
netcrab -i MODE
入力モードを制御できます。デフォルトでは、入力は標準入力から来ます。次の他のモードも受け入れます。
none
: 入力できません。処理されるトラフィックはリモート ピアからのみです。stdin-nochar
: stdin と同じように動作しますが、「文字モード」には関与しません。これは、インタラクティブな使用ではさらにうまく機能しません。echo
: 受信したトラフィックは送信者にエコーバックされます。rand
: ランダムなデータが生成されます。データのランダムなサイズは--rsizemin
および--rsizemax
で制御でき、データのタイプは--rvals
で制御できます。fixed
: パフォーマンス テストにのみ実際に役立ちます。固定データを含む同じ固定サイズのメッセージが無限に送信されます。 --ss
使用してサイズを制御し、 --rvals
でその中のランダム データの種類を制御できます。pfqoscli
: PlayFab サービス品質ビーコンに対する遅延を測定します。pfqossrv
: クライアントが待機時間の測定対象となる PlayFab Quality of Service ビーコン サーバーとして機能します。 stdin モードの 1 つを入力として使用する場合、 --exit-after-input
を指定すると、入力ストリームがファイルの終わりに達した後にプログラムを終了できます。
netcrab -o MODE
デフォルトでは、出力は stdout に送られますが、多くの場合、すべての出力をスキップするには、これを-o none
に変更すると便利です。これは、出力の速度が低下する可能性があるため、大量のトラフィックを通過させる場合に特に役立ちます。
Netcrab のデフォルト モードでは stdin と stdout を使用するため、ファイルからの入力をリダイレクトし、出力をファイルに送信 (またはプログラム間でパイプ接続) できます。
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
IPv6 または IPv4 アドレス ファミリのみの使用に制限できます。これは、DNS 解決を経由するホスト名に接続する場合、または明示的な送信元アドレスを指定せずにリッスンする場合に、より大きな違いをもたらします。
netcrab -s ADDR:PORT
アウトバウンド TCP 接続を確立するとき、または UDP データグラムを送信するとき、Netcrab はデフォルトでワイルドカード IPv4 および IPv6 アドレス (0.0.0.0:0 および [::]:0) にバインドします。代わりに-s
渡すと、明示的にアドレスにバインドできます。これは、「TCP サーバー」セクションで説明されているすべてのADDR:PORT
バリアントをサポートします。
netcrab HOST1:PORT1 HOST2:PORT2
Netcrab を使用すると、複数のリモート ピアに同時に接続できます。複数の同時接続をリッスンするのと同様に、ローカル マシンからのトラフィックは、接続されているすべてのピア (受信または送信) に送信されます。
netcrab -L ADDR:PORT HOST:PORT
Netcrab は、インバウンド接続のリスニングとアウトバウンド接続の作成の両方を同時にサポートします。これは、リッスンするアドレスとアウトバウンド接続に使用するソース アドレスの両方を個別に指定できるため、あるローカル アドレスから別のローカル アドレスにトラフィックをプロキシする場合に便利です。
netcrab HOST:PORTxNUM
特にチャネルのシナリオでは、同じエンドポイントに複数回接続できると便利な場合があります。たとえば、ホスト名に 12 回接続するには、 netcrab localhost:5000x12
を実行します。同じホスト名とポートに対して 12 個の同時アウトバウンド接続を試行します。
これは複数のターゲットと組み合わせることもできます。ここでは、IPv4 で localhost に 5 回、IPv6 で 13 回接続します。 netcrab 127.0.0.1:5000x5 [::1]:5000x13
。
netcrab -r
netcrab -R
アウトバウンド接続モードでは、切断された接続を再確立するように Netcrab に要求できます。 -r
接続を正常に閉じたときに再確立します。 -R
、不正なエラーが発生した場合に再確立します。 -r -R
または-rR
のいずれかを同時に指定できます。
netcrab --fm channels
netcrab --fm linger-channels
ここからは本当に役立つ部分に移ります。 Netcrab はルーターになり、複数のエンドポイント間でトラフィックを転送できます。 「チャネル」モードでは、エンドポイントをペアにして、一方のエンドポイントからもう一方のエンドポイントに双方向にトラフィックを転送し、透過的なプロキシのように動作します。トラフィックはチャネル間で転送されません。次の図を想像してください。
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
1 番目と 2 番目のチャネルはずっと通過しますが、流れを横切りません。ホスト 1 またはホスト 3 がエンドポイントを切断すると、その切断はチャネルの他端にも「転送」されます。この動作がうまくいかない場合は、残留チャネル モードに切り替えることができます。
チャネル モードの場合、ユーザーが実際にチャネルを使用するために一度に複数の接続を必要とする可能性があるという想定に基づいて、最大クライアント数はリスニング アドレスあたり 10 に自動的に増加します。これは-m
でオーバーライドできます。
netcrab --fm hub
ハブ モードはチャネル モードに似ていますが、より単純です。すべてのネットワーク ソースからのすべてのトラフィックが他のすべてのソケットに転送されます。チャット ルームなどをセットアップするために使用できます。
チャネル モードと同様に、ハブ モードの場合、最大クライアント数はリスニング アドレスごとに自動的に 10 に増加しますが、 -m
で上書きできます。
netcrab -e COMMAND
Netcrab は別のプログラムを実行し、その stdin と stdout をネットワークに接続できます。これを使用してリモート シェルなどを簡単に公開できますが、もちろん注意が必要です。このモードでは、通常の入出力は無効になります。
コマンド文字列は現在のシェルを通じて実行されます。
上記で説明したほぼすべての機能を組み合わせて同時に使用できます。たとえば、ハブを使用してすべての接続間で転送しながら、複数のアドレスでリッスンし、同じセッション内で複数のターゲットに接続できます。