對于很多規模較大的企業來說,會在各地建立分公司或者辦事處等分支機構,來盡可能的拓展公司的業務。相對應,在公司總部分支機構之間也必然會通過網絡連接,進行組織機構的管理和數據傳輸。當然,在具體實現時需要規劃活動目錄域環境的分布式布局,即在域環境創建主站點和分支機構站點,使其彼此之間順利訪問和通訊,組成協調統一的整體結構。
在分支機構和主站點之間經常會傳輸數據,例如在總部文件服務器上存儲著大量的文件,各分支機構會頻繁的從中下載文件等。數據的傳輸就必然會占用相應的帶寬。如何才能盡可能的降低帶寬的消耗,又能夠加快數據的傳輸速度呢?使用BranchCache技術,就可以有效的解決該問題。
有些公司為了保證網絡連接的穩定性,會采用專線傳輸的方式,即由網絡運營商在總部和分支機構之間設置專用線路。專線的速度,可連通性以及穩定性都很優秀,不過價格比較昂貴。為了降低使用成本,一些公司會采用MPLS VPN的方式,在總部和分支機構之間建立網絡連接。和普通的VPN相比,MPLS VPN是由運營商為客戶架設的VPN鏈路,其維護也通常由運行商負責,這是比較常用的連接模式。當然,有的公司因為實力有限,會采取自架VPN的方法,來解決總部和分支機構的網絡通訊問題,即在雙方分別配置帶有VPN功能的硬件防火墻,通過Intenet來實現VPN遠程連接功能,并利用IPSec加密技術保證數據傳輸的安全性,不過自架的VPN完全有用戶自己管理,其穩定性和可靠性都存在問題。
不管對于哪一種網絡連接方式,在實際使用時如何有效節省分支機構和總部之間的鏈路帶寬,提高利用率減少不必要的浪費,是網絡管理方面不可忽視的問題。尤其對于昂貴的專線鏈路來說尤其重要。
例如,在總部機構架設了一臺文件服務器,當分支機構的客戶端從該服務器上下載數據時,使用BranchCache技術就可以有效節省兩者之間的鏈路帶寬。對于BranchCache技術來說,通常包含分布式緩存和托管主機緩存兩種模式。
對于分布式緩存來說,當分支機構的A用戶從總部的文件服務器下載所需的數據后,保存到本機PC1上。
當分支機構中的用戶C也向從文件服務器下載同樣的數據時,其實際上只是從文件服務器是下載對應文件的標識信息,并據此從PC1中的緩存搜索數據,之后才將數據復制到本機PC2上。
對于托管主機緩存模式來說,當用戶A從文件服務器下載所需的數據后,會將數據內容推送到分支機構本地的某臺服務器上,當然,在PC1本地緩存中也存在這些數據。當用戶C下載同樣的數據時,會從本地服務器上查找并將數據復制到PC2上。
和分布式緩存模式不同,該模式在分支機構中放置了一臺服務器,所有客戶端從文件服務器下載的數據,全部復制一份存儲到該服務器上。
對于分布式緩存模式來說,如果對應的客戶機在下載完成后關機的話,其他的客戶端就無法從其緩存中復制數據了,這是其缺點之一。
不管采用哪一種緩存模式,都可以有效降低分支機構和總部之間的鏈路帶寬。注意,對于BranchCache來說,其支持的服務器操作系統版本為Windows Server 2008 R2及其以上版本,對于客戶端來說,其支持Windows 7企業版及其以上版本。
對于某個企業來說,其使用分布式BranchCache模式,在總部和分支機構之間傳輸數據,在總部內部網絡中,存在IP為172.16.0.30的文件服務器,其安裝的是Windows Server 2008 R2。在分支機構內部網絡中使用的網段為192.168.0.0/24,其處于名稱為xxx.com的域環境中。在總部端的文件服務器上打開服務器管理器。在左側的“功能”項的右鍵菜單上點擊“添加功能”項,在向導界面中的選擇功能列表中選擇“BranchCache”項,點擊安裝按鈕,來安裝該組件。在服務器管理其左側選擇“角色”→“文件服務”項,在其右鍵菜單上點擊“添加角色”項,在選擇角色服務窗口中選擇“網絡文件BranchCache”項,點擊安裝按鈕,來安裝該角色。
為了便于配置BranchCache,可以在域控上打開Active Directory用戶和計算機窗口,在其中新建一個OU(例如名稱為“filesrv”),將文件服務器放置到該OU中。再創建一個OU(例如名為“fzkh”),用來放置分支機構中客戶機和用戶。在域控上打開組策略管理器,針對名為“filesrv”的容器來配置組策略。在其右鍵菜單上點擊“在這個域中創建GPO并在此處鏈接”項,在彈出窗口中輸入該GPO的名稱(例如“pzcy”),點擊確定按鈕,完成創建。
在該GPO右鍵菜單上點擊“編輯”項,在組策略管理編輯器窗口左側打開“計算機配置”→“策略”→“管理模版”→“網絡”→“Lanman服務器”在右側雙擊“分支緩存的哈希發布”項,在其屬性窗口中選擇“已啟用”項(如圖1所示)。
對哈希發布操作來說,提供了僅允許對啟用分支緩存的共享文件夾進行哈希發布,禁止對所有共享文件夾進行哈希發布,允許對所有共享文件夾進行哈希發布等模式。
對于哈希算法來說,當分支機構的某個用戶從文件服務器下載某個文件后,當另外一個用戶從文件服務器下載文件時,其會對文件進行哈希計算,當計算的哈希值和分支機構中的某臺客戶機緩存中的文件哈希值一致,就不會從文件服務器上下載文件,而直接從本地客戶機上直接復制該文件。這里在“哈希發布操作”列表中選擇第一項即可。

圖1 啟用分支緩存的哈希發布

圖2啟用BranchCache

圖3 設置和BranchCache相關的組策略
之后在文件服務器上執行“gpupdate /force” 命令,刷新組策略。打開共享和存儲管理程序,在共享列表中選擇某個文件夾,在其右鍵菜單上點擊“屬性”項,在彈出窗口中點擊“高級”按鈕,在高級窗口中的“緩存”面板中選擇“啟用BranchCache”項,表示該共享文件夾中的所有內容都支持BranchCache。該選項和上述選擇的“僅允許對啟用分支緩存的共享文件夾進行哈希發布”是緊密相關的。按照同樣的方法,可以設置所有相關的共享文件夾(如圖2所示)。
當服務器端配置完成后,接下來就需要對客戶端進行設置了。例如,在分支機構的PC1上執行“gpedit.msc”程序,在組策略編輯器中打開“計算機配置”→“管理模版”→“網絡” →“BranchCache”項,在右側雙擊“啟 用BranchCache”項,在打開窗口中選擇“已啟用”項,激活該功能(如圖3)。雙擊“設置BrachCache分布式緩存模式”項,在打開窗口中選擇“已啟用”項,表示使用分布式緩存模式。雙擊“配置網絡文件的BranchCache”項,在打開窗口中輸入回程網絡延遲值,單位為毫秒。如果大于該值,網絡文件將由分支機構中的客戶端計算機進行緩存。
通過網絡文件BranchCache機制,分支機構中的計算機可以緩存啟用了BranchCache的文件服務器上的數據,之后就可以和分支機構中的其他客戶機安全共享數據。
在默認情況下,當廣域網鏈接的回程網絡延遲時間大于80毫秒時,將在分支機構中的緩存網絡文件。雙擊“設置用于客戶端計算機緩存的磁盤百分比”項,在打開窗口中選擇“已啟用”項,可以設置專門用于使用BranchCache緩存檢索內容的磁盤百分比。如果禁用或者沒有配置該參數的話,則默認緩存占用磁盤總空間的5%。當然在域環境中,可以通過組策略來統一配置以上策略。
在域控上打開組策略管理器,選擇具體的OU(例如“fzkh”),在其右鍵菜單上選擇“在這個域中創建GPO并在此處鏈接”項,在彈出窗口中輸入該GPO的名稱(例如“khbranch”),在該 GPO 的右鍵菜單上點擊“編輯”項,在組策略管理器中選擇上述分支,對其中的項目逐一配置。
注意,在客戶端進行相互訪問時,默認情況下,需要使用到TCP 80,445等端口,例如客戶端之間的數據復制是通過TCP 80端口進行的。

圖4 創建針對BranchCache服務放行的規則
因此,如果客戶端啟用了防火墻的話,需要在火墻上開啟這些端口。選擇“計算機配 置”→“策略” →“Windows設置”→“安全設置”→“高級安全Windows防火墻”→“高級安全Windows防火墻”→“入站規則”項,在其右鍵菜單中點擊“新增規則”項,在向導界面中的“預定義”列表中分別針對“BranchCache -對等機發現” 和“BranchCache-內容檢索”項,創建放行規則(如圖4所示)。
這樣,就可以保證客戶端之間順利的復制數據。設置完成后,在客戶端上分別執行“gpupdate/force”命 令,來刷新組策略。在客戶端上執行“netsh branchcache show status all”命令,顯示所有和BranchCache相關的設置信息。在返回信息中顯示BranchCache服務狀態,本地緩存狀態,發布緩存狀態,網絡狀態等內容。
例如,在“當前狀態”欄中顯示“正在運行”項,表示已經啟用了BranchCache功能。在“服務模式”欄中顯示BranchCache運行模式,這里為分布式緩存。在“當前正使用的緩存大小”欄中顯示已經緩存的數據容量,在“最大緩存大小”欄中顯示緩存占用的磁盤比例。
當服務器端和客戶端都配置完畢后,在PC1 上訪問總部的文件服務器,下載自己所需的共享文件。在此期間,在PC1上執行“netstat-an”命令,可以查看到本機和文件服務器之間是通過TCP 445端口連接的。
當復制完成以后,在PC2上同樣訪問文件夾服務器,當下來相同的文件時,可以發現其復制速度明顯加快。這是因為當PC1從文件服務器下載文件時,是通過廣域網鏈路實現的,其傳輸的速度自然無法域局域網相比。當PC2復制同樣的文件時,其實是從PC1的緩存中復制的,即在局域網中傳輸數據,其速度自然大大加快了。在PC2復制文件的過程中,在PC1上執行“netsh branchcache show status all”,在返回信息中的“當前正使用的緩存大小”欄中顯示已經目前緩存的數據
相對于BranchCache分布式緩存模式來說,托管主機緩存模式在網絡結構上就要復雜一些,即在分支機構中選擇一臺文件服務器,客戶端從公司總部文件服務器下載的文件,全部復制一份保存在該服務器上。這樣,當別的客戶機需要相同的文件時,可以直接從該服務器上復制。在一般情況下,分支機構中的該文件服務器始終處于開機狀態,可以隨時為所有的客戶機提供服務,這有效避免了分布式緩存模式的上述缺點。
例如,在分支機構中選擇IP為192.168.0.11的主機(例如名稱為“fzsrv”)作為文件服務器,來實現主機托管緩存模式,其上安裝的是Windows Server 2008 R2,該服務器同樣要加入到域環境中。因為在該模式下,在分支機構內部,客戶機和該文件服務器之間的通訊是基于HTTPS連接實現的。這就需要證書的支持。
實際上,相對于分布式BranchCache模式來說,托管主機緩存模式在總部文件服務器上的配置幾乎相同,所不同的就是證書的管理。因此,關于總部文件服務器的配置,可以按照上面講述的方法進行。這里為了便于說明,在域控上安裝Active Directory證書服務,注意要選擇“證書辦法機構Web注冊”項。當然,在實際應用時,最好配置單獨的證書服務器。
雖然在域環境中,可自動建立信任關系。不過為了穩妥起見,最好將這種信任關系強制發布。
在域控上運行“gpmc.msc” 程序,在組策略管理窗口左側選擇“域名” →“Default Domain Policy”項,在其右鍵菜單上點擊“編輯”項,在組策略管理編輯器左側選擇“計算機配置”→“策略”→“Windos設置”→“安全設置”→“公鑰策略”項,在右側雙擊“證書服務客戶端-自動注冊”項,在打開窗口中的“配置型號”列表中選擇“已啟用”項(如圖5所示),點擊確定按鈕,在其屬性窗口中選擇“續訂過期證書,更新未決證書并刪除吊銷的證書”和“更新使用證書模版的證書”項,點擊確定保存配置信息。這樣,當分支機構中的文件服務器登錄到域環境后,就會自動建立信任關系。

圖5 允許客戶端自動注冊證書
在分支機構文件服務器上運行“mmc”程序,在管理控制臺中點擊菜單“文件”→“添加/刪除管理單元”項,在打開窗口中選擇“證書”項,點擊添加按鈕,選擇“計算機賬戶”項,在控制臺左側選擇“證書”→“收信人的根證書頒發機構”→“證書”項,在右側可以看到其已經信任了域中的根證書頒發機構。
在分支機構的文件服務器上打開服務器管理器,在左側的“功能”項的右鍵菜單上點擊“添加功能”項,在向導界面選擇“BranchCache”項,點擊安裝按鈕,來安裝該組件。
在CMD窗口中執行“netsh Branchcache set Service mode=hostedServer” 命令, 將BranchCache服務設置為托管主機模式,系統會自動啟用名為“BranchCache -內容檢索”和“BranchCache-托管緩存服務器”的防火墻規則組。

圖6 設置證書模版屬性
在總部域控上打開管理控制臺,點擊菜單“文件”→“添加/刪除管理單元”項,在打開窗口中選擇“證書頒發機構”,“證書模版”項,點擊添加按鈕,選擇“計算機賬戶”項,在控制臺左側選擇“證書”→“收信人的根證書頒發機構”→“證書”項,在右側可以看到其已經信任了域中的根證書頒發機構。
在左側選擇“證書頒發機構”→“證書模版”項,在右側的“Web服務器”項的右鍵菜單上點擊“復制模版”項,在打開窗口中選擇合適的系統版本,點擊確定按鈕。在模版的屬性窗口中的“常規”面板(如圖6所示)中輸入該模版的名稱(例 如“Branchkey”),選擇“在 Active Directory中發布證書”和“如果Active Directory中有一個重復證書,不要自動重新注冊”項。
在“安全”面板中點擊“添加”按鈕,在選擇窗口中點擊“位置”按鈕,在打開窗口中只選擇“計算機”項,之后導入分支機構文件服務器(例如名稱為“fzsrv”),選擇該計算機,在權限列表中的“允許”列中選擇“讀取”,“注冊”,“自動注冊”項,點擊應用按鈕,激活以上設置。在控制臺左側選擇“證書頒發機構”→“頒發機構名稱”→“證書模版”項,在其右鍵菜單上點擊“新建”→“要頒發的證書模版”項,在啟用證書模版窗口中選擇上述新建的模版(例如“Branchkey”),點擊確定按鈕將其發布出去。
在分支機構文件服務器上執行“gpupdate /force”命令。刷新組策略。打開MMC控制臺,在左側選擇“證書”→“個人”項,在其右鍵菜單上點擊“所有任務”→“申請新證書”項,在向導界面中點擊下一步按鈕,選擇“Active Directory注冊策略”項,點擊下一步按鈕,選擇上述發布的名為“Branchkey”的證書模版。
打開其“詳細信息”欄,點擊屬性按鈕,在打開窗口中的“使用者”列表中選擇“公共名”項,在“值”欄中輸入分支機構文件服務器的FQDN全名,例如“fzsrv.xxx.com”。點擊“添加”按鈕,將其導入到右側列表中。點擊應用按鈕保存配置。
點擊注冊按鈕,即可連接到注冊服務器來獲得請求證書。在MMC控制臺左側選擇“個人”→“證書”項,可以顯示獲得的證書。在其右鍵菜單上點擊“打開”項,在彈出窗口中的“詳細信息”面板中選擇“指紋”項,顯示該證書的指紋信息,所謂指紋,就是一串特殊的字符。將指紋數據復制出來,并保存到某文本文件中。
注意,需將字符間的空間刪除,使之成為連續的字符串。假設保存為“zhiwen.txt”文件,在分支機構文件服務器上執行“netsh http add sslcert ipport=0.0.0.0:443 certhash=xxxxxxxxx appid={d673f5ee-a714-454d-8de2-492e4c1bd8f8}”命令,其中的“xxxxxxxxx”代表上述刪除空格的指紋信息。該命令執行后,系統會顯示“成功添加SSL證書”的提示信息,說明該證書和BranchCache建立關聯。

圖5 允許客戶端自動注冊證書
執 行“netsh branchcache show status all”命令,在返回信息中的“綁定到托管緩存端口的SSL證書”的值變成了“已配置”,這樣,總部服務器和分支機構服務器的配置就基本完成了。在分支機構客戶端同樣需要配置相關的組策略,為了實現批量調整,可以在按照上述方法在域控上為客戶端配置和BranchCache相關的策略,具體方法基本相同,所不同的是,不需要啟用BranchCache分布式緩存模式,而要雙擊“設置BranchCache托管緩存模式”項,在打開窗口中選擇“已啟用”項,在“填入托管緩存的位置”欄中輸入分支機構文件服務器的名稱,例如“fzsrv.xxx.com”。在分支機構客戶端主機(例如PC1等)上登錄到域環境,執行“gpupdate /force”命令,來更新組策略。執行“netsh branchcache show status all”命令,在返回信息中的“服務模式”欄中顯示“托管緩存客戶端”,說明其已經運行在BranchCache托管模式下。
當PC1訪問總部文件服務器上,并下載所需的文件后,該文件會現在該客戶機上建立緩存,之后才將其副本會自動存儲到分支機構的文件服務器中,執行“netstat-an”命令,可以看到客戶端使用TCP 80端口來發現BranchCache托管服務器,之后使用TCP 443端口向其傳輸數據。當PC2等客戶端從總部的文件服務器下載同文件時,會自動從本機構內的文件服務器上查找并下載該文件。在局域網內高速傳輸文件便可避開在廣域網中的文件傳輸過程。