2つのイカの連鎖

2つのイカの連鎖

私は Squid A と Squid B という 2 つの Squid サーバーを所有しています。

Squid A はローカル ネットワークに対して透過的にキャッシュします。

正規表現に一致する URL の要求があった場合、通常どおり要求を処理するのではなく、Squid B を介して「リダイレクト」し、Squid B が要求を処理して結果を Squid A に返し、Squid A がそれをクライアントに渡すように Squid A を設定したいと思います。

これを実行するには、Squid A の設定ファイルをどのように設定すればよいでしょうか?

答え1

squid A の設定で以下を使用します (通常は /etc/squid/squid.conf)

cache_peer <squid server B IP> parent <server B squid port> 3130 no-query no-digest no-netdb-exchange 

acl otherproxy url_regex "/etc/squid/divert.txt"
cache_peer_access <Squid server B IP> allow otherproxy
never_direct allow otherproxy
cache_peer_access <squid server B IP> deny all

そして、他のACLの一番上にあるSquid Bの設定に従います

acl A_proxy src <Squid server A IP>/32
http_access allow A_proxy

その後、/etc/squid/divert.txt ファイルに正規表現を追加し、squid をリロードできます。一致する URL は直接ではなく、サーバー B から要求されます。

プロキシ B にも ACL を追加することについて言及した理由は、プロキシ B の認証、接続制限などの設定がプロキシ A のクライアントに影響を与えるのを避けるためです。このような問題はデバッグが非常に困難です。したがって、プロキシ A からプロキシ B へのすべてのリクエストを許可することをお勧めします。何かをブロックしたい場合は、両方のプロキシ構成でブロックしてください。

答え2

squid A の squid.conf に次のような内容を設定します。これを例として使用し、実際の要件に合わせて調整します。

# イカBを親として定義する
cache_peer squid.b.example.com 親 3128 3130 デフォルト

# 任意のドメインまたはIPアドレス範囲のACLを作成します
# 親 (squid B) から取得したくない。例:
acl local_domains ドメイン your.local.domains.here
acl local_ip dst your.local.ip.addresses.here
常に直接許可 ローカルドメイン
常に直接許可 ローカルIP

# そしてその他すべてへの直接アクセスを拒否する
never_direct すべて許可

答え3

Squidには、プロキシサーバーの階層構造をサポートする機能があります。squid マニュアルページそのトピックに関する優れたドキュメントがあります。

関連情報