У меня в колледже три прокси-сервера, все они подключены к трем разным поставщикам услуг. В разный момент времени разные прокси-серверы дают разную скорость (в зависимости от количества пользователей, использующих этот прокси-сервер в этот момент времени). Я чувствую, что изменение конфигурации прокси-сервера в браузере (или в любом другом сетевом приложении) в разный момент времени отнимает очень много времени. Я хочу написать один скрипт, который может динамически изменять прокси-сервер, используемый всеми моими сетевыми приложениями в разный момент времени, выполняя некий тест.
Я не могу начать с этого. Может кто-нибудь дать мне идею, чтобы я мог это реализовать.
решение1
Вы можете использоватьПРОКСИ.ПАКилиWPAD.DAT
это просто JavaScript, вы можете разместить этот файл на любом веб-сервере в вашей интрасети и установить на стороне клиента http://webserever-ip/proxy.pac
. используя этот скрипт вы можете сделатьБалансировка нагрузкис тремя прокси-серверами. Также вы можете разделить трафик, используя диапазоны IP-адресов в этом скрипте Java, есть несколько функций, таких как обход интрасети или любого веб-сайта.
Вы можете настроить этот скрипт автоматически на всех ваших клиентах, для этого требуются следующие опции.
- если вы используете доменную сеть, то установите Proxy.pac с помощью групповой политики
- Вы можете установить WPAD.DAT с помощью DHCP
- ДНС
решение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 илиHAProxy
решение3
Предполагая, что вы используете squidДва родственных прокси с одинаковым видимым именем, похоже, справляются со своей задачей. У меня настроены 2 с именами proxy1 и proxy2 соответственно. Видимое имя хоста — proxy. Все, что вам нужно сделать на этом этапе, — это создать запись A в dns для имени proxy с IP-адресами proxy1 и proxy1. При условии, что они настроены как родственные в вашем 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
Чтобы попробовать другие серверы, просто отредактируйте IP-адрес в файле hosts.
Управляемое решение для порта
Если вам также нужно изменить порт, используйте одну из легких прокси-программ, например, polipo. Polipo по умолчанию работает на порту 8123, поэтому настройте каждое приложение на подключение через polipo, работающий локально, например, с помощью настройкиhttp://localhost:8123
Затем, чтобы попробовать другой прокси-сервер, измените файл конфигурации Polipo ( /etc/polipo/config
), указав правильный родительский прокси-сервер и номер порта, и перезапустите Polipo, чтобы активировать изменения.