Dhcp

排除 wpad 中的本地地址

  • September 25, 2018

我有一個代理 Ubuntu 18.04,帶有 squid 3128 和 apache2,我發布了帶有選項 dhcp 252 的自動配置文件 proxy.pac。

該文件具有以下內容:

function FindProxyForURL(url, host) {return "PROXY 192.168.0.10:3128";}

我的本地網路中的某些電腦上有一些應用程序具有這些 url 供訪問:

http://localhost:8080
http://192.168.0.12:8090/app/bar

問題是 squid 對這種類型的請求有限制

如何配置 proxy.pac 以排除對本地地址的請求?(例如:192.168.0.0/24 或 localhost:port)

需要注意的重要一點是,臨時解決方案是手動將代理的 ip:port 放入瀏覽器中(在 Windows:控制面板/Internet 選項中),然後選中“不要將代理伺服器用於本地地址”框,然後proxy.pac 沒有意義。

把函式改成這樣:

function FindProxyForURL(url,host) {
   var hostIP;
   if (isIpV4Addr.test (host)) {
       hostIP = host;
   }
   else {
       hostIP = dnsResolve(host);
   }
   if (isInNet(hostIP, "192.168.0.0", "255.255.255.0")) {
       return "DIRECT";
   }
   if (host == "localhost") {
       return "DIRECT";
   }
   return "PROXY 192.168.0.10:3128";
}

這首先檢查主機部分是否為 IPv4 號碼。如果是,則直接用作IP。

如果不是,則將主機部分解析為 IP 地址並使用結果。

然後它將 IP 地址與指定的子網進行匹配;如果匹配,則指示瀏覽器直接訪問主機。

如果主機名是“localhost”,瀏覽器也被指示直接訪問主機(雖然我想知道瀏覽器是否會為“localhost”使用這個功能)。

最後,預設是使用代理。

引用自:https://unix.stackexchange.com/questions/471202