Linuxでの透過的なSocks5プロキシアプリケーション

プロキシを介してワインの下で実行されるゲームを起動するのに、どういうわけか私はかかりました。 彼はsshトンネルを上げ、プロキシチェーンを介してゲームを起動しました... ...クロムは問題なく動作し、IPプロキシを示しましたが、ゲームはサーバーに接続できませんでした。 tsocksを試してみました-ゲームはまったく起動しませんでした。 もちろん、同じsshを使用してVPNトンネルを構成することもできましたが、サーバーはOpenVZの下でVPSであり、デフォルトでTUNがオフになっているため、テクニカルサポートへの手紙と待機につながります。

そのため、5分間のグーグルにより、放棄されたTransocksプロジェクトに導かれました。このプロジェクトは、ライブラリをロードしてネットワーク呼び出しをインターセプトするプロキシチェーンやtsocksとは異なり、特定のポートをリッスンし、socks4プロキシを介してすべてのデータをリダイレクトします。 残念ながら、私はトランスロックするつもりはなかったので、さらにグーグルを始めました。 プロジェクトには、cのtransocks_evとrubyのtransocks_emの 2つのフォークがあることがわかります。 1つ目はSocks5をサポートしますが、認証とUDPはサポートしません。 2つ目はSocks5、UDP、* BSDをサポートしますが、承認もサポートしていないようです(コードでは見つかりませんでしたが、ドキュメントはありません)。 UDPは必要ないので、transocks_evに決めました。



組立



transocks_evの構築は簡単です。Makefileとtransocks_ev.cをプロジェクトページからダウンロードし、libeventをインストールして実行するだけです

make





transocks_evバイナリがあります

tranSOCKS-ev - libevent-based transparent SOCKS5-Proxy

Usage: ./transocks_ev [-f] [-p Port] [-H IP-Address] [-s port] [-S IP-Address]



-f Do not fork into background upon execution

-p Bind our server-socket to this port

-H Listen on this IP-Address for incomming connections

-s Expect SOCKS5-Server on this Port

-S Expect SOCKS5-Server on this IP-Address








ポート4441でsshトンネルを上げたので、次のパラメーターを使用してtransocks_evを実行します。

./transocks_ev -p 4445 -H 127.0.0.1 -s 4441 -S 127.0.0.1





これで、socks5を介してすべての要求を開始するサーバーがポート4445でハングしました。 特定のポートでのみ、NATに似ています。



カスタマイズ



iptablesを使用してパケットを転送します。 アドレスまたはポートにプロキシするだけでなく、プロキシを介して任意のアプリケーションを実行できるように、プロキシチェーンの外観を作成することにしました(ただし、ゲームでも機能します)。

新しいプロキシグループを作成します。

sudo groupadd proxified





このグループでアプリケーションを実行できるように、/ etc / sudoersを編集します。 次のようなものがあるはずです。

valdikss ALL=(ALL:ALL) ALL







それでは、iptablesの設定に移りましょう。

sudo iptables -t nat -I OUTPUT -m owner --gid-owner proxified -p tcp -j REDIRECT --to-ports 4445





このコマンドは、プロキシ化されたグループを持つアプリケーションのすべてのパッケージをtransocksサーバーにリダイレクトします。



打ち上げ



プロキシ化されたグループでアプリケーションを起動します

sudo -g proxified chromium-browser







以上です。 この方法は、システム全体のプロキシ化を保証するため、またはルーターでの透過的なプロキシ化にも使用できます。 認証付きのプロキシを使用する必要がある場合は、3proxyをローカルにインストールし、プロキシをトップレベルプロキシとして指定します。



All Articles