華爲防火牆——雙機熱備技術

本章目的:
 * 理解VRRP的工作原理
 * 掌握VGMP的使用場景
 * 理解雙機熱備的工作原理
 * 掌握雙機熱備狀態的查看方法

1.雙機熱備概述

單一鏈路存在的問題:

華爲防火牆——雙機熱備技術

如上圖所示,企業中在關鍵的業務出口部署一臺防火牆,使用的對外流量都經過防火牆傳輸,一旦防火牆出現故障,那麼企業將面臨網絡中斷的問題,無論防火牆本身的性能多好,功能有多強,在這一刻,都無法挽回企業面臨的損失。
使用,通過在企業的出口部署兩臺防火牆產品,及時一臺防火牆出現了故障,另一臺也會迅速的頂上來繼續工作,可以在增強企業安全的同時,保證業務傳輸基本不會中斷,因爲兩臺設備同時出現故障的概率非常小。

*防火牆和路由器冗餘示意圖:

華爲防火牆——雙機熱備技術

  • 如左圖所示:內部網絡可以通過R3-R1-R4到達外網,也能通過R3-R2-R4,如果通過R3-R1-R4路徑的成本比較小(運行ospf),那麼默認情況下內部將通過R3-R1-R4到達wa外網,當R1設備損壞時,ospf將自動收斂,R3通過R2的轉發到達外網,
  • 而右圖中,把R1和R2替換成防火牆,假如流量從FW1通過到達外部,此時FW1上面記錄着大量的用戶流量對應的會話表項內容,當FW1損壞時,FW1將流量引用到FW2上,此時FW2開始工作,但是FW2上面沒有之前流量的會話表,之前傳輸會話的返回流量將無法通過FW2,而會話的後續流量需要重新經過安全策略的檢查,並生成會話表,着也意味着之前的所有通信都講中斷,除非重新建立連接。

    *防火牆的雙機熱備:

    華爲防火牆——雙機熱備技術
    防火牆的雙機熱備功能是通過提供一條備份鏈路(心跳線),協商防火牆之間的主備狀態以及備份會話表,server-map表等操作。根據防火牆的配置選出主用設備與備用設備,當主工作時,備用不提供數據包的轉發,但備用設備會實時從主用設備下載當前在流量會話表及server-map表,從而保證,當主設備故障時,及時切換備用設備,備用設備依然存在當前流量的會話表以及server-map表,從而保證流量不中斷。

二.防火牆雙機備份的兩種模式


* 熱備份模式:同一時間只有一臺防火牆轉發數據包,其他防火牆不轉發數據包,但是會同步會話表以及server-map表。

* 負載均衡模式:同一時間,多臺防火牆同時轉發數據,但每個防火牆又作爲其他防火牆的備用設備,即每個防火牆即使主設備也是備用設備,防火牆之間同步會話表以及server-map表。

三.RRP概述

VRRP(virtual router redundancy protocol,虛擬路由冗餘協議),用來解決網關單點故障的路由協議。VRRP可以應用在路由器中提供網關冗餘,也可以用在防火牆中做雙機熱備。

VRRP的基本概念如下:

* VRRP路由器:運行VRRP協議的路由器。
* 虛擬路由器:由一個主用路由器和若干個備用路由器組成一個備份組,一個備份組對客戶端提供一個虛擬網關。
* VRID:虛擬路由器標識,用來唯一的標識一個備份組。
* 虛擬IP地址:提供給客戶端的網關地址,也是分配給虛擬路由器的IP地址,在所有的VRRP中配置,只有主用設備提供該IP地址的ARP響應。
* 虛擬MAC地址:基於VRID生成的用於VRRP的MAC地址,在客戶端通過ARP協議解析網關的MAC地址時,主用路由器將提供該MAC地址。
* IP地址擁有者:若將虛擬路由器的IP地址配置爲某個成員物理接口的真實IP地址,那麼該成員被稱爲IP地址擁有者。
* 優先級:用於標識VRRP路由器的優先級,並通過每個VRRP路由器的優先級選舉主用設備及備用設備。
* 搶佔模式:在搶佔模式下,如果備用路由器的優先級高於備份組中其他路由器(包括當前的主用路由器),則將立即成爲新的主用路由器。
* 非搶佔模式:在非搶佔模式下,如果備用路由器的優先級高於備份組中其他路由器(包括當前的主用路由器),也不會立即成爲主用路由器,直到下一次公平選舉(如重啓設備等)。

四.VRRP的角色

工作在VRRP模式下的路由器有兩種角色,分別是Master路由器和Backup路由器。

Master路由器:正常情況下由Master路由器負責ARP響應及提供數據包的轉發,並且默認每隔1s向其他路由器通告Master路由器當前狀態信息。
Backup路由器:是Master路由器的備用路由器,正常情況下不提供數據包的轉發,當master路由器故障時,在所有的Backup路由器中優先級最高的路由器將成爲新的master路由器,接替轉發數據包的工作,從而保證業務不中斷。

五.VRRP狀態機

VPRR 定義了三種工作狀態,分別是initialize,master,backup。

Initalize狀態:剛配置了VRRP時的狀態下,在該狀態下,不對VRRP報文做任何處理,當接口shutdown或接口故障時也將進入該狀態。
Master狀態:當前設備選舉成爲master路由器時的一種狀態,該狀態下會轉發數據報文,並週期性地發送VRRP通告報文,當接口關閉或設備宕機後將立即切換至Initialize狀態。
Backup狀態:當前設備選舉成爲備用路由器時的一種狀態,該狀態不轉發任何數據報文,只會接收master路由器發送VRRP通告報文,以便檢測master路由器是否在正常工作,並且還同步主用設備上的狀態信息。

六.VRRP的工作原理

VRRP選舉master路由器和backup路由器的流程如下:


首先選舉優先級高的設備成爲master路由器,如果優先級相同,在比較接口的ip地址大小,IP地址大的設備將成爲master路由器,而備份組中其他的路由器將成爲backup路由器

華爲防火牆——雙機熱備技術

從上圖中可以看出,正常情況下PC去往外部網絡的數據包通過備份組1的master設備(FW1)轉發,外部網絡返回的數據包由備份組2的master設備(FW1)轉發,但是當FW1的G1/0/0接口出現故障時,備份組1可以檢測到這一故障,並將FW2作爲備份組1的master設備。PC發起的數據包由備份組1的master設備(FW2)進行轉發,而備份組2的狀態沒有發生任何改變(FW1的G1/0/1接口正常工作),所以由外部網絡返回的流量仍然由備份組2的master設備(FW1轉發),顯然,因爲FW1的接口G1/0/0故障,數據包無法繼續轉發。
.
造成這種現象的原因就是兩個VRRP備份組獨立工作,所以需要使用VGMP(VRRP組管理協議)來實現對VRRP備份組的統一管理,以保證設備在各個備份組中的狀態一致。VGMP通過在設備(FW1和FW2)上將所有的備份組(備份組1和備份組2)加入一個VGMP組中進行統一管理,一旦檢測到某個備份組(備份組1)中的接口發生變化(如接口進入Initialize狀態),VGMP組將自身優先級減2,並重新協商VGMP的Active組和standby組。選舉出的Active組將所有的其他備份組(備份組1和備份組2)統一進行狀態切換(備份組1和備份組2中的FW2將成爲master設備)。

可以簡單理解爲,VGMP就是用來統一設備在不同備份組中的狀態的即可。VGMP的工作原理如下:

  • VGMP組的狀態決定了VRRP備份組的狀態,即設備的角色(如master和backup)不再通過VRRP報文選舉,而是直接通過VGMP統一管理。
  • VGMP組的狀態通過比較優先級決定,優先級高的VGMP組將成爲Active,優先級低的VGMP組將成爲standby。
    默認情況下,VGMP組的優先級爲45000。
  • VGMP根據組內VRRP備份組的狀態自動調整優先級,一旦檢測到備份組的狀態變成Initialize狀態,VGMP組的優先級會自動減2。
  • VGMP通過心跳線協商VGMP狀態信息。

在加入VGMP組之後,VRRP中的狀態標識從master和backup變成了active和standby。

1、VGMP的報文封裝
VGMP通過心跳線協商VGMP的狀態信息,通過發送VGMP報文實現。VGMP報文有以下兩種形式:

華爲防火牆——雙機熱備技術
如上圖中左邊的網絡圖中,心跳線(G1/0/0)和對端的心跳線直連,或者通過二層交換機相連時,發送的報文屬於組播報文,報文封裝中不攜帶UDP頭部信息,而當心跳線通過三層設備(當然這種情況並不多見)連接時,因爲組播報文無法通過三層設備,所以在報文封裝中會額外增加一個UDP頭部消息,此時發送的報文屬於單播。

通過以下命令指定通過接口發送的報文屬於哪種類型的封裝。

[USG6000V1]hrp interface GigabitEthernet 1/0/0       <!--eNSP模擬器中不支持該配置-->
[USG6000V1]hrp interface GigabitEthernet 1/0/0 remote 1.1.1.1
<!--hrp命令用來指定用於心跳鏈路的接口編號,
1.1.1.1是心跳線對端接口的IP地址,該地址要求路由可達,
帶remote參數的命令將封裝UDP,併發送單播報文不帶remote參數將發送組播報文-->

關於配置VGMP的其他注意事項:

加入了VGMP後,心跳線的作用包含狀態信息備份(會話表和server-map表)及VGMP狀態協商。
華爲防火牆在默認情況下放行組播流量(如不帶remote參數的VGMP報文)禁止單播流量(如帶remote參數的VGMP報文),所以如果配置了remote參數,還需要配置local區域和心跳線接口所在的區域之間配置安全策略。
配置了VRRP virtual-mac enable的接口不能作爲心跳口。
如果使用二層接口作爲心跳接口,不能直接在二層接口上配置,而是將二層接口加入vlan,在vlan中配置心跳接口。
eNSPoint模擬器中,即使心跳接口之間相連,也必須配置remote參數,否則無法配置。

2、雙機熱備的備份方式

雙機熱備的備份方式包括以下三種:

* 自動備份:該模式下,和雙機熱備有關的配置只能在主用設備上配置,並自動同步到備用設備中,主用設備自動將狀態信息同步到備用設備中。
* 手工批量備份:該模式下,主用設備上所有的配置命令和狀態信息,只有在手工執行批量備份命令時纔會自動同步到備用設備。該模式主要應用於主設備和備用設備配置不同步,需要立即進行同步的場景。
* 快速備份:該模式下,不同步配置命令,只同步狀態信息,在負載均衡方式的雙機熱備環境中,該默認必須啓用,以快速更新狀態信息。

各個模式的配置命令如下:

(1)開啓雙機熱備功能:

[USG6000V1]hrp enable    
HRP_S[USG6000V1]       <!--開啓雙機熱備功能後,命令提示符發生變化-->

(2)配置自動備份模式:


HRP_M[USG6000V1]hrp auto-sync 
HRP_M[USG6000V1]security-policy  (+B)
 <!--開啓雙機熱備後,執行可以同步的命令會有(+B)的提示-->

(3)配置手工批量備份模式:

HRP_M<USG6000V1>hrp sync [ config | connection-status ]   
       <!--
 在用戶模式下執行該命令,其中config參數表示手工同步命令配置,
 connection-status參數表示手工同步狀態信息。
              -->

(4)配置快速備份模式:

HRP_S[USG6000V1]hrp mirror session enable 
HRP_M[USG6000V1]      <!--配置快速備份模式後,開頭會變成HRP_M.....-->

3、關於上游或下游設備的選路問題
當雙機熱備的設備上游或下游是交換機時,是通過VRRP檢測接口或設備的狀態,但當上遊或下游設備是路由器時,VRRP無法正常運行(VRRP依靠組播實現故障切換)。華爲防火牆的做法是監控其接口狀態,並配置OSPF實現流量切換,通過直接將接口加入VGMP組中,當接口故障時(即使是對端設備故障,本端接口的物理特性也將關閉)VGMP會感知接口狀態變化,從而降低VGMP組的優先級,從Active狀態切換至standby狀態。而之前的standby組將提升爲active狀態,而處於standby的VGMP組在發佈OSPF路由時,會自動將cost值增加65500,通過OSPF的自動收斂,最終將流量引導至active組設備中。

七、配置實例

環境如下(別看上面囉嗦了那麼一堆概念,但真正配置起來,簡單的很,但是若要排錯,還是要理解透徹它的工作原理):
華爲防火牆——雙機熱備技術
聲明:該環境不以實際環境爲目的,目的是爲了介紹防火牆的雙機熱備,所以這是一個簡化環境。
需求如下:

LSW1和LSW2是二層交換機,FW1、FW2、LSW1、LSW2組成雙機熱備網絡,正常情況下,PC1發起的訪問R1的流量通過FW1轉發,當FW1出現故障時,在PC1不做任何調整的前提下,可以自動通過FW2轉發。

開始配置:

FW1配置如下:

<USG6000V1>sys      <!--進入系統視圖-->
<!--以下是在配置相應接口IP-->
[USG6000V1]in g1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip add 10.1.1.101 24
[USG6000V1-GigabitEthernet1/0/0]in g1/0/1
[USG6000V1-GigabitEthernet1/0/1]ip add 172.16.1.1 24
[USG6000V1-GigabitEthernet1/0/1]in g1/0/2
[USG6000V1-GigabitEthernet1/0/2]ip add 192.168.1.101 24
[USG6000V1-GigabitEthernet1/0/2]quit
<!--以下是在將接口添加至相應區域-->
[USG6000V1]firewall zone trust
[USG6000V1-zone-trust]add in g1/0/2
[USG6000V1-zone-trust]firewall zone dmz
[USG6000V1-zone-dmz]add in g1/0/1
[USG6000V1-zone-dmz]firewall zone untrust
[USG6000V1-zone-untrust]add in g1/0/0
[USG6000V1-zone-untrust]quit
<!--以下是設置一個策略,放行本地到dmz區域的流量,以便使VGMP報文通過-->
[USG6000V1]security-policy 
[USG6000V1-policy-security]rule name permit_heat
[USG6000V1-policy-security-rule-permit_heat]source-zone local
[USG6000V1-policy-security-rule-permit_heat]destination-zone dmz
[USG6000V1-policy-security-rule-permit_heat]action permit 
[USG6000V1-policy-security-rule-permit_heat]quit
[USG6000V1-policy-security]quit
<!--其實在配置完雙機熱備再配置該策略也可以,但是爲了保險起見,就先配置上這個策略-->
 <!--以下是在配置VRRP備份組-->
[USG6000V1]in g1/0/0
[USG6000V1-GigabitEthernet1/0/0]vrrp vrid 2 virtual-ip 10.1.1.100 active
[USG6000V1-GigabitEthernet1/0/0]in g1/0/2
[USG6000V1-GigabitEthernet1/0/2]vrrp vrid 1 virtual-ip  192.168.1.100 active
[USG6000V1-GigabitEthernet1/0/2]quit

 [USG6000V1]hrp in g1/0/1 remote 172.16.1.2    <!--配置心跳接口,指定對端設備-->
[USG6000V1]hrp enable    <!--啓用雙機熱備-->
HRP_S[USG6000V1]hrp auto-sync <!--配置備份方式爲自動備份-->
至此,FW1的配置暫時就完成了。開始配置FW2,FW2的配置與FW1的配置類似,就不寫註釋了(體諒一下我這個懶貨)。

FW2配置如下:

<USG6000V1>sys
[USG6000V1]in g1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip add 10.1.1.102 24
[USG6000V1-GigabitEthernet1/0/0]in g1/0/1
[USG6000V1-GigabitEthernet1/0/1]ip add 172.16.1.2 24
[USG6000V1-GigabitEthernet1/0/1]in g1/0/2
[USG6000V1-GigabitEthernet1/0/2]ip add 192.168.1.102 24
[USG6000V1-GigabitEthernet1/0/2]quit
[USG6000V1]firewall zone trust
[USG6000V1-zone-trust]add in g1/0/2
[USG6000V1-zone-trust]firewall zone untrust
[USG6000V1-zone-untrust]add in g1/0/0
[USG6000V1-zone-untrust]firewall zone dmz
[USG6000V1-zone-dmz]add in g1/0/1
[USG6000V1-zone-dmz]quit
[USG6000V1]security-policy 
[USG6000V1-policy-security]rule name permit_heat
[USG6000V1-policy-security-rule-permit_heat]source-zone local
[USG6000V1-policy-security-rule-permit_heat]destination-zone dmz
[USG6000V1-policy-security-rule-permit_heat]action permit
[USG6000V1-policy-security-rule-permit_heat]quit
[USG6000V1-policy-security]quit
[USG6000V1]in g1/0/0
[USG6000V1-GigabitEthernet1/0/0]vrrp vrid 2 virtual-ip 10.1.1.100 standby 
[USG6000V1-GigabitEthernet1/0/0]in g1/0/2
[USG6000V1-GigabitEthernet1/0/2]vrrp vrid 1 virtual-ip  192.168.1.100 standby 
[USG6000V1-GigabitEthernet1/0/2]quit
[USG6000V1]hrp in g1/0/1 remote 172.16.1.1
[USG6000V1]hrp enable
HRP_S[USG6000V1]hrp auto-sync

配置至此,雙機熱備狀態已經同步了,現在FW2爲備份狀態,多數配置已經無法在FW2上進行,只能在FW1上配置後,自動同步到FW2,那麼現在在FW1配置一條策略,以便允許trust區域訪問untrust區域,並且在FW2防火牆設備上查看是否同步到這條策略。

FW1配置如下:

<!--可以看到每條命令後面自動跟一個“(+B),表示該命令可以同步。”-->
HRP_M[USG6000V1]security-policy  (+B)
HRP_M[USG6000V1-policy-security]rule name test1 (+B)
HRP_M[USG6000V1-policy-security-rule-test1]source-zone trust  (+B)
HRP_M[USG6000V1-policy-security-rule-test1]destination-zone untrust  (+B)
HRP_M[USG6000V1-policy-security-rule-test1]action permit  (+B)
HRP_M[USG6000V1-policy-security-rule-test1]quit
HRP_M[USG6000V1-policy-security]quit

FW2設備上查看是否有FW1創建的策略:

HRP_S[USG6000V1]security-policy         <!--抱歉,備份設備已經進不去安全策略模式了-->
 Error: The device is in HRP standby state, so this command can not be executed.
 HRP_S[USG6000V1]dis current-configuration  <!--別擔心,還可以查看當前所有策略嘛-->
         ...................... <!--省略部分內容-->
security-policy
 rule name permit_heat
  source-zone local
  destination-zone dmz
  action permit
 rule name test1        <!--可以看到剛纔創建的名爲test1策略已經同步過來了-->
  source-zone trust
  destination-zone untrust
  action permit

配置R1路由器及PC及的IP地址,並ping通。

R1路由器配置如下(R1路由器相當於運營商的公網上的路由器了,這裏只是爲了模擬一個這樣的環境):

<Huawei>sys
[Huawei]in g0/0/0``
[Huawei-GigabitEthernet0/0/0]ip add 10.1.1.1 24
[Huawei-GigabitEthernet0/0/0]quit
[Huawei]ip route-static 192.168.1.0 24 10.1.1.100     
           <!--
添加一條去往內網的路由,在實際環境中,可是不會有這條路由的哦,
實際中一般會將內網的地址映射爲和該路由器同一網段的公網IP。
                  -->

PC1的IP地址配置如下:
華爲防火牆——雙機熱備技術
PC1和R1路由器進行ping測試(最好在命令最後加“-t”選項,進行持續ping,以便查看會話表,否則會話表會老化,查不到相應數據):

華爲防火牆——雙機熱備技術
在FW1查看會話表:

HRP_M[USG6000V1]dis firewall session table 
 Current Total Sessions : 24
 icmp  ×××: public --> public  192.168.1.1:17547 --> 10.1.1.1:2048
 icmp  ×××: public --> public  192.168.1.1:18059 --> 10.1.1.1:2048
 icmp  ×××: public --> public  192.168.1.1:14987 --> 10.1.1.1:2048

在FW2查看會話表:

HRP_S[USG6000V1]dis firew se ta
 Current Total Sessions : 26
 icmp  ×××: public --> public  Remote 192.168.1.1:9099 --> 10.1.1.1:2048
 icmp  ×××: public --> public  Remote 192.168.1.1:9611 --> 10.1.1.1:2048
 icmp  ×××: public --> public  Remote 192.168.1.1:10891 --> 10.1.1.1:2048
 icmp  ×××: public --> public  Remote 192.168.1.1:12171 --> 10.1.1.1:2048

可以看出兩個防火牆上的會話表內容都是不一樣的(但不會影響故障切換)。

那麼現在就可以進行故障切換的驗證咯!

模擬FW1設備故障(關閉FW1的任意一個接口即可,注:此時PC1還在持續pingR1,纔可以看到故障切換的效果):

HRP_M[USG6000V1]in g1/0/0 (+B)
HRP_M[USG6000V1-GigabitEthernet1/0/0]shutdown
 <!--“shutdown”命令系統是不會同步到對端防火牆的,要不然就沒得玩了,
 你看它後面都沒有 (+B)-->

在關閉接口的後的一兩秒鐘,可以看到PC1丟了一個包,便又恢復正常了,說明故障切換成功。如下:
華爲防火牆——雙機熱備技術
配置到此結束,下面是關於雙機熱備的一些查詢命令:

 <!--查看雙機熱備的狀態信息,主要看是Role和peer的信息,
 Role表示本端,peer表示對端。
 Running priority表示本端的優先級,peer表示對端的優先級。
 -->
HRP_S[USG6000V1]display hrp state     
 Role: standby, peer: active (should be "active-standby")
 Running priority: 44998, peer: 45000
                      ......................        <!--省略部分內容-->

HRP_S[USG6000V1]dis hrp interface           <!--查看心跳接口狀態-->     
             GigabitEthernet1/0/1 : running

八、總結

1、兩臺防火牆用於心跳線的接口需要加入相同的安全區域。
2、兩臺防火牆用於心跳線的接口的編號必須一致,如都是G1/0/1。
3、建議用於雙機熱備的兩臺防火牆採用相同的型號,相同的VRP版本。連接同一個設備(路由器或交換機)都使用同一個接口編號。
4、當熱備組中的設備壞掉後,買來新的設備進行加入熱備組時,在配置時,原來壞掉的那臺設備在VGMP中配置的是active,哪怕現在備份組中有設備處於active狀態,新買來的設備必須也配置active狀態,否則無法協商。如在上面環境中,FW1配置時配置爲active狀態,然後FW1設備down掉了,此時FW2由standby狀態變爲active狀態,那麼,此時再買來一臺FW3想要重新加入備份組,在配置時,須配置爲active。如該條命令:vrrp vrid 1 virtual-ip 192.168.1.100 active。不過還有個弊端,就是配置後,新買的FW3變成了active狀態,但是FW2上有很會話表就同步不了了,因爲只有備份設備去同步活躍設備,活躍設備是不會去同步備份設備的狀態的,所以,還是先將FW2重新使用vrrp vrid 1 virtual-ip 192.168.1.100 active這條命令,將原始的狀態變爲active狀態,然後在配置FW3時,直接將FW3配置爲standby狀態,會話表便可同步成功(關於FW3如何將FW2的安全策略同步過來,我沒有搞明白,如果哪位知道怎麼同步安全策略的,還希望寫在評論中),在FW3加入備份前,我手動配置了相關的安全策略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章