Ich habe in meinem College drei Proxyserver, die alle mit drei verschiedenen Dienstanbietern verbunden sind. Zu verschiedenen Zeitpunkten bieten verschiedene Proxys unterschiedliche Geschwindigkeiten (abhängig von der Anzahl der Benutzer, die diesen Proxy zu diesem Zeitpunkt verwenden). Ich finde, dass das Ändern der Proxyserverkonfiguration im Browser (oder in einer anderen Netzwerkanwendung) zu verschiedenen Zeitpunkten sehr zeitaufwändig ist. Ich möchte ein Skript schreiben, das den von allen meinen Netzwerkanwendungen zu verschiedenen Zeitpunkten verwendeten Proxyserver dynamisch ändern kann, indem es eine Art Test durchführt.
Ich komme damit nicht weiter. Kann mir bitte jemand eine Idee geben, damit ich das umsetzen kann.
Antwort1
Sie könnenPROXY.PACoderWPAD.DAT
es ist nur ein JavaScript, Sie können diese Datei auf jedem Webserver in Ihrem Intranet hosten und auf der Clientseite einrichten http://webserever-ip/proxy.pac
. Mit diesem Skript können Sie Folgendes tun:Lastverteilungmit Ihren drei Proxys. Außerdem können Sie den Datenverkehr mithilfe von IP-Bereichen in diesem Java-Skript aufteilen. Es gibt mehrere Funktionen wie das Umgehen des Intranets oder beliebiger Websites.
Sie können dieses Skript automatisch auf allen Ihren Clients einrichten. Die folgenden Optionen sind dafür erforderlich.
- Wenn Sie ein Domänennetzwerk verwenden, legen Sie Proxy.pac mithilfe der Gruppenrichtlinie fest
- Sie können WPAD.DAT über DHCP einrichten
- DNS
Antwort2
Um den Proxy von einem einzigen Punkt aus zu konfigurieren, können Sie einen Router einrichten, der die Zieladresse mithilfe einer iptables-Regel wie folgt umschreibt:
iptables -t nat -A PREROUTING -p tcp -d VIRTUAL_PROXY_IP --dport 80 -j NETMAP --to CURRENT_PROXY_IP
Alle Anwendungen und Browser würden VIRTUAL_PROXY_IP als Proxy verwenden, den Sie über diesen speziellen Router routen müssten. Sie ändern die Regel nach Bedarf, um die CURRENT_PROXY_IP zu ändern.
Der Vorteil dieses Ansatzes besteht darin, dass er schnell einzurichten und einfach zu verwalten ist. Der Nachteil besteht darin, dass es wahrscheinlich zu Störungen bei einigen Benutzern kommt, die Sitzungen geöffnet haben (abhängig von der Art der Sitzungen und der Art der Upstream-Proxys). Sie müssen außerdem entweder Ihr eigenes Skript schreiben, um die Proxys zu ändern, oder die Änderungen manuell vornehmen.
Eine bessere Lösung, wie in sr_s Kommentar vorgeschlagen, wäre die Einrichtung eines Load Balancers. Erwägen Sie LVS oderHAProxy
Antwort3
Vorausgesetzt, Sie verwenden SquidZwei Geschwister-Proxys mit demselben sichtbaren Namen scheinen bei mir zu funktionieren. Ich habe zwei mit den Namen Proxy1 bzw. Proxy2 eingerichtet. Der sichtbare Hostname ist Proxy. Alles, was Sie an diesem Punkt tun müssen, ist, einen A-Eintrag in DNS für den Namen Proxy mit den IP-Adressen für Proxy1 und Proxy1 zu erstellen. Solange sie in Ihrer squid.conf als Geschwister eingerichtet sind. Schauen Sie hier nachhttp://horms.net/projects/redundant_linux_paper/related/squid/hierarchies/concepts.html
Antwort4
Einfache Lösung
Richten Sie einen Host-Alias für die Proxy-Server in Ihrer lokalen Hosts-Datei ein, beispielsweise
192.168.1.1 chosenproxy #192.168.1.2 chosenproxy #192.168.1.3 chosenproxy
Konfigurieren Sie nun alle Anwendungen so, dass sie diesen Alias verwendenhttp://chosenproxy:8080
Um dann verschiedene Server auszuprobieren, bearbeiten Sie einfach die IP-Adresse in der Hosts-Datei.
Verwaltbare Port-Lösung
Wenn Sie auch den Port ändern müssen, verwenden Sie eines der leichten Proxy-Programme wie polipo. Polipo läuft standardmäßig auf Port 8123. Stellen Sie daher jede Anwendung so ein, dass sie sich über lokal ausgeführtes Polipo verbindet, z. B. mit der Einstellunghttp://localhost:8123
Um dann einen anderen Proxyserver auszuprobieren, ändern Sie die Polipo-Konfigurationsdatei ( /etc/polipo/config
), um den richtigen übergeordneten Proxyserver und die richtige Portnummer anzugeben, und starten Sie Polipo neu, um die Änderung zu aktivieren.