動態變更所有傳出流量的代理伺服器

動態變更所有傳出流量的代理伺服器

我的大學有三個代理伺服器,它們都連接到三個不同的服務提供者。在不同的時刻,不同的代理提供不同的速度(取決於在該時刻使用該代理的使用者數量)。我覺得在不同時刻更改瀏覽器(或任何其他網頁應用程式)中的代理伺服器配置非常耗時。我想編寫一個腳本,它可以透過進行某種測試來動態更改我的所有網路應用程式在不同時刻使用的代理伺服器。

我無法從它開始。有人可以給我一些想法,以便我可以實施它。

答案1

您可以使用代理PAC或者資料檔案

它只是一個 JavaScript,您可以將此文件託管在您的內部網路中的任何 Web 伺服器上並在客戶端進行設定http://webserever-ip/proxy.pac。使用這個腳本你可以做負載平衡和你的三個代理。您也可以在這個java腳本中使用ip範圍來劃分流量,有多種功能,例如繞過內部網路或任何網站。

您可以在所有用戶端自動設定此腳本,相同的需要以下選項

  • 如果您使用的是網域網絡,則使用群組原則設定 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

假設您使用的是魷魚共享相同可見名稱的兩個兄弟代理似乎對我有用。我分別設定了 2 個名稱為 proxy1 和 proxy2 的伺服器。可見的主機名稱是 proxy。此時您要做的就是在 dns 中為名稱 proxy 建立一條 A 記錄,並使用 proxy1 和 proxy1 的 IP 位址。只要在您的squid.conf 中將它們設為兄弟姐妹即可。看看這裡http://horms.net/projects/redundant_linux_paper/lated/squid/hierarchies/concepts.html

答案4

簡單的解決方案

在本機主機檔案中為代理伺服器設定主機別名,例如

192.168.1.1 chosenproxy #192.168.1.2 chosenproxy #192.168.1.3 chosenproxy

現在將所有應用程式配置為使用此別名http://chosenproxy:8080

然後要嘗試不同的伺服器,只需編輯主機檔案中的 IP 位址即可。

可管理的連接埠解決方案

如果您還需要更改端口,請使用輕量級代理程式之一,例如 polipo。 Polipo 預設在連接埠 8123 上運行,因此將每個應用程式設定為透過本機運行的 polipo 進行連接,例如使用下列設定http://localhost:8123

然後,若要嘗試不同的代理伺服器,請變更 polipo 設定檔 ( /etc/polipo/config) 以指定正確的父代理伺服器和連接埠號,然後重新啟動 polipo 以啟動變更。

相關內容