
英語 | 中文
ポート転送とイントラネットプロキシのためのツール。lcx/ew と同様ですが、より優れています。
lcx と ew は素晴らしいですが、改善の余地があります。
最初に使ったとき、tran, slave, rcsocks, sssocks... のような複雑なパラメータを長い間覚えられませんでした。動作モードは明確なのに、なぜこのようなパラメータ設計(特に ew の -l -d -e -f -g -h)なのでしょうか?
また、ネットプログラミングのロジックも最適化できると思います。
例えば、lcx -listen 8888 9999 コマンドを実行する際、クライアントはまず :8888 に接続し、次に :9999 に接続する必要があります。iox では、2つのポートへの接続順序に制限はありません。また、lcx -slave 1.1.1.1 8888 1.1.1.1 9999 コマンドを実行する際、lcx は2つのホストに直列に接続しますが、iox のように並列に接続する方が効率的です。
さらに、iox はトラフィック暗号化機能を提供します(ターゲットにIDSがある場合に便利です)。実際、iox をシンプルなShadowSocksとして使用することもできます。
また、iox はUDPトラフィック転送も提供します。
もちろん、iox はGoで書かれているため、静的にリンクされたプログラムは少し大きく、生のプログラムは2.2MBです(UPX圧縮後800KB)。
ご覧の通り、すべてのパラメータは統一されています。-l/--local はローカルポートでの待受を意味し、-r/--remote はリモートホストへの接続を意味します。
注意:v0.4以降、-l/--local は待受IPを指定できます。ポートのみを指定した場合、デフォルトは 0.0.0.0:PORT です。
-l 127.0.0.1:9999 -l *127.0.0.1:9999 # 127.0.0.1:9999
-l 9999 -l *9999 # 0.0.0.0:9999
`-l :9999` も可能ですが、推奨しません。なぜなら `-l *:9999`(暗号化有効で 0.0.0.0:9999 で待受)と曖昧になるからです。
0.0.0.0:8888 と 0.0.0.0:9999 で待受、2つの接続間でトラフィックを転送
./iox fwd -l 8888 -l 9999
0.0.0.0:8888 で待受、トラフィックを 1.1.1.1:9999 に転送
./iox fwd -l 8888 -r 1.1.1.1:9999
1.1.1.1:8888 と 1.1.1.1:9999 に接続、2つの接続間で転送
./iox fwd -r 1.1.1.1:8888 -r 1.1.1.1:9999
0.0.0.0:1080 でSocks5サーバー起動
./iox proxy -l 1080
被制御ホストでSocks5サーバー起動し、インターネットVPSに転送
VPSが 0.0.0.0:9999 から 0.0.0.0:1080 に転送
接続制御のための簡単なプロトコルが含まれているため、ペアで使用する必要があります。
./iox proxy -r 1.1.1.1:9999
./iox proxy -l 9999 -l 1080 // 注意:2つのポートは順序通り
ewの場合:
./ew -s rcsocks -l 1080 -e 9999
./ew -s rssocks -d 1.1.1.1 -e 9999
次にイントラネットホストに接続
# proxychains.conf
# socks5://1.1.1.1:1080
$ proxychains rdesktop 192.168.0.100:3389
例えば、イントラネットの3389ポートをVPSに転送する場合
// 被制御ホスト
./iox fwd -r 192.168.0.100:3389 -r *1.1.1.1:8888 -k 656565
// 私たちのVPS
./iox fwd -l *8888 -l 33890 -k 656565
理解しやすいでしょう:被制御ホストとVPS:8888間のトラフィックは暗号化され、事前共有秘密鍵は 'AAA' です。iox はこれを使用してシードキーとノンスを生成します(通常、ノンスは再利用すべきではありません。しかし、ioxの暗号化はIDSを回避するためのものであり、余分なスペースを割り当てないために、TCPストリーム暗号化ではノンスを再利用します)。その後、Xchacha20で暗号化します(v0.3ではAES-CTRからXchacha20に変更)。
したがって、* はペアで使用する必要があります。
./iox fwd -l 1000 -r *127.0.0.1:1001 -k 000102
./iox fwd -l *1001 -r *127.0.0.1:1002 -k 000102
./iox fwd -l *1002 -r *127.0.0.1:1003 -k 000102
./iox proxy -l *1003 -k 000102
$ curl google.com -x socks5://127.0.0.1:1000
iox をシンプルなShadowSocksとして使用
// ssserver
./iox proxy -l *9999 -k 000102
// sslocal
./iox fwd -l 1080 -r *VPS:9999 -k 000102
CLIオプション -u を追加するだけ
./iox fwd -l 53 -r *127.0.0.1:8888 -k 000102 -u
./iox fwd -l *8888 -l *9999 -k 000102 -u
./iox fwd -r *127.0.0.1:9999 -r 8.8.8.8:53 -k 000102 -u
注意:マルチステージ接続を行う場合、Remote2Remote-UDP-mode(上記の例の3番目のコマンド)は最後に起動する必要があります。
UDP転送は、期待通りに動作しない場合があります。実際、現在GitHub上では、ローカルリスナーをリモートホストに転送する例しかないため、私の理解に基づいて実装しています。
ソースコードで理由を確認できます。アイデアがあれば、PR / issue をお待ちしています。
MITライセンス