我不是很清楚你的需求,所以用最低的要求做了一個範例,可以參考。我沒有實測過這個script,所以建議你還是看一下答案最後的網址。
首先要建立一個檔案附檔名為.pac,例如: proxy.pac。這個檔案要放在公司內外不須透過Proxy就可以access到的地方,例如: http://123.abc.com/proxy.pac
Pac檔案的內容如下:
function FindProxyForURL(url, host)
{
if( dnsDomainIs(host, "localhost") ||
dnsDomainIs(host, "hinet.net") ){
return "DIRECT";
}
else if (isInNet(myIpAddress(), "192.168.10.0", "255.255.255.0") ||
isInNet(myIpAddress(), "10.12.0.0", "255.255.255.0")){
return "PROXY proxy.abc.com.tw:8080";
}
else {
return "DIRECT";
}
}
說明如下:
第一段
if( dnsDomainIs(host, "localhost") ||
dnsDomainIs(host, "hinet.net") ){
return "DIRECT";
}
如果domain是 localhost 或是hinet.net,就直接連線。如果要新增條件用||分開,要注意{}以及()要對稱。
第二段
else if (isInNet(myIpAddress(), "192.168.10.0", "255.255.255.0") ||
isInNet(myIpAddress(), "10.10.10.0", "255.255.255.0")){
return "PROXY proxy.abc.com.tw:8080";
}
如果電腦的ip是192.168.10.0或是10.10.10.0,就是在公司內網就使用proxy server “proxy.abc.com.tw:8080”
其餘的IP位置都直接連線。
你可以參考下面網頁,全部爬過一定寫得出來,加油!
http://en.wikipedia.org/wiki/Proxy_auto-config
您指的是強制將80port的流量導向Transparent Proxy Server, 通透式代理服務器, 使用者不需設定proxy, 在公司內外都可上網, 但是因為是通透式, 所以使用者在公司內上網都會經過proxy server的管控的.
建議使用http://www.squid-cache.org/
有一些參考文章:
http://www.deckle.co.za/squid-users-guide/Transparent_Caching/Proxy
http://www.ubuntugeek.com/how-to-setup-transparent-squid-proxy-server-in-ubuntu.html
或googling: transparent squid proxy
除了正確 PAC 的 Scipt 撰寫外,
如何讓用戶端找到這個 PAC 檔又是另外一個關鍵點,
有兩種方式讓用戶端電腦找到 PAC 檔:
1 自動偵測:
內網的DNS查詢解析系統有很多要設定的地方,
這部份給他有點複雜,
完整說明請看:
如何設定 Microsoft DNS 和 WINS 保留 WPAD 登錄
http://support.microsoft.com/kb/934864
Create a WPAD Entry in DHCP
http://technet.microsoft.com/en-us/library/cc940962(WS.10).aspx
這種方式如果運作順利,
其實是最佳的方式,
但實務上少數電腦無法自動找到PAC檔,
這些電腦無法自動找到PAC檔的問題通常不易排除,
只能使用地2種方式,
2 直接在瀏覽器上設定自動組態指令碼(PAC)的所在位置:
這種方式比較麻煩的是需要每台電腦都去設定 PAC 的路徑,
優點是絕對不會發生像第一種方式找不到 PAC 的問題,
而且由於是直接按照指定的路徑去讀取 PAC 檔,
省掉自動偵測及搜尋 PAC 的動作,
所以第一個網頁頁面開啟的速度也會比較快!