前些天,同事給我抱怨,公司的GPO強制更改了筆記本的IE代理服務器,在辦公室還好,一回家就上不了網了,必須手動更改代理設置,真是麻煩。我想了想,proxy.pac自動代理文件應該可以解決這個問題,於是想到就做。
Proxy.pac文件的本質是javascript的一個函數,通過設定各種條件(域名,IP等等),從而讓瀏覽器加載的時候自動去尋找對應的代理服務器。比如說
function FindProxyForURL(url, host) {
if(isInNet(myIpAddress(), "10.71.80.0", "255.255.255.0")){
return"PROXY 112.186.227.85:8080";
}
return"DIRECT";
}
當瀏覽器加載這個proxy.pac文件之后,就會自動比較自己的IP地址,如果屬於10.71.80.0/24 這個范圍,那么他就使用代理服務器112.186.227.85:8080,否則直接連接網絡。
以IE為例,可以在Option->Connection->LAN setting 中進行設置。注意IE的格式是[url=file:///C:/proxy.pac]file://c:/proxy.pac[/url], 而在某些瀏覽器里面需要改成[url=file:///C:/proxy.pac]file:///c:/proxy.pac[/url]
Proxy.pac文件寫好以后,就需要配置在一個共享的服務器上以供下載。我把他放在文件服務器fileserver的一個共享文件夾中,我的思路是域用戶登錄客戶機時,自動下載proxy.pac到本地文件夾中,同時通過配置GPO中的IE選項讓IE綁定該文件。
我找了一個現成的vb腳本下載,稍加改動路徑以便滿足自己的需要。同時因為我要把文件拷貝到C:\WINDOWS\system32\drivers\etc\,默認普通用戶是沒有權限訪問的,我還必須更改這個文件夾的權限。
Copy.vbs
Option Explicit
Dim WshShell
Dim fso
Dim USERPROFILE
Dim srcPath
Dim tgtPath
Dim computername
On Error Resume Next
Set WshShell =WScript.CreateObject("Wscript.Shell")
Set fso =WScript.CreateObject("Scripting.FilesystemObject")
USERPROFILE =WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
'Set wshShell = WScript.CreateObject("WScript.Shell" )
'computername= wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%" )
'WScript.Echo "Computer Name: " & computername
srcPath = "\\fileserver\it\proxy\proxy.pac"
tgtPath = "C:\WINDOWS\system32\drivers\etc\proxy.pac"
If Not fso.FileExists(tgtPath) Then
fso.CopyFile srcPath, tgtPath, True
'wscript.echo "Copy to "+tgtPath
ElseIf fso.FileExists(srcPath) Then
ReplaceIfNewer srcPath, tgtPath
End If
Sub ReplaceIfNewer(strSourceFile, strTargetFile)
Const OVERWRITE_EXISTING = True
Dim objFso
Dim objTargetFile
Dim dtmTargetDate
Dim objSourceFile
Dim dtmSourceDate
Set objFso =WScript.CreateObject("Scripting.FileSystemObject")
Set objTargetFile = objFso.GetFile(strTargetFile)
dtmTargetDate = objTargetFile.DateLastModified
Set objSourceFile = objFso.GetFile(strSourceFile)
dtmSourceDate = objSourceFile.DateLastModified
If (dtmTargetDate < dtmSourceDate) Then
objFso.CopyFile objSourceFile.Path,objTargetFile.Path,OVERWRITE_EXISTING
End If
Set objFso = Nothing
End Sub
最后是GPO配置結果
一個是針對文件夾權限的,需要在用戶電腦的OU配置
一個是用戶的登錄腳本,比較更新時間下載最新版本的proxy.pac,同時綁定IE
經測試,在我的TMG代理服務器上能夠成功檢測到連接的客戶session。客戶機訪問My IP顯示的也是代理服務器的公網地址。Done!
http://m.blog.csdn.net/article/details?id=41650719