華爲防火牆的NAT介紹及配置詳解

一、華爲防火牆NAT的六個分類

華爲防火牆的NAT分類:

  • NAT No-PAT:類似於Cisco的動態轉換,只轉換源IP地址,不轉換端口,屬於多對多轉換,不能節約公網IP地址,使用情況較少。
  • NAPT(Network Address and Port Translation,網絡地址和端口轉換):類似於Cisco的PAT轉換,NAPT即轉換報文的源地址,又轉換源端口。轉換後的地址不能是外網接口IP地址,屬於多對多或多對一轉換,可以節約公網IP地址,使用場景較多。
  • 出接口地址(Easy-IP):因其轉換方式非常簡單,所以也被稱爲Easy-IP、和NAPT一樣,即轉換源IP地址,又轉換源端口。區別是出接口地址方式轉換後的地址只能是NAT設備外網接口所配置的IP地址,屬於多對一轉換,可以節約IP地址。
  • NAT Server:靜態一對一發布,主要用於內部服務器需要對Internet提供服務時使用,。
  • Smart NAT(智能轉換):通過預留一個公網地址進行NAPT轉換,而其他的公網地址用來進行NAT No-PAT轉換,該方式不太常用。
  • 三元組NAT:與源IP地址、源端口和協議類型有關的一種轉換,將源IP地址和源端口轉換爲固定公網IP地址和端口,能解決一些特殊應用在普遍NAT中無法實現的問題。主要應用於外部用戶訪問局域網的一些P2P應用。

二、解決NAT轉換時的環路及無效ARP
在特定的NAT轉換時,可能會產生環路及無效ARP,關於其如何產生,大概就是,在有些NAT的轉換方式中,是爲了解決內網連接Internet,而映射出了一個公有IP,那麼,若此時有人通過internet來訪問這個映射出來的公有IP,就會產生這兩種情況。若要詳細說起來,又是很麻煩,但是解決這兩個問題很簡單,就是配置黑洞路由(將internet主動訪問映射出來的地址的流量指定到空接口null0),關於如何配置,將在過後的配置中展示出來,我總結了以下需要配置黑洞路由的場景,如下表所示:
華爲防火牆的NAT介紹及配置詳解
.
表中的前三個可以對應到文章開始的幾個NAT類型中,那麼NAT Server(粗泛)、NAT Server(精細)又是什麼鬼呢?

  • NAT Server(粗泛):是NAT Server轉換類型中的一種,表示源地址和轉換後的地址只有簡單的映射關係,沒有涉及端口等映射,如源地址爲192.168.1.2,轉換後的地址爲33.2.55.6,如果做的是NAT Server(粗泛)這種類型的NAT,那麼所有訪問33.2.55.6的數據包都將轉發給192.168.1.2這個地址。
  • NAT Server(精細):也是NAT Server轉換類型中的一種,表示源地址和轉換後的地址映射關係,已經具體定位到某個端口,如:源地址爲192.168.1.2,轉換後的地址爲33.2.55.6,做了NAT Server(精細)的NAT轉換,那麼可能是訪問33.2.55.6的FTP流量(21端口)會轉發到192.168.1.2這個地址,但若訪問33.2.55.6的Web流量(80/443端口),就不一定還是轉發到192.168.1.2這個地址,可以說NAT Server(精細)是基於端口的NAT轉換。

三、server-map表的作用
我們都知道,狀態化防火牆中會有一張表叫做會話表,用來記錄的是內網訪問外網時的一個連接信息,當外網返回的數據匹配到會話表的記錄時,直接放行相關返回流量。

那麼server-map表又是什麼呢?具體解釋其原理的話,可能又是一大篇,寫了也不一定能寫明白,寫明白了你們也不一定看懂,看懂了你們也不一定會打賞,哈哈,不開玩笑了,直接總結對比一下server-map表和會話表的區別吧,

區別如下:

  • 會話表記錄的是連接信息,包括連接狀態。
  • server-map表記錄的不是當前的連接信息,而是通過分析當前連接的報文後得到的信息,該信息用來解決接下來的數據流通過防火牆的問題。可以將server-map表的作用理解爲通過未雨綢繆解決將來的問題,如像FTP這種的多端口協議,在從一開始的三次握手,到最後完成數據的傳輸,其過程中,可能端口會發生改變等問題,server-map正好可以解決這種問題。

然而在NAT中也需要這個server-map表,就是在有數據流量通過NAT的方式穿越防火牆時,server-map表會記錄其源地址和轉換後地址的對應關係,從而使後續流量可以不用查看NAT策略,直接匹配到server-map表,從而實現高效的NAT轉換。若用戶通過互聯網訪問轉換後的地址時,也可以匹配到server-map表,從而高效的將數據轉發到內網真實主機(必須保證安全策略允許通過)。

server-map表不用手動配置,是自動生成的,這裏只是簡單介紹下server-map表是個什麼鬼。

在NAT中,不是所有的表都可以生成server-map表的,我簡單總結了一下,如下:
華爲防火牆的NAT介紹及配置詳解
當在防火牆上配置某些類型的NAT後,在防火牆上會生成server-map表,默認生成兩個server-map條目,分別是正向條目和反向條目(Reverse),如下:
華爲防火牆的NAT介紹及配置詳解
此時Server-map表的作用是:

  • 正向條目攜帶端口信息,用來使Internet用戶訪問內網中的服務器時直接通過server-map表來進行目標地址轉換。
  • 反向條目(Reverse):不攜帶端口信息,且目標地址是任意的,用來使服務器可以訪問Internet。

四、NAT對報文的處理流程
原諒我懶癌晚期,給大家上個圖,自己悟吧,能理解到什麼地步,全看天意咯,如下:
華爲防火牆的NAT介紹及配置詳解
從上圖中可以看出來,因爲防火牆處理報文的順序是目標地址轉換→安全策略→源地址轉換,所以在NAT環境中,安全策略的源地址應該是源地址轉換之前的地址,目標地址應該是目標地址轉換之後的地址。

一個報文,一般在同一個網絡設備上,只會存在一種轉換條目,即要麼轉換源地址(除NAT-Server類型的NAT轉換之外),要麼轉換目的地址(NAT-Server類型的NAT轉換)。源地址和目的地址的轉換不會同時存在同一個網絡設備上。
五、各種NAT類型的配置方法
在文章開頭的NAT分類中,Smart NAT(智能轉換)和三元組NAT這兩種NAT類型我也沒有配置過,不太瞭解,所以無法將這兩種的配置寫下來,只能將前四種NAT類型寫下來咯!一般夠用了(前面介紹的黑洞路由及查看一些相關表的命令都將在配置過程中,寫下來,請仔細看註釋)。

環境如下(不以實際環境爲準,主要目的是將多種類型NAT的配置寫下來):
華爲防火牆的NAT介紹及配置詳解
需求如下:
1、ISP爲公司分配的公網地址爲100.2.2.8/29。
2、技術部屬於trust區域,通過Easy-ip訪問Internet。
3、行政部屬於trust區域,通過NAPT訪問internet(使用100.2.2.12/29)。
4、財務部屬於trust區域,通過no-pat訪問internet(使用100.2.2.10/29-100.2.2.11/29)
5、DMZ區域中的兩臺服務器配置NAT-Server發佈,分別提供FTP服務及web服務(使用100.2.2.9/29)
6、防護牆的GE1/0/0屬於UNtrust區域。
開始配置基礎部分(IP地址、路由條目和防火牆接口添加到指定區域等):
我這裏只寫了路由器及防火牆的配置,關於各個PC及server的IP配置,請自行配置。基礎部分就不註釋了,若不懂,可以參考我之前的博文,若需要在eNSP上驗證效果,需要給模擬器上的防火牆導入系統,我這裏使用的是USG6000的防火牆
1、R1路由器配置如下:

<Huawei>sys
[Huawei]in g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 100.1.1.1 30
[Huawei-GigabitEthernet0/0/0]in g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 200.1.1.1 24
[Huawei-GigabitEthernet0/0/1]quit
[Huawei]ip route-static 100.2.2.8 29 100.1.1.2  <!-100.2.2.8/29爲彙總後的地址-->

2、防火牆配置如下:

<USG6000V1>sys
[USG6000V1]in g1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip add 100.1.1.2 30
[USG6000V1-GigabitEthernet1/0/0]in g1/0/4
[USG6000V1-GigabitEthernet1/0/4]ip add 192.168.3.1 24
[USG6000V1-GigabitEthernet1/0/4]in g1/0/3
[USG6000V1-GigabitEthernet1/0/3]ip add 192.168.2.1 24
[USG6000V1-GigabitEthernet1/0/3]in g1/0/2
[USG6000V1-GigabitEthernet1/0/2]ip add 192.168.1.1 24
[USG6000V1-GigabitEthernet0/0/0]in g1/0/1
[USG6000V1-GigabitEthernet1/0/1]ip add 192.168.0.1 24
[USG6000V1-GigabitEthernet1/0/1]quit
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.1
[USG6000V1]firewall zone trust 
[USG6000V1-zone-trust]add in g1/0/4
[USG6000V1-zone-trust]add in g1/0/3
[USG6000V1-zone-trust]add in g1/0/2
[USG6000V1-zone-trust]quit
[USG6000V1]firewall zone dmz
[USG6000V1-zone-dmz]add in g1/0/1
[USG6000V1-zone-dmz]quit
[USG6000V1]firewall zone untrust 
[USG6000V1-zone-untrust]add in g1/0/0

基礎部分的配置至此結束。

.
開始配置各種類型的NAT:
1、技術部屬於trust區域,通過Easy-ip訪問Internet。
(1)防火牆配置如下:
1)配置安全策略:


[USG6000V1]security-policy 
[USG6000V1-policy-security]rule name easy            <!--定義安全策略名字-->
[USG6000V1-policy-security-rule-easy]source-zone trust        <!--源區域爲trust-->
[USG6000V1-policy-security-rule-easy]destination-zone untrust    <!--目標區域爲untrust-->
[USG6000V1-policy-security-rule-easy]action permit         <!--動作爲允許-->
[USG6000V1-policy-security-rule-easy]quit
[USG6000V1-policy-security]quit

2)配置NAT策略:

[USG6000V1]nat-policy 
[USG6000V1-policy-nat]rule name easypolicy    <!--定義NAT策略名字-->
[USG6000V1-policy-nat-rule-easypolicy]source-address 192.168.1.0 24 <!--定義源地址-->
[USG6000V1-policy-nat-rule-easypolicy]source-zone trust   <!--定義源區域-->
[USG6000V1-policy-nat-rule-easypolicy]destination-zone untrust    <!--定義目標區域-->
[USG6000V1-policy-nat-rule-easypolicy]action nat easy-ip    <!--配置出接口方式-->
[USG6000V1-policy-nat-rule-easypolicy]quit
[USG6000V1-policy-nat]quit

現在就可以使用PC4 ping外網的200.1.1.2進行驗證了,在ping的過程中查看會話表(時間長了該會話表將沒有任何內容),可以看到具體的轉換條目。

[USG6000V1]dis firewall session table        <!--查看會話表-->
 Current Total Sessions : 5
 icmp  ×××: public --> public  192.168.3.2:28884[100.1.1.2:2051] --> 200.1.1.2:2:048
                           ..............................

注:Easy-ip類型的NAT不會產生server-map。
2、配置行政部屬於trust區域,通過NAPT訪問internet(使用100.2.2.12/29)。
由於在上面配置Easy-ip的NAT類型時,配置了安全策略,所以接下來trust區域訪問untrust區域的流量就不用配置安全策略了。

(1)防火牆配置如下:
1)配置NAT地址組,地址組中的地址對應的是公網地址100.2.2.12/29。

[USG6000V1]nat address-group napt    <!--定義nat地址組名-->
[USG6000V1-address-group-napt]section 0 100.2.2.12   <!--定義組中的地址-->
[USG6000V1-address-group-napt]mode pat   <!--配置爲NAPT方式-->
[USG6000V1-address-group-napt]quit

2)配置NAT策略

[USG6000V1]nat-policy
[USG6000V1-policy-nat]rule name napt   <!--自定義nat策略的組名-->
[USG6000V1-policy-nat-rule-napt]source-address 192.168.2.0 24 <!--定義需要轉換的源地址-->
[USG6000V1-policy-nat-rule-napt]source-zone trust    <!--定義源區域-->
[USG6000V1-policy-nat-rule-napt]destination-zone untrust     <!--定義目標區域-->
[USG6000V1-policy-nat-rule-napt]action nat address-group napt  <!--關聯地址組-->

3)NAPT的NAT類型要配置黑洞路由,所以要針對轉換後的全局地址100.2.2.12/32配置黑洞路由。

[USG6000V1]ip route-static 100.2.2.12 32 NULL 0      

4)NAPT配置至此就完成了,可以自行驗證,並查看會話表,查看是否轉換爲指定的地址。
3、配置財務部屬於trust區域,通過no-pat訪問internet(使用100.2.2.10/29-100.2.2.11/29)
(1)防火牆配置如下:

1)配置NAT地址組,地址組中的地址對應的是公網地址100.2.2.10--100.2.2.11:

[USG6000V1]nat address-group natnopat <!--定義nat地址組名-->
[USG6000V1-address-group-natnopat]section 0 100.2.2.10 100.2.2.11
   <!--定義組中的地址-->
[USG6000V1-address-group-natnopat]mode no-pat local <!--配置爲NAT No-PAT方式-->
[USG6000V1-address-group-natnopat]quit

2)配置NAT策略:

[USG6000V1]nat-policy
[USG6000V1-policy-nat]rule name nopat  <!--自定義nat策略的組名-->
[USG6000V1-policy-nat-rule-nopat]source-address 192.168.1.0 24 <!--定義需要轉換的源地址-->
[USG6000V1-policy-nat-rule-nopat]source-zone trust   <!--定義源區域-->
[USG6000V1-policy-nat-rule-nopat]destination-zone untrust <!--定義目標區域-->
[USG6000V1-policy-nat-rule-nopat]action nat address-group natnopat <!--關聯地址組-->
[USG6000V1-policy-nat-rule-nopat]quit
[USG6000V1-policy-nat]quit

3)針對轉換後的全局地址(NAT地址組中的地址)配置黑洞路由:


[USG6000V1]ip route-static 100.2.2.10 32 NULL 0
[USG6000V1]ip route-static 100.2.2.11 32 NULL 0

至此,NAT No-PAT配置完成了,可以自行驗證,並且會產生server-map表:

[USG6000V1]dis firewall server-map <!--查看server-map表-->
[USG6000V1]dis firewall session table  <!--查看會話表-->

4、配置DMZ區域中的兩臺服務器配置NAT-Server發佈,分別提供FTP服務及web服務(使用100.2.2.9/29)
1)配置安全策略:

由於之前配置的是trust訪問untrust區域的安全策略,所以對DMZ區域沒關係,這裏是要將DMZ區域的服務器發佈出去,使Internet用戶可以訪問到這些服務器,所以應該放行UNtrust到DMZ區域相關服務的流量。

[USG6000V1-policy-security]rule name todmz  
[USG6000V1-policy-security-rule-todmz]source-zone untrust 
[USG6000V1-policy-security-rule-todmz]destination-zone dmz
[USG6000V1-policy-security-rule-todmz]destination-address 192.168.0.0 24
[USG6000V1-policy-security-rule-todmz]service ftp
[USG6000V1-policy-security-rule-todmz]service http
[USG6000V1-policy-security-rule-todmz]action permit 

2)配置NAT server:

[USG6000V1]nat server ftp protocol tcp global 100.2.2.9 21 inside 192.168.0.2 21
[USG6000V1]nat server http protocol tcp global 100.2.2.9 80 inside 192.168.0.3 80

3)使用外網客戶端client1進行訪問驗證即可,訪問以後趕緊查看會話表及server-map表(因爲怕到了老化時間,會看不到任何條目),會看到如下結果:
華爲防火牆的NAT介紹及配置詳解
配置至此,所有需求均已實現,完活。

1、擴展一些NAT Server的其他配置類型:

[USG6000V1]nat server ftp1 protocol tcp global 100.2.2.14 2121 inside 192.168.0.2 21    
                <!--
配置不同端口映射,其效果是外網用戶訪問100.2.2.14的2121端口,
將轉換地址和端口爲192.168.0.2的21端口。
                 -->
[USG6000V1]nat server ftp1 protocol tcp global 100.2.2.14 21 inside 192.168.0.2 21 no-reverse
                <!--
其效果就是不再生成反向的server-map表,
只能Internet訪問內部的ftp服務,而內部服務器不能主動訪問互聯網。
                -->
[USG6000V1]nat server natserver global 100.2.2.19 inside 100.2.2.9

                <!--
真正一對一的映射,一個公網IP對應一個內部服務器,
當Internet用戶訪問100.2.2.19的任意端口,都將轉發到內部100.2.2.9服務器上,
該配置方法不常用,也不推薦使用。
                -->

2、如何刪除NAT Server:
那麼我們在配置NAT Server時,配置錯誤的話,想要刪除掉,與別的配置刪除不太一樣,需要使用以下命令刪除配置錯誤的NAT Server:


[USG6000V1]undo nat server name http   
[USG6000V1]undo nat server ID 0
              <!--
以上命令是刪除NAT server的配置,
第一個是基於名字刪除,第二個是基於ID號刪除,
在系統視圖,使用“dis  this”,然後翻到最後,可以看到name及ID號
                          -->
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章