您好,登錄后才能下訂單哦!
人類現在對計算機網絡的使用已經擴展到各個領域,而計算機網絡的設計者當時無法想象互聯網能有今天這樣的規模。任何一個接入互聯網的計算機、手機以及智能電視,要想在互聯網中暢游,必須有一個合法的IP地址。而IP地址,曾經以為足以容納全球的計算機,但是在今天看來,已經嚴重枯竭。IPV6的出現就是為了解決地址不足的問題,但在IPV6普及之前,需要有一個過渡技術——NAT。NAT的出現緩解了地址不足的問題,它可以讓同一局域網內60000多用戶可以同時使用一個合法IP地址訪問互聯網。關于Cisco設備的NAT技術,不清楚的朋友本人推薦博文——網絡地址轉換——NAT技術 今天主要介紹華為設備的NAT技術。
博文大綱:
一、華為設備NAT的分類;
二、如何解決源地址轉換場景下的環路和無效ARP問題;
三、Server-map表的作用;
1.通過Server-map表來解決FTP數據傳輸的問題;
2.Server-map表在NAT中的作用;
四、NAT對報文的處理流程;
五、各種常用的NAT的配置方法;
1.NAT NO-PAT配置方式;
2.NAPT配置方式;
3.Easy-IP配置方式;
4.NAT server配置方式;
在內外網的邊界,流量有出、入兩個方向,所以NAT技術包含源地址轉換和目標地址轉換兩類。一般情況下,源地址轉換主要用于解決內部局域網計算機訪問Internet的場景;而目標地址轉換主要是用于解決Internet用戶訪問局域網服務器的場景,目標地址轉換通常被稱為服務器地址映射。
華為設備支持的源地址轉換方式有:
- NAT NO-PAT:類似于Cisco的動態轉換,只轉換源IP地址,不轉換端口,屬于多對多轉換,不能節約公網地址,實際情況下使用很少,主要適用于需要上網的用戶較少,且公網地址足夠的情況下;
- NAPT:類似于Cisco的PAT轉換,NAPT既轉換報文的源地址,又轉換源端口。轉換后的地址不能是外網接口的IP地址,屬于多對多或多對一轉換,可以節約IP地址,使用場景較多,主要適用于內部大量用戶需要上網,同時僅有少數幾個公網IP地址可用的場景下;
- 出接口地址:因其轉換方式非常簡單,所以也稱為Easy-IP,和NAPT一樣,既轉換源IP地址,又轉換源端口。區別是出接口地址方式轉換后的地址只能是NAT設備外網接口所配置的IP地址,屬于多對一轉換,可以節約IP地址,主要適用于沒有額外的公網地址可用,內部上網用戶非常多的場景下,直接通過外網接口本身的IP地址作為轉換目標;
- Smart NAT(智能轉換):通過預留一個公網地址進行NAPT轉換,而其他的公網地址用來進行NAT NO-PAT轉換。其主要用戶平時上網用戶比較少,而申請的公網地址基本可以滿足這些少量用戶進行NAT NO_PAT轉換,但是偶爾會出現上網用戶倍增的情況;
- 三元組NAT:與源IP地址、源端口和協議類型有關的一種轉換,將源IP地址和源端口轉換為固定公網IP地址和端口,能解決一些特殊應用在普通NAT中無法實現的問題。其主要用于外部用戶訪問局域網用戶的一些P2P應用。
本篇博文主要介紹前三種源地址轉換。
華為設備的目標地址轉換技術主要是NAT Server,可以基于IP地址轉換,也可以基于“IP+端口+協議”進行轉換。
在配置華為NAT轉換時,經常會配置黑洞路由來解決路由環路和大量的無效ARP報文,關于其如何產生,大概就是,在有些NAT的轉換方式中,是為了解決內網連接Internet,而映射出了一個公有IP,通過映射后的公網地址訪問互聯網。那么,若此時有人通過internet來訪問這個映射出來的公有IP,就會產生路由環路及大量無效的ARP報文。若要詳細說起來,又是很麻煩,但是解決這兩個問題很簡單,就是配置黑洞路由(將internet主動訪問映射出來的地址的流量指定到空接口null 0)。這樣就不會形成路由環路和產生大量ARP報文的情況。
需要配置黑洞路由的幾種常見的NAT轉換方式,如圖:
華為的防火墻時基于狀態化轉發數據包,針對首個包嚴格執行策略檢查,一旦被策略允許,將生成會話表,而同一個會話的后續包及返回報因為能夠匹配會話表,將直接通過防火墻,不需要進行額外的策略檢查,從而提高了轉發效率。但是在有些情況下,僅僅依懶會話表不能轉發某些特殊應用的流量。例如:FTP服務,其在主動模式下的工作流程圖,如下:
由此可以看出,當客戶端要求主動連接FTP服務器時,一點問題都沒有;但是當FTP服務器主動發起請求時,就會發生FTP連接失敗的情況。華為防火墻就是通過Server-map表來解決類似問題的。Server-map表記錄應用層的關鍵信息,包括目標地址、目標端口和協議烈性,和會話表類似,匹配了Server-map表的數據流也可直接通過防火墻,如圖:
這樣就可以解決FTP服務器主動發起請求時,就不會導致FTP服務連接失敗的情況。
Server-map表和會話表的區別:
- 會話表記錄的是連接信息,包括連接狀態;
- Server-map表記錄的不是當前的連接信息,而是通過分析當前連接的報文后得到的信息。該信息可以解決接下來的數據流通過防火墻的問題。可以將Server-map表的作用理解為提前通過預判來解決將來可能發生的問題;
Server-map表除了解決類似FTP服務的問題外,Server-map表也被應用在NAT技術中。當在防火墻上配置某些類型的NAT后,在防火墻上會生成server-map表,默認生成兩個server-map條目,分別是正向條目和反向條目(Reverse),如圖:
Server-map表在NAT中的作用是:
- 正向條目:攜帶端口信息,用來使Internet用戶訪問內網中的服務器時直接通過server-map表來進行目標地址轉換。
- 反向條目(Reverse):不攜帶端口信息,且目標地址是任意的,用來使服務器可以訪問Internet;
小結:
防火墻接口從收到一個保溫到最終發送出去需要經歷一系列的處理流程,而NAT只是其中一項任務。NAT的配置受到路由即安全策略的影響,所以了解NAT對報文的處理流程對配置NAT有非常大的幫助。NAT對報文的處理流程圖,如下:
NAT處理報文的流程如下:
(1)防火墻收到報文后,首先檢查報文是否匹配Server-map中的條目,如果是,則根據表項轉換報文的目標地址,然后進行步驟(3)處理;否則進行步驟(2)處理。
(2)查找是否存在目標NAT的相關配置,如果是,并且符合NAT條件,則轉換目標地址后進行步驟(3)處理;否則直接進行步驟(3)處理。
(3)根據報文的目標地址查找路由表,如果存在目標路由,則進行步驟(4)處理;否則丟棄報文。
(4)依次匹配安全策略中的規則,如果策略允許報文通過,則進行步驟(5)處理;否則丟棄報文。
(5)查找是否存在源NAT的相關配置及是否符合NAT條件,如果是,則轉換源地址后進行步驟(6)處理;否則直接進行步驟(6)處理。
(6)在發送報文之前創建會話,后續和返回的報文可以直接匹配會話表轉發。
(7)防火墻發送報文。
注意:因為防火墻處理報文的順序是目標地址轉換→安全策略→源地址轉換,所以在NAT環境中,安全策略的源地址應該是源地址轉換之前的地址,目標地址應該是目標地址轉換后的地址。
PC1通過202.106.0.20~21地址與PC2實現通信!
建議:實驗環境盡量不要使用防火墻的G0/0/0接口,該接口默認是管理接口,并且由大量的默認配置。
[FW1]int g1/0/0
[FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24
[FW1-GigabitEthernet1/0/0]undo shutdown
[FW1-GigabitEthernet1/0/0]int g1/0/1
[FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24
[FW1-GigabitEthernet1/0/1]undo shutdown
Info: Interface GigabitEthernet1/0/1 is not shutdown.
[FW1-GigabitEthernet1/0/1]quit
[FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2
[FW1]firewall zone trust
[FW1-zone-trust]add int g1/0/0
[FW1-zone-trust]quit
[FW1]firewall zone untrust
[FW1-zone-untrust]add int g1/0/1
[FW1-zone-untrust]quit //將內外網接口加入防火墻的指定區域
[FW1]security-policy //配置安全策略
[FW1-policy-security]rule name sec_1 //配置規則并制定規則名為sec_1
[FW1-policy-security-rule-sec_1]source-zone trust
[FW1-policy-security-rule-sec_1]destination-zone untrust
[FW1-policy-security-rule-sec_1]source-address 192.168.1.0 24 //指定條件
[FW1-policy-security-rule-sec_1]action permit //指定動作
[FW1-policy-security-rule-sec_1]quit
[FW1-policy-security]quit
[FW1]
[FW1]nat address-group natgroup //配置NAT地址組,指定名稱為natgroup
[FW1-address-group-natgroup]section 0 202.106.0.20 202.106.0.21
//通過section關鍵字指定地址組的起始地址和結束地址
[FW1-address-group-natgroup]mode no-pat local
//指定地址組的模式為no-pat。local關鍵字表示對本區域有效
[FW1-address-group-natgroup]quit
[FW1]
[FW1]nat-policy //配置NAT策略
[FW1-policy-nat]rule name natpolicy
//配置名稱為natpolicy的NAT規則
[FW1-policy-nat-rule-natpolicy]source-zone trust
[FW1-policy-nat-rule-natpolicy]source-address 192.168.1.0 24
[FW1-policy-nat-rule-natpolicy]destination-zone untrust //指定條件
[FW1-policy-nat-rule-natpolicy]action nat address-group natgroup
//指定動作,滿足條件的數據包將依據地址組做NAT NO-PAT方式的源地址轉換
[FW1-policy-nat-rule-natpolicy]quit
[FW1-policy-nat]quit
[FW1]
注意:NAT策略不同于安全策略,安全策略是針對經過的數據流做規則檢查:匹配的數據包或者轉發,或者丟棄,安全策略決定了流量能否通過防火墻;而NAT策略對經過的數據流做規則檢查,匹配的數據包或者做地址轉換,或者不做地址轉換,NAT策略決定了哪些流量需要NAT轉換。
[FW1]ip route-static 202.106.0.20 32 null 0
[FW1]ip route-static 202.106.0.21 32 null 0
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip add 202.106.0.2 24
[AR1-GigabitEthernet0/0/0]undo shutdown
[AR1-GigabitEthernet0/0/0]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 24
[AR1-GigabitEthernet0/0/1]undo shutdown
[AR1-GigabitEthernet0/0/1]quit
[AR1]ip route-static 202.106.0.0 24 202.106.0.1
PC進行驗證:
防火墻進行驗證:
[FW1]display firewall session table
//查看防火墻的會話表
Current Total Sessions : 3
icmp : public --> public 192.168.1.2:13610[202.106.0.20:13610] --> 100.1.1
.2:2048
icmp : public --> public 192.168.1.2:13354[202.106.0.20:13354] --> 100.1.1
.2:2048
icmp : public --> public 192.168.1.2:13098[202.106.0.20:13098] --> 100.1.1
.2:2048
//由此可以看出,內部地址192.168.1.2在經過防火墻之后更換為202.106.0.20地址進行通信
[FW1]display firewall server-map
//查看防火墻Server-map表
Current Total Server-map : 2
Type: No-Pat Reverse, ANY -> 202.106.0.20[192.168.1.2], Zone: untrust
Protocol: ANY, TTL:---, Left-Time:---, Pool: 0, Section: 0
: public
Type: No-Pat, 192.168.1.2[202.106.0.20] -> ANY, Zone: untrust
Protocol: ANY, TTL:360, Left-Time:360, Pool: 0, Section: 0
: public
//可以看出192.168.1.1.2與202.106.0.20形成映射關系
實驗拓補與NAT NO-PAT一樣!(在NAT NO-PAT基礎上也可),為了初學者可以看懂,本人就重新部署網絡設備了!
PC1通過202.106.0.100地址與PC2實現通信!
[FW1]int g1/0/0
[FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24
[FW1-GigabitEthernet1/0/0]int g1/0/1
[FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24
[FW1-GigabitEthernet1/0/1]q
[FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2
//配置防火墻網絡參數及路由
[FW1]firewall zone trust
[FW1-zone-trust]add int g1/0/0
[FW1-zone-trust]quit
[FW1]firewall zone untrust
[FW1-zone-untrust]add int g1/0/1
[FW1-zone-untrust]quit
[FW1]security-policy
[FW1-policy-security]rule name sec_2
[FW1-policy-security-rule-sec_2]source-zone trust
[FW1-policy-security-rule-sec_2]source-address 192.168.1.0 24
[FW1-policy-security-rule-sec_2]destination-zone untrust
[FW1-policy-security-rule-sec_2]action permit
[FW1-policy-security-rule-sec_2]quit
[FW1-policy-security]quit
//配置防火墻安全策略
[FW1]nat address-group natgroup1
[FW1-address-group-natgroup1]section 0 202.106.0.100 202.106.0.100
[FW1-address-group-natgroup1]mode pat
//指定地址組的模式為pat,即NAPT模式
[FW1-address-group-natgroup1]quit
//配置NAT地址組
[FW1]nat-policy
[FW1-policy-nat]rule name natpolicy1
[FW1-policy-nat-rule-natpolicy1]source-address 192.168.1.0 24
[FW1-policy-nat-rule-natpolicy1]source-zone trust
[FW1-policy-nat-rule-natpolicy1]destination-zone untrust
[FW1-policy-nat-rule-natpolicy1]action nat address-group natgroup1
//指定動作,滿足條件的數據包將依據地址組做NAPT方式轉換
[FW1-policy-nat-rule-natpolicy1]quit
[FW1-policy-nat]quit
//配置防火墻NAT策略
[FW1]ip route-static 202.106.0.100 32 null 0
//配置黑洞路由
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 202.106.0.2 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 100.1.1.1 24
[R1-GigabitEthernet0/0/1]quit
[R1]ip route-static 202.106.0.0 24 202.106.0.1
//配置路由器的IP地址及路由
PC1進行驗證:
防火墻進行驗證:
[FW1]display firewall session table //查看防火墻會話表
Current Total Sessions : 2
icmp : public --> public 192.168.1.2:12082[202.106.0.100:2058] --> 100.1.1
.2:2048
icmp : public --> public 192.168.1.2:12338[202.106.0.100:2059] --> 100.1.1
.2:2048
[FW1]display firewall server-map //查看防火墻的Server-map
Current Total Server-map : 0
//NAPT方式進行NAT地址轉換時,并不會生成Server-map表
實驗拓補與NAT NO-PAT一樣!(在NAPT基礎上也可),為了初學者可以看懂,本人就重新部署網絡設備了!
PC1通過防火墻接口地址與PC2實現通信!
[FW1]int g1/0/0
[FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24
[FW1-GigabitEthernet1/0/0]int g1/0/1
[FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24
[FW1-GigabitEthernet1/0/1]q
[FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2
//配置防火墻網絡參數及路由
[FW1]firewall zone trust
[FW1-zone-trust]add int g1/0/0
[FW1-zone-trust]quit
[FW1]firewall zone untrust
[FW1-zone-untrust]add int g1/0/1
[FW1-zone-untrust]quit
[FW1]security-policy
[FW1-policy-security]rule name sec_3
[FW1-policy-security-rule-sec_2]source-zone trust
[FW1-policy-security-rule-sec_2]source-address 192.168.1.0 24
[FW1-policy-security-rule-sec_2]destination-zone untrust
[FW1-policy-security-rule-sec_2]action permit
[FW1-policy-security-rule-sec_2]quit
[FW1-policy-security]quit
//配置防火墻安全策略
[FW1]nat-policy
[FW1-policy-nat]rule name natpolicy2
[FW1-policy-nat-rule-natpolicy2]source-address 192.168.1.0 24
[FW1-policy-nat-rule-natpolicy2]source-zone trust
[FW1-policy-nat-rule-natpolicy2]destination-zone untrust
[FW1-policy-nat-rule-natpolicy2]action nat easy-ip
//配置滿足條件的數據包根據地址組做出接口方式轉換
[FW1-policy-nat-rule-natpolicy2]quit
[FW1-policy-nat]quit
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 202.106.0.2 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 100.1.1.1 24
[R1-GigabitEthernet0/0/1]quit
[R1]ip route-static 202.106.0.0 24 202.106.0.1
//配置路由器的IP地址及路由
PC1進行驗證:
防火墻進行驗證:
[FW1]display firewall session table //查看防火墻會話表
Current Total Sessions : 2
icmp : public --> public 192.168.1.2:12082[202.106.0.1:2073] --> 100.1.1
.2:2048
icmp : public --> public 192.168.1.2:12338[202.106.0.1:2074] --> 100.1.1
.2:2048
[FW1]display firewall server-map //查看防火墻的Server-map
Current Total Server-map : 0
/Easy-IP方式進行NAT地址轉換時,并不會生成Server-map表
互聯網用戶通過202.106.0.20訪問DMZ區域中的FTP服務器。
[FW1]int g1/0/0
[FW1-GigabitEthernet1/0/0]ip add 192.168.1.1 24
[FW1-GigabitEthernet1/0/0]int g1/0/1
[FW1-GigabitEthernet1/0/1]ip add 202.106.0.1 24
[FW1-GigabitEthernet1/0/1]quit
[FW1]ip route-static 0.0.0.0 0.0.0.0 202.106.0.2
//配置防火墻網絡參數及路由
[FW1]firewall zone dmz
[FW1-zone-dmz]add int g1/0/0
[FW1-zone-dmz]quit
[FW1]firewall zone untrust
[FW1-zone-untrust]add int g1/0/1
[FW1-zone-untrust]quit
//將防火墻接口加入相應的區域中
[FW1]security-policy
[FW1-policy-security]rule name sec_4
[FW1-policy-security-rule-sec_4]source-zone untrust
[FW1-policy-security-rule-sec_4]destination-zone dmz
[FW1-policy-security-rule-sec_4]destination-address 192.168.1.0 24
[FW1-policy-security-rule-sec_4]service ftp
//配置條件為ftp協議,這屬于精細NAT-server;如果是粗泛NAT-server,這步可以省略
[FW1-policy-security-rule-sec_4]action permit
[FW1-policy-security-rule-sec_4]quit
[FW1-policy-security]quit
//防火墻配置安全策略
[FW1]firewall interzone dmz untrust
[FW1-interzone-dmz-untrust]detect ftp
[FW1-interzone-dmz-untrust]quit
//.配置FTP應用層檢測,默認已經開啟,可以省略
[FW1]nat server natserver_ftp protocol tcp global 202.106.0.20 21 inside 192.168.1.2 21
//配置NAT server,natserver_ftp為策略名稱,global后為全局地址和端口
<內部地址的端口轉化為外部不同的端口>
<也可添加no-reverse參數,表示不再產生server-map表內容>
<也可以不配置端口信息>
[FW1]ip route-static 202.106.0.20 32 null 0
<配置黑洞路由>
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 202.106.0.2 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 100.1.1.1 24
[R1-GigabitEthernet0/0/1]quit
[R1]ip route-static 202.106.0.20 24 202.106.0.1
//配置路由器接口地址及路由
驗證效果:
[FW1]display firewall session table
Current Total Sessions : 1
ftp : public --> public 100.1.1.2:49160 +-> 202.106.0.20:21[192.168.1.2:21]
[FW1]display firewall server-map
Current Total Server-map : 2
Type: Nat Server, ANY -> 202.106.0.20:21[192.168.1.2:21], Zone:---, protocol
:tcp
: public -> public
Type: Nat Server Reverse, 192.168.1.2[202.106.0.20] -> ANY, Zone:---, protocol:tcp
: public -> public, counter: 1
自行進行驗證!從防火墻的會話表中,可以看出效果!
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。