HTTP プロキシは、ホストヘッダーに基づいて外部インターフェイスを選択します。

HTTP プロキシは、ホストヘッダーに基づいて外部インターフェイスを選択します。

私は職場に複数の外部IPアドレス(フルクラスC)があり、使用しているアウトバウンドIPアドレスを選択する必要がある非常に具体的なユースケースを持っています。リクエストはhttpで、アプリケーションサーバーはイントラネットの他のシステムです。単純化のためにアプリケーションコードを変更する必要がないようにhttpプロキシとして保持したいと思います。

必要:

  • プロキシは「External-Ip:xyza」などのヘッダーを探し、その外部IPアドレスを持つインターフェイスを介してトラフィックを送信します。ヘッダーを簡単に変更できるため、インターフェイス名を送信する必要がある場合は問題ありません。
  • ヘッダーがない場合、プロキシはヘッダーをランダムに選択し、httpヘッダーとして使用するインターフェースを返します。

これを達成する最も簡単な方法は何ですか?

ベストアンサー1

それにもかかわらず、Squidにはこの機能が組み込まれています。

「acl outbound0 req_header .2$」を使用して、「outbound0」というACLを.2外部IPに設定しました。スクリプトを使用して残りのACLを生成し、それを構成ファイルにハードコードしました。

その後、ACLに基づいて外部IPを選択するtcp_outgoing_addressと組み合わせました。結果は次のとおりです。

acl outbound0 req_header TS-Outbound-IP \.20$
acl outbound1 req_header TS-Outbound-IP \.21$
acl outbound2 req_header TS-Outbound-IP \.22$
acl outbound3 req_header TS-Outbound-IP \.23$
acl outbound4 req_header TS-Outbound-IP \.24$
acl outbound5 req_header TS-Outbound-IP \.25$

tcp_outgoing_address 192.168.1.20 outbound0
tcp_outgoing_address 192.168.1.21 outbound1
tcp_outgoing_address 192.168.1.22 outbound2
tcp_outgoing_address 192.168.1.23 outbound3
tcp_outgoing_address 192.168.1.24 outbound4
tcp_outgoing_address 192.168.1.25 outbound5

現在、これは私たちのニーズに非常に適しています。このアプローチはぎこちないようで、代替案に興味があるので、この質問を開いておきます。

おすすめ記事