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をローカルにインストールし、プロキシをトップレベルプロキシとして指定します。

Source: https://habr.com/ru/post/J116360/


All Articles