質問: 現在Squid 3.5.20でフォワードプロキシを構築しています。 接続先はホワイトリストにて制限しています。 構成は下記となります。 ■AsIs クライアント ↓ Load Balancer ↓ Squid ↓ インターネット 今回接続元のクライアントをIPレンジでの制限をかけたいと考えていますが、 Load BalancerはTCP(任意の10300番ポートなど)でSquidに通信を振り分けているため、 接続元のIPアドレスが全てLBとなってしまいSquidで接続元の制限をかけることができません。 質問1 Squidに対しTCPの振り分けを80番ポートで行うなどで、 Squidで接続元のIPアドレスを取得し制限をかける方法はないでしょうか? 質問2 「質問1」ができない場合、前段にApacheを導入し多段プロキシ構成とすることで、 Load BalancerからHTTPでの振り分けにすることで、 接続元の制限をかけることが可能であることは検証したのですが、 Apacheから同サーバ内のSquidに対してさらにフォワーディングを行いたいのですが、 どのように実装すればよいでしょうか? 下記設定を入れて実装したのですが、想定通りの挙動となりませんでした。 ProxyRemote * http://10.225.160.38:10809/ Require all denied なお、質問2の場合は下記となる想定です。 ■ToBe クライアント ↓ Load Balancer ↓ Apache(2.4) ↓ Squid ↓ インターネット お手数ですが、ご教示いただけますようお願いいたします。 ※追記1 Squidの前はApacheでフォワードプロキシを構築していました。 その際は問題なく接続元で制限できていました。 ただし、任意のタイムアウト時間で通信を切断できなかったためSquidに変更した経緯があります。
回答: もし、Load Balancer が `X-Forwarded-For` ヘッダに接続元IPアドレスの情報を付加するのであれば、`follow_x_forwarded_for` を以下のように設定するといいと思います。 ``` acl my_clients src (許可するIPアドレス、ネットワークアドレス) http_access allow my_clients acl my_lb src (Load BalancerのIPアドレス) follow_x_forwarded_for allow my_lb # 以下はデフォルトで on なので、省略可 acl_uses_indirect_client on delay_pool_uses_indirect_client on log_uses_indirect_client on ```