問題タブ [transparentproxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 複数の Docker コンテナーとホストの間にトンネルを作成するにはどうすればよいですか?
ブリッジを使用して接続された 2 つの Docker コンテナー (たとえば、A (172.17.0.2) と B (172.17.0.3)) をセットアップしています。ホスト コンテナからコンテナ A、次にコンテナ B、そしてインターネットにすべてのリクエストをルーティングしたいと考えています。応答は逆のパスに従う必要があります。
これまでのところ、ホストと 1 つのコンテナー (たとえば A) を使用してこれを行うことができました。コンテナー A で透過モードで実行する mitmproxy をセットアップしました。ポート 8080 で mitmproxy の実行を開始しました (ホスト バインディングを使用するため、A のポート 8080 はホストのポート 8081 にバインドされます)。ホスト上のすべての接続を A 経由でルーティングし、ホストに戻すことができます。ポート 80 と 443 のすべての接続を Docker コンテナーのポート 8080 に転送しています。
これらのルールは、1 つの Docker コンテナーを使用して非 root ユーザーとしてルーティングを実行します。
ポート 8500 のコンテナー B で透過モードで mitmproxy を実行することにより、コンテナー A で同様のルールを試しました。これは正しいアプローチだと思います。
ポート 80/443 のすべてのホスト トラフィックをコンテナ A のポート 8080 にルーティングする ポート 8080 のすべてのコンテナ A トラフィック (ここではすべてのトラフィックがこのポートにある必要があります) をコンテナ B のポート 8500 にルーティングします コンテナ B はインターネットに実際の要求を行い、応答を A に送り返し、A はそれをホストに送り返します。
コンテナ A で以下のようなルールを設定すると、コンテナ B で行われる GET リクエストの無限ループが表示されます
ホスト マシン上の docker によって設定された既存の iptables ルールと関係があると思いますが、それを機能させる方法がわかりません。
助けてくれてありがとう!
docker - TPROXY と Docker の互換性
Dockerコンテナ用の透過的なプロキシを構築するために、TPROXYがどのように機能するかを理解しようとしています.
多くの調査の後、私はネットワーク名前空間を作成し、そこに veth インターフェイスを挿入し、TPROXY ルールを追加することに成功しました。次のスクリプトは、クリーンな Ubuntu 18.04.3 で機能しました。
その後、Cloudflare ブログからおもちゃの Python サーバーを起動しました。
そして最後に、実行ip netns exec ns0 curl 1.2.4.8
することで からの接続を観察し、「hello world」メッセージを受け取る192.168.3.2
ことができました。1.2.4.8
問題は、Docker との互換性の問題があるように見えることです。クリーンな環境ではすべてうまくいきましたが、Docker を起動するとうまくいかなくなります。TPROXY ルールが機能しなくなったようです。実行するip netns exec ns0 curl 192.168.3.1
と「接続のリセット」が発生し、実行がip netns exec ns0 curl 1.2.4.8
タイムアウトになりました(両方とも「hello world」メッセージを生成する必要がありました)。すべての iptables ルールを復元し、Docker によって生成された IP ルートとルールを削除し、Docker をシャットダウンしようとしましたが、ネットワークやコンテナーを構成しなくても機能しませんでした。
舞台裏で何が起きていて、TPROXY を正常に動作させるにはどうすればよいですか?
python - UDP を使用した透過的なプロキシは可能ですか?
UDP 用に Python 内で透過プロキシを使用する可能性があるかどうかを知りたいです。私のソケットは次のように定義されます:
どこ
は定数です。ここで、そのソケットの元の IP とポートを取得したいと思います。TCP ではこのように機能sock.getsockname()
しますが、udp ソケットでは機能しません。もちろん、私は最初に次のようなことをします: