1、何爲雙機熱備?
所謂的雙機熱備無非就是以7X24小時不中斷的爲企業提供服務爲目的,各類雙機熱備的技術不少,那麼華爲使用了這個共有協議的熱備協議——VRRP。安全
華爲的雙機熱備是經過部署兩臺或多臺防火牆實現熱備及負載均衡,兩臺防火牆相互協同工做,猶如一個更大的防火牆。網絡
華爲防火牆的雙機熱備包含如下兩種模式:session
- 熱備模式:同一時間只有一臺防火牆轉發數據,其餘防火牆不轉發,可是會同步會話表及server-map表,當目前工做的防火牆宕機之後,備份防火牆接替轉發數據的工做。
- 負載均衡模式:同一時間內,多臺防火牆同時轉發數據,而且互爲備份,每一個防火牆既是主設備,也是備用設備。防火牆之間同步會話表及server-map表。
2、VRRP的概念
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路由器的優先級選舉主用設備及備用設備。
- 搶佔模式:在搶佔模式下,若是備用路由器的優先級高於備份組中其餘路由器(包括當前的主用路由器),則將當即成爲新的主用路由器。
- 非搶佔模式:在非搶佔模式下,若是備用路由器的優先級高於備份組中其餘路由器(包括當前的主用路由器),也不會當即成爲主用路由器,直到下一次公平選舉(如重啓設備等)。
3、VRRP的兩種角色ide
工做在VRRP模式下的路由器有兩種角色,分別是Master路由器和Backup路由器。測試
- Master路由器:正常狀況下由Master路由器負責ARP響應及提供數據包的轉發,而且默認每隔1s向其餘路由器通告Master路由器當前狀態信息。
- Backup路由器:是Master路由器的備用路由器,正常狀況下不提供數據包的轉發,當master路由器故障時,在全部的Backup路由器中優先級最高的路由器將成爲新的master路由器,接替轉發數據包的工做,從而保證業務不中斷。
4、VRRP的選舉流程
VRRP選舉master路由器和backup路由器的流程以下:
首先選舉優先級高的設備成爲master路由器,若是優先級相同,再比較接口的IP地址大小,IP地址大(數值大)的設備將成爲master路由器,而備份組中其餘的路由器將成爲backup路由器。
.
除非手工將路由器配置爲IP地址擁有者(優先級=255),不然VRRP的狀態切換老是先經歷Backup狀態,即便路由器的優先級最高,也須要從backup狀態過渡到master狀態。此時,backup狀態只是一個瞬間的過渡狀態。
.
VRRP中的默認接口優先級爲100,取值範圍爲0~255,其中優先級0是系統保留,優先級255保留給IP地址擁有者,IP地址擁有者不須要配置優先級,默認優先級就是255。
.
5、VRRP的三個狀態ui
VRRP定義了三種狀態,分別以下:this
- Initalize狀態:剛配置了VRRP時的狀態下,在該狀態下,不對VRRP報文作任何處理,當接口shutdown或接口故障時也將進入該狀態。
- Master狀態:當前設備選舉成爲master路由器時的一種狀態,該狀態下會轉發數據報文,並週期性地發送VRRP通告報文,當接口關閉或設備宕機後將當即切換至Initialize狀態。
- Backup狀態:當前設備選舉成爲備用路由器時的一種狀態,該狀態不轉發任何數據報文,只會接收master路由器發送VRRP通告報文,以便檢測master路由器是否在正常工做,而且還同步主用設備上的狀態信息。
6、經過VGMP統一管理VRRP的狀態
在網絡設備上使用VRRP和在其餘情景下(Linux中的KeepAlived也使用了VRRP協議)使用並不同,存在的緣由以下圖:
從上圖中能夠看出,正常狀況下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設備)。3d
能夠簡單理解爲,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。
一、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參數,不然沒法配置。
二、雙機熱備的備份方式
雙機熱備的備份方式包括如下三種:
- 自動備份:該模式下,和雙機熱備有關的配置只能在主用設備上配置,並自動同步到備用設備中,主用設備自動將狀態信息同步到備用設備中。
- 手工批量備份:該模式下,主用設備上全部的配置命令和狀態信息,只有在手工執行批量備份命令時纔會自動同步到備用設備。該模式主要應用於主設備和備用設備配置不一樣步,須要當即進行同步的場景。
- 快速備份:該模式下,不一樣步配置命令,只同步狀態信息,在負載均衡方式的雙機熱備環境中,該默認必須啓用,以快速更新狀態信息。
各個模式的配置命令以下:
(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.....-->
三、關於上游或下游設備的選路問題
當雙機熱備的設備上游或下游是交換機時,是經過VRRP檢測接口或設備的狀態,但當上遊或下游設備是路由器時,VRRP沒法正常運行(VRRP依靠組播實現故障切換)。華爲防火牆的作法是監控其接口狀態,並配置OSPF實現流量切換,經過直接將接口加入VGMP組中,當接口故障時(即便是對端設備故障,本端接口的物理特性也將關閉)VGMP會感知接口狀態變化,從而下降VGMP組的優先級,從Active狀態切換至standby狀態。而以前的standby組將提高爲active狀態,而處於standby的VGMP組在發佈OSPF路由時,會自動將cost值增長65500,經過OSPF的自動收斂,最終將流量引導至active組設備中。
7、配置實例
環境以下(別看上面囉嗦了那麼一堆概念,但真正配置起來,簡單的很,可是若要排錯,仍是要理解透徹它的工做原理):
聲明:該環境不以實際環境爲目的,目的是爲了介紹防火牆的雙機熱備,因此這是一個簡化環境。
需求以下:
LSW1和LSW2是二層交換機,FW一、FW二、LSW一、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地址配置網關爲虛擬IP,PC1的IP地址配置網關爲虛擬IP,PC1的IP地址配置網關爲虛擬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
8、總結
一、兩臺防火牆用於心跳線的接口須要加入相同的安全區域。二、兩臺防火牆用於心跳線的接口的編號必須一致,如都是G1/0/1。三、建議用於雙機熱備的兩臺防火牆採用相同的型號,相同的VRP版本。鏈接同一個設備(路由器或交換機)都使用同一個接口編號。四、當熱備組中的設備壞掉後,買來新的設備進行加入熱備組時,在配置時,原來壞掉的那臺設備在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加入備份前,我手動配置了相關的安全策略。