雙機熱備的備份問題
1、配置備份問題
如下圖所示,主用設備 FW1 上配置了允許內網用戶訪問外網的安全策略。如果主用設備 FW1配置的安全策略沒有備份到備用設備 FW2 上,那么當主備狀態切換后,因為防火墻缺省情況下禁止所有報文通過新的主用設備,FW2不會允許內網用戶訪問外網,從會而導致業務中斷。
2、會話備份問題
防火墻屬于狀態檢測防火墻,對于每一個動態生成的連接,都需有一個會話表項與之對應。如下圖所示,主用設備 FW1 上創建了 PC1 訪問 PC2 的會話, PC1 與 PC2 之間的后續報文會按照此會話轉發。如果主用設備 FW1 上的會話不能備份到備用設備 FW2 上,那么當主備狀態切換后, PC1 訪問 PC2 的后續報文在FW2 上匹配不到會話。這樣就會導致 PC1 訪問 PC2 的業務中斷。
HRP的作用
為了實現主用設備出現故障時備用設備能平滑地接替工作,必須在主用和備用設備之間備份關鍵配置命令和會話表等狀態信息。為此華為防火墻引入了 HRP( Huawei Redundancy Protocol)協議,實現防火墻雙機之間動態狀態數據和關鍵配置命令的備份。
如下圖所示,主用設備 FW1 上配置了允許內網用戶訪問外網的安全策略,所以 FW1 會允許內網 PC1 訪問外網 PC2 的報文通過,并且會建立會話。
由于在 FW1 和 FW2 上都使用了 HRP協議(配置了雙機熱備中的 HRP 功能),因此主用設備 FW1 上配置的安全策略和創建的會話都會備份到備用設備 FW2 上。這樣當主備狀態切換后,由于備用設備上已經存在允許內網用戶訪問外網的安全策略以及 PC1 訪問 PC2 的會話,所以 PC1 訪問 PC2 業務報文不會被禁止或中斷。
HRP備份實現原理
防火墻通過心跳口(HRP 備份通道)發送和接收 HRP 數據報文來實現配置和狀態信息的備份。如下圖所示, HRP 數據報文從外到內依次封裝了 VRRP 報文頭、 VGMP 報文頭和 HRP報文頭。其中 VRRP 報文頭中 Type=2, Type2=2。VGMP 報文頭中的“vType”字段對應為“HRP 數據報文”的取值。
HRP 報文頭中的關鍵參數:
- Source Module ID和Source Sub Module ID表示本端防火墻哪些特性模塊和子模塊的數據需要備份。
- Dest Module ID和和Dest Sub Module ID表示需要向對端防火墻的哪些特性模塊和子模塊備份數據。
HRP數據備份的過程如下圖所示:
- FWA在發送HRP數據報文時,會將ASPF特性模塊的ID寫入HRP報文頭的“Source Module ID”和“Dest Module ID”字段中,并將ASPF模塊的配置和表項信息封裝到HRP據報文中。
- FW_A將HRP數據報文通過備份通道發送給FW_B。
- FW_B收到HRP數據報文后,會根據HRP數據報文中的“Source Module ID”和“Dest Module字段將報文中的配置和表項信息發送到本端的特性模塊,并進行配置與表項的下發。
HRP能夠備份的配置與狀態信息
FW能夠備份的配置如下:
- 策略:安全策略、NAT策略(包括NAT地址池)、NAT Server、服務器負載均衡、帶寬管理、認證策略、審計策略、攻擊防范、黑名單、ASPF
- 對象:地址、地區、服務、應用、用戶、認證服務器、時間段、地址池、URL分類、關鍵字組、郵件地址組、簽名、安全配置文件(反病毒、入侵防御、URL過濾、文件過濾、內容過濾、應用行為控制、郵件過濾、APT防御)、健康檢查
- 網絡:新建邏輯接口、安全區域、DNS、靜態路由(配置hrp auto-sync config static-route后才可以備份)、IPSec、SSL VPN、TSM聯動、DHCP Server、DHCPv6 Server
- 系統:管理員、虛擬系統(包括虛擬系統創建和虛擬系統內的業務配置命令)、日志配置
說明:
一般情況下,display、reset、debugging命令都不支持備份。
缺省情況下,對于可以備份的配置命令,只能在配置主設備上執行。可以在配置主設備或配置備設備上執行hrp standby config enable命令,開放配置備設備的配置權限。
如果配置命令支持備份,在FW上執行命令時,命令后面會有(+B)的標識符。例如,下圖中安全策略相關的配置命令支持備份,接口IP地址的配置命令不支持備份。
FW能夠備份的狀態信息如下:
- 會話表
- SeverMap表
- 黑名單
- 白名單
- PAT方式端口映射表
- NO-PAT方式地址映射表
- 二層轉發表(靜態mac備份)
- AAA用戶表(缺省用戶admin不備份)
- 在線用戶監控表
- PKI證書,CRL
- IPSec備份
HRP 的備份方向
- 在主備備份組網下,配置命令和狀態信息都由主用設備備份到備用設備。
- 在負載分擔組網下,配置命令只能由“配置主設備”備份到“配置備設備”。狀態信息則是兩臺設備相互備份的。
在負載分擔組網下,兩臺FW都是主用設備。如果允許兩臺主用設備之間能夠相互備份命令,那么可能就會造成兩臺設備命令相互覆蓋或沖突的問題。
為了方便管理員對兩臺FW配置的統一管理,避免混亂,華為引入配置主和配置從設備的概念。發送備份配置命令的FW稱為配置主設備,接收備份配置命令的FW稱為配置從設備。
配置主和配置從設備的選舉情況如下:
- 設備名稱(sysname)的ASCⅡ碼較小的FW會成為配置主設備。例如,FW_A與FW_B形成負載分擔,FW_A會成為配置主設備;
- 如果兩臺設備名稱(sysname)相同,執行hrp enable命令時的時鐘小為主,執行hrp enable命令時的時鐘大為備。
HRP的三種備份方式
雙機熱備的HRP支持以自動備份、手工批量備份和快速備份三種方式。下面對這三種備份方式的描述和區別進行介紹。
自動備份
自動備份功能(命令為 hrp auto-sync [ config | connection-status ]) 缺省為開啟狀態,能夠自動實時備份配置命令和周期性地備份狀態信息。
- 備份配置命令:啟用自動備份功能后,在一臺FW上每執行一條可以備份的命令時,此配置命令就會被立即同步備份到另一臺FW上。
- 備份狀態信息:啟用自動備份功能后,主用設備會周期性地將可以備份的狀態信息備份到備用設備上。即主用設備的狀態信息建立后不會立即備份,而是在建立一段時間(10秒左右)之后才會備份到備用設備。
手工批量備份
手工批量備份需要管理員手工觸發,每執行一次手工批量備份命令(hrp sync [ config | connection-status ]),主用設備就會立即同步一次配置命令和狀態信息到備用設備。因此手工批量備份主要適用于主備設備之間配置不同步,需要手工同步的場景。
- 執行手工批量備份命令后,主用設備會立即同步一次可以備份的配置命令到備用設備。
- 執行手工批量備份命令后,主用設備會立即同步一次可以備份的狀態信息到備用設備,而不必等到自動備份周期的到來。
說明
用戶的配置信息包含兩部分:一部分保存在配置文件,另一部分保存在用戶數據庫。前者支持自動備份和手工批量備份,后者僅支持自動備份。
快速備份
快速會話備份功能(命令為 hrp mirror session enable), 適用于負載分擔的工作方式,以應對報文來回路徑不一致的場景。為了保證狀態信息的及時同步,快速備份功能只是備份狀態信息,不備份配置的命令。配置命令的備份由自動備份功能實現。
FW使用自動備份方式進行備份狀態信息時,不同類型會話表的備份支持情況和備份時機如下:
- 到FW自身和從FW發出的報文產生的會話不會備份。
- ICMP會話不會備份。
- 對于TCP協議會話,FW在TCP三次握手完成后才會備份會話。
- 對于UDP協議會話,FW在收到正向的第二個報文后才會備份。
- 對于SCTP協議會話,FW在SCTP四次握手完成后才會備份會話。
在報文來回路徑不一致的場景下,上述會話備份機制可能導致業務異常。如下圖所示,一條TCP連接的SYN報文是由FW_A轉發,SYN-ACK報文被引導到FW_B上處理。
對于TCP協議報文,默認FW只有在收到SYN報文時才會創建會話,收到SYN+ACK、ACK報文不會創建會話。因此,FW_A收到SYN報文,會創建一條TCP半連接會話。FW_B只收到了SYN-ACK報文,不會創建會話。由于自動備份方式FW_A不會向FW_B備份TCP半連接會話,當SYN-ACK報文到達FW_B時,會因為匹配不到會話而被丟棄,TCP連接無法建立。
為了解決上述問題,需要在FW上開啟會話快速備份功能。啟用快速備份功能后,主用設備會實時的將可以備份的狀態信息都同步到備用設備上,同時FW上不同類型會話表的備份支持情況和備份時機如下:
- 到FW自身和從FW發出的報文產生的會話不會備份。
- ICMP會話會備份,FW收到ICMP ECHO-REQUEST報文生成會話后就立即備份會話。
- 對于TCP協議會話,FW收到SYN報文生成會話后就立即備份會話。
- 對于UDP協議會話,FW收到正向的首個報文生成會話后就立即備份會話。
- 對于SCTP協議會話,FW收到INIT報文生成會話后就立即備份會話。
如下圖所示,開啟會話快速備份后,FW_A收到SYN報文創建的TCP半連接會話會立即備份到FW_B。當SYN-ACK報文到達FW_B時,會匹配FW_A備份過來的會話轉發。
綜上所示,三種備份方式的使用方式通常是:自動備份(hrp auto-sync [ config | connection-status ]) 默認開啟,不要關閉;如果主備設備之間配置不同步,需要執行手工批量備份的命令(hrp sync [ config | connection-status ]);如果是負載分擔組網,一般需要開啟快速會話備份功能(hrp mirror session enable)。
心跳口與心跳鏈路探測報文
兩臺防火墻之間備份的數據是通過防火墻的心跳口發送和接收的,是通過心跳鏈路(備份通道)傳輸的。心跳口必須是狀態獨立且具有 IP 地址的接口,可以是一個物理接口 GE,也可以是為了增加帶寬,由多個 GE 接口捆綁而成的一個邏輯接口 Eth-Trunk(通常情況下,備份數據流量約為業務流量的 20%~30%)。
如下圖所示,兩臺防火墻通過心跳口相互發送心跳鏈路探測報文,來檢測對端設備的心跳口能否正常接收本端設備的報文,以確定是否有心跳口可以使用。心跳鏈路探測報文也是由 VRRP 報文頭封裝的,當 VRRP 報文頭中 Type=2, Type2=2 時,報文封裝成心跳探測鏈路報文。
如上圖所示,心跳接口有五種狀態(執行命令 display hrp interface 可以查看):
- invalid:當本端防火墻上的心跳口配置錯誤時顯示此狀態(物理狀態up,協議狀態down),例如指定的心跳口為二層接口或未配置心跳接口的IP地址。
- down:當本端防火墻上的心跳口的物理與協議狀態均為down時,則會顯示此狀態。
- negotiation failed:表示和對端設備協商主備狀態失敗。有可能是因為本端和對端設備的軟件版本不一致、某端配置錯誤、對端設備的心跳接口狀態為Down、HRP源或目的端口號被修改、或者底層鏈路不通等原因導致。
- ready:當本端FW上的心跳口的物理與協議狀態均為up時,則心跳口會向對端對應的心跳口發送心跳鏈路探測報文。如果對端心跳口能夠響應此報文(也發送心跳鏈路探測報文),那么FW會設置本端心跳接口狀態為ready,隨時準備發送和接受心跳報文。這時心跳口依舊會不斷發送心跳鏈路探測報文,以保證心跳鏈路的狀態正常。
- running:當本端FW有多個處于ready狀態的心跳口時,FW會選擇最先配置的心跳口形成心跳鏈路,并設置此心跳口的狀態為running。如果只有一個處于ready狀態的心跳口,那么它自然會成為狀態為running的心跳口。狀態為running的接口負責發送HRP心跳報文、HRP數據報文、HRP鏈路探測報文、VGMP報文和一致性檢查報文。
綜上所述,心跳鏈路探測報文和 HRP 心跳報文的區別如下:
- 心跳鏈路探測報文用于檢測對端設備的心跳口能否正常接收本端設備的報文,以確定心跳口是否可用的。只要本端心跳接口的物理和協議狀態 up 就會向對端心跳口發送心跳鏈路探測報文進行探測。
- HRP 心跳報文是用于探測和感知對端設備(VGMP 組)是否正常工作的。HRP 心跳報文只有主用設備的 VGMP組通過狀態為 running 的心跳口發出。
HRP一致性檢查報文
配置一致性檢查功能用來檢測組成雙機熱備的兩臺FW的關鍵配置是否相同。
配置一致性檢查可以通過以下兩種方式觸發:
- 配置主設備周期性地自動發起一致性檢查
- 管理員在FW上執行hrp configuration check命令觸發一致性檢查
HRP一致性檢查的實現原理如下:
- 執行一致性檢查命令后,執行此命令的設備會發送一致性檢查請求報文給對端,并且同時收集自身的相關模塊的配置信息摘要。
- 對端設備收到請求后,會收集自身相關模塊的配置信息摘要,然后封裝到一致性檢查報文中返回給本端設備。
- 本端設備會對比自身的配置摘要和對端設備的配置摘要,并記錄比較信息。客戶可以執行命令display hrp configuration check查看一致性檢查結果。