
ファイルを介してTCP接続をトンネリングする
ファイルサーバーを介して TCP 接続をトンネリングします。
対応しているファイルシステムの完全なリストは こちら にあります。
Windows、Linux、Mac 用のポータブル実行ファイルは リリース セクションにあります。
ホスト A からホスト B に接続したいが、ファイアウォールが邪魔をしています。しかし、両方のホストは共有フォルダにアクセスできます。

ft.exe -L 5000:127.0.0.1:3389 --write "\\server\share\1.dat" --read "\\server\share\2.dat"
このコマンドはポート 5000 で接続を待ち受けます。接続を受信すると、ファイルトンネルを介して転送され、さらに 127.0.0.1:3389 へ転送されます。
ft.exe --read "\\server\share\1.dat" --write "\\server\share\2.dat"
次にホスト A で、クライアントを 127.0.0.1:5000 に接続すると、リモートサーバーへ転送されます。
File Tunnel が動作しているときの様子は次のとおりです:

リモートサービス (例: 192.168.1.50:8888) に接続したいが、RDP を使用してホスト B にのみアクセスできる場合。
ft.exe -L 5000:192.168.1.50:8888 --write "C:\Temp\1.dat" --read "C:\Temp\2.dat"
RDP クライアントを実行し、こちら に示されているようにローカルドライブが共有されていることを確認します。
ホスト B へ RDP 接続します。
ft.exe --read "\\tsclient\c\Temp\1.dat" --write "\\tsclient\c\Temp\2.dat"
これでホスト A で 127.0.0.1:5000 に接続でき、192.168.1.50:8888 へ転送されます。
-L は複数回使用でき、1 つのトンネルを通じて複数のポートを転送できます。
他のコンピュータがトンネルを使用できるようにするには、バインドアドレスに 0.0.0.0 を指定します。例: -L 0.0.0.0:5000:192.168.1.50:3389 は、ネットワーク上の任意のコンピュータがトンネルを介して 192.168.1.50:3389 に接続できるようにします。
リモート転送には -R を使用します。例: -R 5000:10.0.0.50:6000 は、リモート 側にポート 5000 で待ち受けるように指示し、接続を受信するとトンネルを通じてローカルマシンを経由して 10.0.0.50:6000 へ転送します。これにより、ローカルマシンで実行中のサーバーを他のコンピュータと共有できます。
SSH と同様に、動的 (SOCKS) 転送には -D を使用します。例: -D 1080 はポート 1080 で SOCKS4/4a/5 プロキシを起動します。各接続は リモート 側から確立されるため、アプリケーションはリモートマシンが到達できるものすべてにアクセスできます。宛先なしの -R 1080 はその逆で、リモート 側で SOCKS プロキシをホストし、ローカルマシン経由で接続を確立します。TCP (CONNECT) と SOCKS5 UDP (ASSOCIATE) の両方を処理します。認証はありません。
HTTP プロキシには --http-proxy を使用します。例: --http-proxy 8080 はポート 8080 で HTTP CONNECT プロキシを起動し、リモート 側から接続を確立します (ブラウザまたは curl -x http://127.0.0.1:8080 https://example.com をそのプロキシに向けます)。代わりに を使用すると、 側でプロキシをホストし、ローカルマシン経由で接続を確立します。CONNECT メソッドのみ (HTTPS および任意の TCP トンネル)。認証はありません。
プログラムは TCP リスナーを起動し、接続を受信すると TCP データをファイルに書き込みます。この同じファイルを相手側のプログラムが読み取り、TCP 接続を確立して TCP データを転送します。 共有ファイルが無限に大きくなるのを防ぐため、10 MB を超えると消去されます。
--remote-http-proxy 8080別のコンピュータのインターネット接続を使用するには、こちらの 手順に従います。