博文目錄
1、什麼是NAT?
2、如何解決源地址轉換環境下的環路和無效ARP問題?
3、什麼是Server-map表?
4、NAT對報文的處理流程
5、開始配置NAT
NAT技術是用來解決當今IP地址資源枯竭的一種技術,同時也是IPv4到IPv6的過渡技術,絕大多數網絡環境中在使用NAT技術。此博文重點是華爲相關的NAT知識上。安全
在內外網的邊界,流量有出、入兩個方向,因此NAT技術包含源地址轉換和目標地址轉換兩類。
通常狀況下,源地址轉換主要用於解決內部局域網計算機訪問Internet的場景;而目標地址轉換主要用於解決Internet用戶訪問局域網服務器的場景,目標地址一般被稱爲服務器地址映射。服務器
華爲支持的源地址轉換方式有以下幾類:網絡
NAT No-PAT:相似於Cisco的動態轉換,只轉換源IP地址,不轉換端口,屬於多對多轉換,不能節約公網IP地址,實際狀況下使用比較少,主要適用於須要上網的用戶較少,而公網地址又足夠的場景下。tcp
NAPT(Network Address and Port Translation網絡地址和端口轉換):相似於Cisco的PAT轉換,NAPT即轉換報文的源地址,又轉換源端口。轉換後的地址不能是外網接口IP地址,屬於多對多或多對一轉換,能夠節約IP地址,使用場景較多,主要適用於內部大量用戶須要上網,同時僅有少數幾個公網IP地址可用的場景下。ide
出接口地址(Easy-IP):因其轉換方式很是簡單,因此也稱爲Easy-IP,和NAPT同樣,既轉換源IP地址,又轉換源端口。區別是出接口地址方式轉換後的地址只能是NAT設備外網接口所配置的IP地址,屬於多對一轉換,能夠節約IP地址,主要適用於沒有額外的公網地址可用,內部上網用戶很是多的場景下,直接經過外網接口自己的IP地址做爲轉換目標。ui
Smart NAT(智能轉換):是NAPT和NAT No-PAT相結合工做,經過預留一個公網地址進行NAPT轉換,而其餘的公網地址用來進行NAT No-PAT轉換。 code
NAT Server:靜態一對一發布,主要用於內部服務器須要對Internet提供服務時使用。server
- 三元組NAT:與源IP地址、源端口和協議類型有關的一種轉換,將源IP地址和源端口轉換爲固定公網IP地址和端口,能解決一些特殊應用在普通NAT中沒法實現的問題。
在配置華爲NAT轉換時,常常會配置黑洞路由以解決路由環路和無效ARP,關於其如何產生,大概就是,在有些NAT的轉換方式中,是爲了解決內網鏈接Internet,而映射出了一個公有IP,那麼,若此時有人經過internet來訪問這個映射出來的公有IP,就會產生這兩種狀況。若要詳細提及來,又是很麻煩,可是解決這兩個問題很簡單,就是配置黑洞路由(將internet主動訪問映射出來的地址的流量指定到空接口null0),關於如何配置,將在事後的配置中展現出來,以下圖所示是否須要配置路由黑洞:接口
NAT Server(粗泛):是NAT Server轉換類型中的一種,表示源地址和轉換後的地址只有簡單的映射關係,沒有涉及端口等映射,如源地址爲192.168.10.5,轉換後的地址爲202.96.10.2,若是作的是NAT Server(粗泛)這種類型的NAT,那麼全部訪問202.96.10.2的數據包都將轉發給192.168.10.5這個地址。ip
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後,在防火牆上會生成server-map表,默認生成兩個server-map條目,分別是正向條目和反向條目(Reverse),以下圖:
此時Server-map表的做用是:
正向條目攜帶端口信息,用來使Internet用戶訪問內網中的服務器時直接經過server-map表來進行目標地址轉換。
防火牆接口從收到一個報文到最終發送出去須要經歷一系列處理流程,而NAT只是其中的一項任務。NAT的配置受到路由及安全策略的影響,因此瞭解NAT對報文的處理流程對配置AT有很是大的幫助。NAT對報文的處理流程以下圖所示。
NAT處理報文的流程以下:
(1)防火牆收到報文後,首先檢查報文是否匹配Server-map中的條目,若是是,則根據表項轉換報文的目標地址,而後進行步驟(3)處理;不然進行步驟(2)處理。
(2)查找是否存在目標NAT的相關配置,若是是,而且符合NAT條件,則轉換目標地址後進行步驟(3)處理;不然直接進行步驟(3)處理。
(3)根據報文的目標地址查找路由表,若是存在目標路由,則進行步驟(4)處理;不然丟棄報文。
(4)依次匹配安全策略中的規則,若是策略容許報文經過,則進行步驟(5)處理;不然丟棄報文。
(5)查找是否存在源NAT的相關配置及是否符合NAT條件,若是是,則轉換源地址後進行步驟(6)處理;不然直接進行步驟(6)處理。
(6)在發送報文以前建立會話,後續和返回的報文能夠直接匹配會話錶轉發。
(7)防火牆發送報文。由於防火牆處理報文的順序是目標地址轉換→安全策略→源地址轉換,因此在NAT環境中,安全策略的源地址應該是源地址轉換以前的地址,目標地址應該是目標地址轉換後的地址。
爲了更好更直接的把效果展現出來,我在這裏搭建一個拓撲圖,模擬192.168.10.0/24網絡爲內網,192.168.200.0/24爲外網,具體操做我會詳細寫在下面,注意(在配置每種NAT以前我會把上一個NAT所配置的策略和地址池清空,爲了更直觀的展示給你們)拓撲圖以下:
1)R1配置IP地址 [R1]int eth0/0/0 #進入接口 [R1-Ethernet0/0/0]ip add 192.168.100.2 24 #接口配置IP地址 [R1-Ethernet0/0/0]int eth0/0/1 #進入接口 [R1-Ethernet0/0/1]ip add 192.168.200.1 24 #接口配置IP地址 [R1-Ethernet0/0/1]quit [R1]ip route-static 192.168.10.0 24 Ethernet 0/0/0 192.168.100.1 #配置去內網靜態
2)防火牆接口配置IP地址及加入區域 [FW1]int g1/0/0 #進入接口 [FW1-GigabitEthernet1/0/0]ip add 192.168.10.1 24 #接口配置IP地址 [FW1-GigabitEthernet1/0/0]undo shutdown #激活接口 [FW1-GigabitEthernet1/0/0]quit [FW1]firewall zone trust #進入trust區域 [FW1-zone-trust]add interface GigabitEthernet 1/0/0 #接口加入trust區域 [FW1-zone-trust]quit [FW1]int g1/0/1 #進入接口 [FW1-GigabitEthernet1/0/1]ip add 192.168.100.1 24 #接口配置IP地址 [FW1-GigabitEthernet1/0/1]undo shutdown #激活接口 [FW1-GigabitEthernet1/0/1]quit [FW1]firewall zone untrust #進入untrust區域 [FW1-zone-untrust]add interface GigabitEthernet 1/0/1 #接口加入untrust區域 [FW1-zone-untrust]quit [FW1]ip route-static 0.0.0.0 0.0.0.0 192.168.100.2 #配置去外網默認
接下來開始配置NAT
1)配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name nat #安全策略名字爲nat [FW1-policy-security-rule-nat]source-zone trust #定義源區域爲trust [FW1-policy-security-rule-nat]destination-zone untrust #定義目標區域untrust [FW1-policy-security-rule-nat]source-address 192.168.10.0 24 #定義轉換源網絡 [FW1-policy-security-rule-nat]action permit #容許流量經過 [FW1-policy-security-rule-nat]quit [FW1-policy-security]quit
2)配置NAT No-PAT地址池組 [FW1]nat address-group natno-pat #地址池組的名字爲natno-pat [FW1-address-group-natno-pat]section 0 192.168.100.3 192.168.100.4 #地址池起始和結束地址 [FW1-address-group-natno-pat]mode no-pat local #地址池爲nat no-pat提供服務 [FW1-address-group-natno-pat]quit
3)配置NAT No-PAT策略 [FW1]nat-policy #配置NATT策略 [FW1-policy-nat]rule name natpolicy #nat策略的名字爲natpolicy [FW1-policy-nat-rule-natpolicy]source-address 192.168.10.0 24 #定義轉換源網絡 [FW1-policy-nat-rule-natpolicy]source-zone trust #定義轉換源區域 [FW1-policy-nat-rule-natpolicy]destination-zone untrust #定義轉換目標區域 [FW1-policy-nat-rule-natpolicy]action nat address-group natno-pat #定義的轉換源和地址池創建映射關係 [FW1-policy-nat-rule-natpolicy]quit [FW1-policy-nat]quit
4)配置路由黑洞 [FW1]ip route-static 192.168.100.3 32 null 0 [FW1]ip route-static 192.168.100.4 32 null 0
5)驗證,用內網ping外網,而後查看會話表
1) 配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name NAPT #安全策略名字爲NAPT [FW1-policy-security-rule-NAPT]source-zone trust 定義源區域trust [FW1-policy-security-rule-NAPT]destination-zone untrust #定義目標區域untrust [FW1-policy-security-rule-NAPT]source-address 192.168.10.0 24 #定義轉換源網絡 [FW1-policy-security-rule-NAPT]action permit #容許流量經過 [FW1-policy-security-rule-NAPT]quit [FW1-policy-security]quit
2)配置NAPT地址池 [FW1]nat address-group NAPT #地址池的名字爲NAPT [FW1-address-group-napt]section 0 192.168.100.5 192.168.100.5 #地址池範圍 [FW1-address-group-napt]mode pat #地址池爲NAPT提供服務 [FW1-address-group-napt]quit
3)配置NAPT策略 [FW1]nat-policy #pe配置NAT策略 [FW1-policy-nat]rule name pat #NAPT策略名字爲pat [FW1-policy-nat-rule-pat]source-zone trust #定義轉換源區域 [FW1-policy-nat-rule-pat]destination-zone untrust #定義轉換目標區域 [FW1-policy-nat-rule-pat]source-address 192.168.10.0 24 #定義轉換源網絡 [FW1-policy-nat-rule-pat]action nat address-group NAPT #定義的轉換源和地址池創建映射關係 [FW1-policy-nat-rule-pat]quit [FW1-policy-nat]quit
4)配置路由黑洞 [FW1]ip route-static 192.168.100.5 32 null 0
5)驗證,ping外網查看會話表
1)配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name easyip #安全策略的名字爲easyip [FW1-policy-security-rule-easyip]source-zone trust #定義源區域trust [FW1-policy-security-rule-easyip]destination-zone untrust #定義目標區域untrust [FW1-policy-security-rule-easyip]source-address 192.168.10.0 24 #定義轉換源網絡 [FW1-policy-security-rule-easyip]action permit #容許流量經過 [FW1-policy-security-rule-easyip]quit [FW1-policy-security]quit
2)配置NAT策略 [FW1]nat-policy #配置NAT策略 [FW1-policy-nat]rule name easyip #NAT策略的名字是easyip [FW1-policy-nat-rule-easyip]source-zone trust #定義轉換源區域 [FW1-policy-nat-rule-easyip]destination-zone untrust #定義轉換目標區域 [FW1-policy-nat-rule-easyip]source-address 192.168.10.0 24 #定義轉換源網絡 [FW1-policy-nat-rule-easyip]action nat easy-ip #調用防火牆外網接口ip地址 [FW1-policy-nat-rule-easyip]quit [FW1-policy-nat]quit
3)驗證,ping外網查看會話表
1)配置安全策略 [FW1]security-policy #配置安全策略 [FW1-policy-security]rule name NATserver #安全策略名字爲NATserver [FW1-policy-security-rule-NATserver]source-zone untrust #指定訪問源爲外部區域 [FW1-policy-security-rule-NATserver]destination-zone trust #指定訪問目標爲內部區域 [FW1-policy-security-rule-NATserver]destination-address 192.168.10.0 24#指定訪問網絡爲內部地址 [FW1-policy-security-rule-NATserver]action permit #容許外網訪問 [FW1-policy-security-rule-NATserver]quit [FW1-policy-security]quit
2)配置應用層檢查 [FW1]firewall interzone trust untrust #j檢查區域爲內部和外部區域 [FW1-interzone-trust-untrust]detect ftp #檢查ftp協議 [FW1-interzone-trust-untrust]quit
3)配置FTP的NAT server [FW1]nat server ftp protocol tcp global 192.168.100.30 21 inside 192.168.10.10 2 1
4)驗證,ping內網查看會話表,ftp訪問內網也能夠,因爲個人環境問題就不訪問ftp了
博客到此結束!