私の大学には 3 台のプロキシ サーバーがあり、すべて 3 つの異なるサービス プロバイダーに接続されています。異なる瞬間に、異なるプロキシは異なる速度を提供します (その瞬間にそのプロキシを使用しているユーザーの数によって異なります)。異なる瞬間にブラウザー (または他のネットワーク アプリケーション) でプロキシ サーバーの構成を変更すると、非常に時間がかかると感じています。何らかのテストを実行して、異なる瞬間にすべてのネットワーク アプリケーションで使用されるプロキシ サーバーを動的に変更できる 1 つのスクリプトを作成したいと考えています。
始めることができません。誰か、これを実装できるようにアイデアを教えていただけませんか。
答え1
これは単なるJavaScriptなので、このファイルをイントラネット内の任意のWebサーバーにホストし、クライアント側で設定することができますhttp://webserever-ip/proxy.pac
。このスクリプトを使用すると、負荷分散3 つのプロキシを使用します。また、この Java スクリプトでは IP 範囲を使用してトラフィックを分割でき、イントラネットや任意の Web サイトをバイパスするなどの複数の機能があります。
このスクリプトはすべてのクライアント側で自動的に設定できます。以下のオプションは同じために必要です。
- ドメインネットワークを使用している場合は、グループポリシーを使用してProxy.pacを設定します。
- DHCPを使用してWPAD.DATを設定できます
- ドメイン名
答え2
プロキシを単一のポイントから設定するには、次のようなiptablesルールを使用して宛先アドレスの書き換えを行うルーターを設定できます。
iptables -t nat -A PREROUTING -p tcp -d VIRTUAL_PROXY_IP --dport 80 -j NETMAP --to CURRENT_PROXY_IP
すべてのアプリケーションとブラウザはプロキシとして VIRTUAL_PROXY_IP を使用するため、この特別なルーターを経由してルーティングする必要があります。必要に応じてルールを変更し、CURRENT_PROXY_IP を変更します。
このアプローチの利点は、セットアップが迅速で管理が簡単なことです。欠点は、セッションを開いている一部のユーザーに何らかの混乱が生じる可能性があることです (セッションの種類と上流プロキシの種類によって異なります)。また、プロキシを変更するには、独自のスクリプトを作成するか、手動で変更する必要があります。
sr_のコメントで提案されているより良い解決策は、ロードバランサーを設定することです。LVSまたはHAプロキシ
答え3
squidを使用していると仮定すると同じ表示名を共有する 2 つの兄弟プロキシが私の場合はうまくいっているようです。それぞれ proxy1 と proxy2 という名前で 2 つ設定しています。表示ホスト名は proxy です。この時点で必要なのは、proxy1 と proxy1 の IP アドレスを持つ proxy という名前の DNS の A レコードを作成することだけです。squid.conf で兄弟として設定されている限りです。こちらをご覧ください。http://horms.net/projects/redundant_linux_paper/related/squid/hierarchies/concepts.html
答え4
シンプルな解決策
ローカルホストファイルにプロキシサーバーのホストエイリアスを設定します。
192.168.1.1 chosenproxy #192.168.1.2 chosenproxy #192.168.1.3 chosenproxy
すべてのアプリケーションがこのエイリアスを使用するように設定しますhttp://chosenproxy:8080
その後、別のサーバーを試すには、hosts ファイル内の IP アドレスを編集するだけです。
管理可能なポートソリューション
ポートも変更する必要がある場合は、polipoなどの軽量プロキシプログラムを使用してください。Polipoはデフォルトでポート8123で実行されるため、すべてのアプリケーションがローカルで実行されているpolipo経由で接続するように設定してください。たとえば、次の設定を使用します。http://localhost:8123
次に、別のプロキシ サーバーを試すには、polipo 構成ファイル ( /etc/polipo/config
) を変更して適切な親プロキシ サーバーとポート番号を指定し、polipo を再起動して変更を有効にします。