職場で、私はそのような問題に遭遇しました。1ダースのユーザーではなく、さまざまな国に1ダースのプロキシサーバー(squid)があります。 それぞれがどのサーバーで動作するかを決定します-選択できるChrome拡張機能があります。
しかし、すべてのサーバーはユーザーから異なる距離にあり、ロシアのユーザーはカナダのサーバーを使用して、良好なブレーキに直面しています。 一方、すべてのサーバーはデータセンターで高速道路に接続されており、サーバー間の遅延ははるかに少なくなっています。
各ユーザーを自分に最も近いサーバーに誘導し、そこから選択したサーバーに誘導することが決定されました。
プロキシプロキシ
相互に機能するようにプロキシを構成する必要がある最初の項目。 最も簡単な方法は、指定することでした:
acl localnet srcdomain .com
しかし、すべての人が指定したドメインへの逆変換を許可しているわけではないことが判明しました。 すべてのIPサーバーを登録する必要がありました。
acl localnet srcdomain IP a 1 acl localnet srcdomain IP a 2 acl localnet srcdomain IP a 3
誰かが別の解決策を教えてくれたら、私はそれを修正して喜んでいるでしょう。 サーバーは頻繁に変更されることはありませんが、変更があった場合は、パペットを使用してすばやく修正されます。
リダイレクト管理
次の手順は、サーバーリダイレクト用にaclを構成することです。
cache_peer { 1} parent 3128 3130 name=peer1 cache_peer { 2} parent 3128 3130 name=peer2 cache_peer { 3} parent 3128 3130 name=peer3 cache_peer_access peer1 allow user1 cache_peer_access peer2 allow user2 cache_peer_access peer3 allow user3
この場合、user1、user2、user3はaclユーザーです。
ログイン
同社は、これらのケース用にすでにRADIUSサーバーを構成しています。 CentOS 5では、squid自体が構築されていないため、pamを介して設定を行いましたが、自己アセンブリのパスに移動する必要があり(sslは標準パスに含まれていません)、キー--enable-basic-auth-helpers = squid_radius_authを使用しました。 また、PAMに煩わされたくない場合は、別のライブラリをお勧めします。
wget http://www.squid-cache.org/contrib/squid_radius_auth/squid_radius_auth-1.10.tar.gz tar xvzf squid_radius_auth-1.10.tar.gz cd squid_radius_auth-1.10 cp Makefile.default Makefile make make install
どのインストールオプションでも、squidの構成は変更されず、最初の行のファイルパスのみが変更されます。
auth_param basic program /usr/local/squid/libexec/basic_radius_auth -f /usr/local/squid/etc/radius_config auth_param basic children 5 auth_param basic realm { } // auth_param basic credentialsttl 2 hours auth_param basic casesensitive off acl radius proxy_auth REQUIRED
radius_configファイルの例:
server { radius } password { radius}
各サーバーには独自のユーザーがいます
ルールは十分にシンプルでした。 最初に、どのユーザーがどのルールによって制御されるかを示します。
acl user1 proxy_auth "/usr/local/squid/userlist/user1" no_cache acl user2 proxy_auth "/usr/local/squid/userlist/user2" no_cache acl user3 proxy_auth "/usr/local/squid/userlist/user3" no_cache
そして、もちろん、プロキシを使用することを許可します。
http_access allow localnet // proxy-proxy http_access allow radius // , - http_access allow user1 http_access allow user2 http_access allow user3 http_access deny all //
以上です。 ユーザーがサーバーを選択すると、別のプログラムがユーザーリストのファイルからユーザーを削除し、選択したファイルに追加します。 しかし、それは別の話です。
ソース
基本情報はsquid wikiから取得しましたが、十分な例はありません。