■ 合肥 馬濤
編者按:筆者所在的公司與某互聯(lián)網(wǎng)平臺合作,開始向用戶提供該平臺的視頻點播服務(wù),用戶可以通過有線電視機頂盒點播該平臺的視頻節(jié)目。那么,如何選擇與云端的對接鏈路呢?本文將作詳細介紹。
平臺視頻點播業(yè)務(wù)不但需要保證本地CDN 服務(wù)器與云端之間的通信安全、高效和可靠,還要考慮到投入的性價比。考慮到安全可靠性,專線是對接鏈路的首選。專線有著以下優(yōu)點:
1.業(yè)務(wù)安全性高,傳輸安全可靠。
2.相對的傳輸質(zhì)量高,獨享帶寬,不會有較大的網(wǎng)絡(luò)波動。
3.采用以太網(wǎng)口接入,不需另外購買傳輸設(shè)備,不需占用更多的槽位,接入方便。
4.對用戶的IP 地址、內(nèi)部路由等完全透明,用戶可以自主管理內(nèi)部的IP 網(wǎng)絡(luò)和路由,具有自我管理的IP環(huán)境。
雖然專線的優(yōu)點很多,我們也不能忽視租用專線成本過高的缺點,既要保證數(shù)據(jù)傳輸?shù)陌踩?,同時還具備接入方式靈活、擴展性好、支持多業(yè)務(wù)種類等,并且還不用額外支出專線那樣的高額的租費,而IPSec VPN 構(gòu)建的虛擬專網(wǎng)正是具備了這樣的優(yōu)點。但是IPSec VPN 的帶寬會受到互聯(lián)網(wǎng)環(huán)境的影響,波動可能不可預(yù)測。
所以,在綜合考慮了網(wǎng)絡(luò)的可靠性和需要投入的成本后,我們確定了使用第三方的專線接入作為主用線路,并選擇了構(gòu)建IPSec VPN 虛擬專網(wǎng)作為備用線路。
下面是筆者在這次網(wǎng)絡(luò)構(gòu)建中遇到的一些情況和大家分享一下。
圖1 網(wǎng)絡(luò)結(jié)構(gòu)拓撲
為了保證網(wǎng)絡(luò)的安全性,我們需要在系統(tǒng)的出口部署防火墻等網(wǎng)絡(luò)安全設(shè)備。而為了提升網(wǎng)絡(luò)的可靠性,我們部署了兩臺高性能的防火墻,并設(shè)置了雙機熱備,互為備份的兩臺防火墻會通過備份鏈路定時向另一臺發(fā)送狀態(tài)協(xié)商報文,協(xié)商進入同步狀態(tài)后開始備份對端的會話、ALG 表項和黑名單等重要信息,進入同步狀態(tài)后某段時間中兩臺防火墻上的業(yè)務(wù)狀態(tài)是一致的。
當(dāng)其中一臺防火墻發(fā)生故障時,在轉(zhuǎn)發(fā)層面利用VRRP 或動態(tài)路由(例如OSPF)機制將業(yè)務(wù)流量切換到另一臺防火墻,由于另一臺防火墻已經(jīng)備份了故障設(shè)備上的會話等信息,業(yè)務(wù)數(shù)據(jù)流便可以從熱備的防火墻上直接通過,從而在很大程度上避免了網(wǎng)絡(luò)業(yè)務(wù)的中斷。
雙機熱備解決方案根據(jù)組網(wǎng)情況有兩種工作模式:主備模式和負載分擔(dān)模式。在這兩種模式中,設(shè)備的角色根據(jù)是否承擔(dān)流量來決定,有流量經(jīng)過的設(shè)備即為主設(shè)備,無流量經(jīng)過的設(shè)備即為備份設(shè)備。
主備模式下的兩臺防火墻,其中一臺作為主設(shè)備,另一臺作為備份設(shè)備。主設(shè)備處理所有業(yè)務(wù),并將產(chǎn)生的會話信息傳送到備份設(shè)備進行備份;備份設(shè)備不處理業(yè)務(wù),只用做備份。當(dāng)主設(shè)備故障,備份設(shè)備接替主設(shè)備處理業(yè)務(wù),從而保證新發(fā)起的會話能正常建立,當(dāng)前正在進行的會話也不會中斷。
而負載分擔(dān)模式下,兩臺設(shè)備均為主設(shè)備,都處理業(yè)務(wù)流量,同時又作為另一臺設(shè)備的備份設(shè)備,備份對端的會話信息。當(dāng)其中一臺故障后,另一臺設(shè)備負責(zé)處理全部業(yè)務(wù),從而保證新發(fā)起的會話能正常建立,當(dāng)前正在進行的會話也不會中斷。
在具體使用中,是否要啟用雙機熱備,還是要看防火墻內(nèi)所接業(yè)務(wù)的復(fù)雜程度來進行選擇。比如圖1 中,兩臺防火墻通過VRRP 實現(xiàn)路由的備份,設(shè)備沒有開啟雙機熱備。
假如Trust 區(qū)域的某設(shè)備要去訪問Untrust 區(qū)域的資源,TCP 數(shù)據(jù)流第一個SYN報文從Firewall 1 轉(zhuǎn)發(fā)出去,當(dāng)Firewall 1 出 現(xiàn) 故障的時候,F(xiàn)irewall 2 變成Master,而對方回應(yīng)的SYNACK 到達Firewall 2 的時候由于是從Untrust 到Trust區(qū)域,策略默認是禁止的,而且設(shè)備本身又沒有會話,這個報文就會被丟棄,TCP 連接建立失敗。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)拓撲
但是,TCP 協(xié)議本身有超時和重傳確認機制,一旦超過老化時間,兩端都會刪除當(dāng)前的TCP 連接,重新發(fā)起建立過程,此時,來回報文都從Friewall 2 轉(zhuǎn)發(fā),業(yè)務(wù)正常,除了TCP 或者UDP 等協(xié)議自身存在老化時間外,大部分上層業(yè)務(wù)系統(tǒng)也有一些重傳和確認機制,當(dāng)?shù)谝淮芜B接失敗后,也能夠重新發(fā)起連接,所以最終也是可以用的。
另外當(dāng)Firewall 1 出現(xiàn) 故 障, Firewall 2 變 成Master 后,如果是新建立的連接,不管是TCP、UDP、ICMP還是其它應(yīng)用,全部都經(jīng)過Firewall 2 轉(zhuǎn)發(fā),業(yè)務(wù)是完全沒有問題的。
但是如果兩臺防火墻采用OSPF 實現(xiàn)負載分擔(dān),比如圖2 中,Trust 區(qū)域的某設(shè)備要去訪問Untrust 區(qū)域的資源,TCP 數(shù)據(jù)流第一個SYN報文被丟棄之后,TCP 連接建立失敗。盡管TCP 超時后會再次發(fā)起連接,但是如果上下兩臺路由器等價路由的Hash 方式不變,報文會一直按著之前的路徑轉(zhuǎn)發(fā),TCP 連接就會一直失敗。
這個時候如果兩臺防火墻開啟雙機熱備,當(dāng)SYN報文從Firewall 1 轉(zhuǎn)發(fā)出去以后立即把會話同步給Firewall 2,F(xiàn)irewall 2 收到SYN-ACK 報文后,由于有會話,就不會再去查策略,報文就能正常轉(zhuǎn)發(fā)。
所以,在兩臺防火墻完全主備部署的情況之下,即使不使用雙機熱備,在設(shè)備故障切換時只是會影響業(yè)務(wù)的切換時間,但不會完全導(dǎo)致業(yè)務(wù)不可用;對于新建連接,只是增加一次會話建立時間,對數(shù)據(jù)轉(zhuǎn)發(fā)沒有任何影響。
而當(dāng)兩臺防火墻做負載分擔(dān),而且數(shù)據(jù)流量存在來回路徑不一致的時候,防火墻必須開啟雙機熱備功能,這時就要綜合考慮防火墻的會話性能了。
前面說過,我們這次的業(yè)務(wù)是針對有線電視機頂盒用戶的,只允許機頂盒終端通過專線去訪問點播資源,而網(wǎng)內(nèi)的寬帶用戶使用的移動終端、電腦終端仍然必須通過公網(wǎng)去訪問這些資源。我們網(wǎng)內(nèi)的有線電視機頂盒終端和電腦終端是分配了不同網(wǎng)段的IP 地址的,這不僅對機頂盒終端的安全性有了保障,還為我們區(qū)分用戶路徑提供了不少方便。
我們在出口路由器上設(shè)置了流策略Traffic Policy,所有機頂盒終端的源地址去訪問指定的目的地址,下一跳都指向了點播系統(tǒng)的出口防火墻。
流策略Traffic Policy分為三部分:
定義流量類型。一個Classifier 可以配置一條或多條if-match 語句,ifmatch 語句中可以引用ACL規(guī)則。不同的Classifier模板可以應(yīng)用相同的ACL 規(guī)則。一個ACL 規(guī)則可以配置一個或多個Rule 語句。
用于定義針對該類流量可實施的流動作。一個Behavior 可以定義一個或多個動作。
將流分類Classifier 和流動作Behavior 關(guān)聯(lián)。當(dāng)Traffic Policy 模板設(shè)置完畢之后,需要將Traffic Policy 模板應(yīng)用到接口上才能使策略生效。
我們先創(chuàng)建一個ACL 規(guī)則,將指定的源地址和目的地址寫進去,然后配置流分類,執(zhí)行命令traffic classifier classifiername operator and/or precedence x,創(chuàng)建一個流分類并進入該視圖,并綁定之前創(chuàng)建的ACL 規(guī)則。
再執(zhí)行命令traffic behavior,創(chuàng)建一個流動作,并設(shè)定動作,這里我們設(shè)置的是下一跳指向點播出口防火墻;然后配置流策略,執(zhí)行命令traffic policy,創(chuàng)建一個流策略并進入流策略視圖,或進入已存在的流策略視圖。
最后,在接口或子接口視圖上應(yīng)用流策略,執(zhí)行命令traffic-policy policyname inbound /outbound 就大功告成了。
這里需要注意的是,由于我們的出口路由器是負載均衡模式,在定義流動作的時候,可以重定向多個目的地址,具體命令格式會由于設(shè)備的不同廠家不同軟件版本而不同;并且在定義流策略時,根據(jù)需要,可以在一個流策略下匹配多條流分類流動作以作用到不同的設(shè)備端口上,來滿足對不同數(shù)據(jù)流向的控制。
我們在出口防火墻上建立IPSec 通道,作為專線的備份線路。具體配置指令可能不同廠家不同軟件版本的設(shè)備有所不同,但是大致的關(guān)鍵步驟應(yīng)該都是一樣的。
這邊使用的是華為的USG 防火墻,配置指令如下:
[FW]acl 3005
[FW1-acl-adv-3005]rule permit ip source * . * . * . * * . * . * . * d e s t i n a t i o n *.*.*.* *.*.*.* //配置感興趣流
[FW1-acl-adv-3005]ike proposal 1 // 創(chuàng) 建IKE 安全提議,并進入IKE 安全提議視圖
[FW1-ike-proposal-1]encryption-algorithm aescbc //配置加密算法
[FW1-ike-proposal-1]authentication-method pre-share //配置認證方法
[FW1-ike-proposal-1]authentication-algorithm sha1 //配置認證算法
[FW1-ike-proposal-1]dh group1 //配置DH 組標(biāo)識
[FW1-ike-proposal-1]ike peer a // 創(chuàng) 建IKE Peer,并進入IKE Peer 視圖
[FW1-ike-peer-a]ikeproposal 1 //引用已配置的IKE 安全提議
[FW1-ike-peer-a]preshared-key abcdefg // 配置預(yù)共享密鑰認證,abcdefg是秘鑰
[F W 1-i k e-p e e r-a]remote-address *.*.*.* //指定對端發(fā)起IKE 協(xié)商的地址
[FW1-ike-peer-a]ipsec proposal name //創(chuàng)建安全提議,并進入安全提議視圖
[FW1-ipsec-proposalname]transform esp // 配置傳送數(shù)據(jù)時采用的安全協(xié)議
[FW1-ipsec-proposalname]esp authenticationalgorithm sha1 // 配 置ESP 方式采用的認證算法
[FW1-ipsec-proposalname]esp encryptionalgorithm aes //配置ESP協(xié)議使用的加密算法
[FW1-ipsec-proposalname]ipsec policy map1 10 isakmp //創(chuàng)建安全策略,并進入安全策略視圖
[FW1-ipsec-policyisakmp-map1-10]security acl 3005 //在安全策略中引用已創(chuàng)建的感興趣流
[FW1-ipsec-policyisakmp-map1-10]proposal name //在安全策略中引用已創(chuàng)建的安全提議
[FW1-ipsec-policyisakmp-map1-10]ike-peer a //在安全策略中引用IKE Peer
[FW1-ipsec-policyisakmp-map1-10] interface GigabitEthernet 0/0/1
[FW1-GigabitEthernet0/0/1]ipsec policy map1 //把安全策略應(yīng)用到接口
配置完成以后,使用命令display ike sa 和display ipsec sa 可以查看通道建立的情況,基本上通道兩邊的配置參數(shù)一致的話,就不會有什么問題了。
由于我們設(shè)置的專線路由的優(yōu)先級大于IPSec 通道的優(yōu)先級,只有在專線鏈路中斷之后,數(shù)據(jù)才會通過IPSec 通道進行傳輸,使得IPSec VPN 既能作為鏈路的有效備份,又不會干擾業(yè)務(wù)的正常運營。