■ 合肥 馬濤
編者按:筆者所在的公司與某互聯網平臺合作,開始向用戶提供該平臺的視頻點播服務,用戶可以通過有線電視機頂盒點播該平臺的視頻節目。那么,如何選擇與云端的對接鏈路呢?本文將作詳細介紹。
平臺視頻點播業務不但需要保證本地CDN 服務器與云端之間的通信安全、高效和可靠,還要考慮到投入的性價比。考慮到安全可靠性,專線是對接鏈路的首選。專線有著以下優點:
1.業務安全性高,傳輸安全可靠。
2.相對的傳輸質量高,獨享帶寬,不會有較大的網絡波動。
3.采用以太網口接入,不需另外購買傳輸設備,不需占用更多的槽位,接入方便。
4.對用戶的IP 地址、內部路由等完全透明,用戶可以自主管理內部的IP 網絡和路由,具有自我管理的IP環境。
雖然專線的優點很多,我們也不能忽視租用專線成本過高的缺點,既要保證數據傳輸的安全性,同時還具備接入方式靈活、擴展性好、支持多業務種類等,并且還不用額外支出專線那樣的高額的租費,而IPSec VPN 構建的虛擬專網正是具備了這樣的優點。但是IPSec VPN 的帶寬會受到互聯網環境的影響,波動可能不可預測。
所以,在綜合考慮了網絡的可靠性和需要投入的成本后,我們確定了使用第三方的專線接入作為主用線路,并選擇了構建IPSec VPN 虛擬專網作為備用線路。
下面是筆者在這次網絡構建中遇到的一些情況和大家分享一下。

圖1 網絡結構拓撲
為了保證網絡的安全性,我們需要在系統的出口部署防火墻等網絡安全設備。而為了提升網絡的可靠性,我們部署了兩臺高性能的防火墻,并設置了雙機熱備,互為備份的兩臺防火墻會通過備份鏈路定時向另一臺發送狀態協商報文,協商進入同步狀態后開始備份對端的會話、ALG 表項和黑名單等重要信息,進入同步狀態后某段時間中兩臺防火墻上的業務狀態是一致的。
當其中一臺防火墻發生故障時,在轉發層面利用VRRP 或動態路由(例如OSPF)機制將業務流量切換到另一臺防火墻,由于另一臺防火墻已經備份了故障設備上的會話等信息,業務數據流便可以從熱備的防火墻上直接通過,從而在很大程度上避免了網絡業務的中斷。
雙機熱備解決方案根據組網情況有兩種工作模式:主備模式和負載分擔模式。在這兩種模式中,設備的角色根據是否承擔流量來決定,有流量經過的設備即為主設備,無流量經過的設備即為備份設備。
主備模式下的兩臺防火墻,其中一臺作為主設備,另一臺作為備份設備。主設備處理所有業務,并將產生的會話信息傳送到備份設備進行備份;備份設備不處理業務,只用做備份。當主設備故障,備份設備接替主設備處理業務,從而保證新發起的會話能正常建立,當前正在進行的會話也不會中斷。
而負載分擔模式下,兩臺設備均為主設備,都處理業務流量,同時又作為另一臺設備的備份設備,備份對端的會話信息。當其中一臺故障后,另一臺設備負責處理全部業務,從而保證新發起的會話能正常建立,當前正在進行的會話也不會中斷。
在具體使用中,是否要啟用雙機熱備,還是要看防火墻內所接業務的復雜程度來進行選擇。比如圖1 中,兩臺防火墻通過VRRP 實現路由的備份,設備沒有開啟雙機熱備。
假如Trust 區域的某設備要去訪問Untrust 區域的資源,TCP 數據流第一個SYN報文從Firewall 1 轉發出去,當Firewall 1 出 現 故障的時候,Firewall 2 變成Master,而對方回應的SYNACK 到達Firewall 2 的時候由于是從Untrust 到Trust區域,策略默認是禁止的,而且設備本身又沒有會話,這個報文就會被丟棄,TCP 連接建立失敗。

圖2 網絡結構拓撲
但是,TCP 協議本身有超時和重傳確認機制,一旦超過老化時間,兩端都會刪除當前的TCP 連接,重新發起建立過程,此時,來回報文都從Friewall 2 轉發,業務正常,除了TCP 或者UDP 等協議自身存在老化時間外,大部分上層業務系統也有一些重傳和確認機制,當第一次連接失敗后,也能夠重新發起連接,所以最終也是可以用的。
另外當Firewall 1 出現 故 障, Firewall 2 變 成Master 后,如果是新建立的連接,不管是TCP、UDP、ICMP還是其它應用,全部都經過Firewall 2 轉發,業務是完全沒有問題的。
但是如果兩臺防火墻采用OSPF 實現負載分擔,比如圖2 中,Trust 區域的某設備要去訪問Untrust 區域的資源,TCP 數據流第一個SYN報文被丟棄之后,TCP 連接建立失敗。盡管TCP 超時后會再次發起連接,但是如果上下兩臺路由器等價路由的Hash 方式不變,報文會一直按著之前的路徑轉發,TCP 連接就會一直失敗。
這個時候如果兩臺防火墻開啟雙機熱備,當SYN報文從Firewall 1 轉發出去以后立即把會話同步給Firewall 2,Firewall 2 收到SYN-ACK 報文后,由于有會話,就不會再去查策略,報文就能正常轉發。
所以,在兩臺防火墻完全主備部署的情況之下,即使不使用雙機熱備,在設備故障切換時只是會影響業務的切換時間,但不會完全導致業務不可用;對于新建連接,只是增加一次會話建立時間,對數據轉發沒有任何影響。
而當兩臺防火墻做負載分擔,而且數據流量存在來回路徑不一致的時候,防火墻必須開啟雙機熱備功能,這時就要綜合考慮防火墻的會話性能了。
前面說過,我們這次的業務是針對有線電視機頂盒用戶的,只允許機頂盒終端通過專線去訪問點播資源,而網內的寬帶用戶使用的移動終端、電腦終端仍然必須通過公網去訪問這些資源。我們網內的有線電視機頂盒終端和電腦終端是分配了不同網段的IP 地址的,這不僅對機頂盒終端的安全性有了保障,還為我們區分用戶路徑提供了不少方便。
我們在出口路由器上設置了流策略Traffic Policy,所有機頂盒終端的源地址去訪問指定的目的地址,下一跳都指向了點播系統的出口防火墻。
流策略Traffic Policy分為三部分:
定義流量類型。一個Classifier 可以配置一條或多條if-match 語句,ifmatch 語句中可以引用ACL規則。不同的Classifier模板可以應用相同的ACL 規則。一個ACL 規則可以配置一個或多個Rule 語句。
用于定義針對該類流量可實施的流動作。一個Behavior 可以定義一個或多個動作。
將流分類Classifier 和流動作Behavior 關聯。當Traffic Policy 模板設置完畢之后,需要將Traffic Policy 模板應用到接口上才能使策略生效。
我們先創建一個ACL 規則,將指定的源地址和目的地址寫進去,然后配置流分類,執行命令traffic classifier classifiername operator and/or precedence x,創建一個流分類并進入該視圖,并綁定之前創建的ACL 規則。
再執行命令traffic behavior,創建一個流動作,并設定動作,這里我們設置的是下一跳指向點播出口防火墻;然后配置流策略,執行命令traffic policy,創建一個流策略并進入流策略視圖,或進入已存在的流策略視圖。
最后,在接口或子接口視圖上應用流策略,執行命令traffic-policy policyname inbound /outbound 就大功告成了。
這里需要注意的是,由于我們的出口路由器是負載均衡模式,在定義流動作的時候,可以重定向多個目的地址,具體命令格式會由于設備的不同廠家不同軟件版本而不同;并且在定義流策略時,根據需要,可以在一個流策略下匹配多條流分類流動作以作用到不同的設備端口上,來滿足對不同數據流向的控制。
我們在出口防火墻上建立IPSec 通道,作為專線的備份線路。具體配置指令可能不同廠家不同軟件版本的設備有所不同,但是大致的關鍵步驟應該都是一樣的。
這邊使用的是華為的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 // 創 建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 組標識
[FW1-ike-proposal-1]ike peer a // 創 建IKE Peer,并進入IKE Peer 視圖
[FW1-ike-peer-a]ikeproposal 1 //引用已配置的IKE 安全提議
[FW1-ike-peer-a]preshared-key abcdefg // 配置預共享密鑰認證,abcdefg是秘鑰
[F W 1-i k e-p e e r-a]remote-address *.*.*.* //指定對端發起IKE 協商的地址
[FW1-ike-peer-a]ipsec proposal name //創建安全提議,并進入安全提議視圖
[FW1-ipsec-proposalname]transform esp // 配置傳送數據時采用的安全協議
[FW1-ipsec-proposalname]esp authenticationalgorithm sha1 // 配 置ESP 方式采用的認證算法
[FW1-ipsec-proposalname]esp encryptionalgorithm aes //配置ESP協議使用的加密算法
[FW1-ipsec-proposalname]ipsec policy map1 10 isakmp //創建安全策略,并進入安全策略視圖
[FW1-ipsec-policyisakmp-map1-10]security acl 3005 //在安全策略中引用已創建的感興趣流
[FW1-ipsec-policyisakmp-map1-10]proposal name //在安全策略中引用已創建的安全提議
[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 //把安全策略應用到接口
配置完成以后,使用命令display ike sa 和display ipsec sa 可以查看通道建立的情況,基本上通道兩邊的配置參數一致的話,就不會有什么問題了。
由于我們設置的專線路由的優先級大于IPSec 通道的優先級,只有在專線鏈路中斷之后,數據才會通過IPSec 通道進行傳輸,使得IPSec VPN 既能作為鏈路的有效備份,又不會干擾業務的正常運營。