學習防火墻之前,對路由交換應要有一定的認識
- 源NAT基本原理
- 1.1.NAT No-PAT
- 1.2.NAPT
- 1.3.出接口地址方式(Easy IP)
- 1.4.Smart NAT
- 1.5.三元組 NAT
- 1.6.多出口場景下的源NAT
- 總結
- 延伸
——————————————————————————————————————————————————
源NAT基本原理
源NAT技術對IP報文的源地址進行轉換,將私網IP轉換成公網IP,大大減少了公網IP的消耗。
當私網用戶訪問Internet報文到達防火墻時,防火墻將報文的源IP地址由私網地址轉換為公網地址,當回程報文返回至防火墻,防火墻再將報文的目的地址由公網IP轉換為私網地址。
華為防火墻支持的源NAT轉換方式:
每一種NAT轉換方式都曾在IP網絡中走過秀、亮過相,都有自己的特色,但也有自己的不足。
——————————————————————————————————————————————————
1.1.NAT No-PAT
No-PAT表示不進行端口轉換,只轉換IP地址,所以也稱為:一對一地址轉換。
下面介紹No-PAT方式過程,假設防火墻和WEB服務器之間路由可達。。
配置NAT地址池和NAT策略
配置地址池
nat address-group GW 1mode no-pat global local和global參數,global生成的Server-map表項不包含安全域參數,不受域間限制,local包含安全區域參數,受域間限制section 0 210.1.1.5 210.1.1.10 地址池有5個公網IProute enable 用來開啟NAT地址池中地址的OPR路由下發功能配置NAT
nat-policy
rule name source_natsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action source-nat address-group GW 配置NAT策略規則的動作,表示源NAT地址轉換,引用地址池
配置完NAT,還需要配置安全策略和黑洞路由。
安全策略和NAT策略二者各司其職,安全策略控制報文是否能通過防火墻,而NAT策略作用是對報文地址進行轉換。因此配置NAT的時候需要配置安全策略允許報文通過。
由于防火墻對報文進行安全策略處理發生在進行NAT策略處理之前,所以如果要針對源地址設置安全策略,源地址應該是進行NAT轉換之前的私網地址。
security-policyrule name sourcenatsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action permit
配置黑洞路由,為了避免產生環路,在防火墻上針對地址池中的公網IP地址配置黑洞路由。
有兩種方式:
ip route-static方式
ip route-static 210.1.1.5 255.255.255.255 NULL0
ip route-static 210.1.1.6 255.255.255.255 NULL0
ip route-static 210.1.1.7 255.255.255.255 NULL0
ip route-static 210.1.1.8 255.255.255.255 NULL0
ip route-static 210.1.1.9 255.255.255.255 NULL0
ip route-static 210.1.1.10 255.255.255.255 NULL0
route enable 方式
nat address-group GW 1route enable
當NAT地址池地址與出接口地址不在同一網段時,必須配置黑洞路由;當NAT地址池地址與出接口地址在同一網段時,建議配置黑洞路由。
當地址池地址與出接口地址一致時,不會產生路由環路,不需配置黑洞路由。產生的原因后續會介紹。
在配置策略后,可以訪問210.1.1.2。
查看會話表,會話表中兩個私網地址都分別轉換了2個不同的公網IP,而端口沒有轉換,使用隨機端口。
NAT No-PAT方式也會生成Server-map表,而且生成了正向和反向兩張表。
這里生成的正向Server-map表,Type:No-Pat,作用是保證特定私網用戶訪問Internet快速轉換地址。在老化時間范圍內,直接命中該表,提高轉換效率。同理,Type:No-Pat Reverse,反向主動訪問私網用戶報文,也命中反向Server-map表直接進行地址轉換。
命中server-map表后,還需要檢查安全策略是否通過。Server-map表在NAT里叫alg功能。在多通道協議里叫ASPF。
總結:如果私網地址過多大于地址池的話,需要等待地址池地址釋放后,其他私網地址用戶才可以訪問WEB服務器,在No-Pat轉換方式中,一個公網IP地址不能同時被大于多個私網用戶使用。并沒有起到節省IP的作用。
——————————————————————————————————————————————————
1.2.NAPT
NAPT表示網絡地址和端口轉換,即同時對IP地址和端口進行轉換,也可稱為 PAT。
NAPT 是一種應用最廣泛的地址轉換方式,可以利用少量的公網 IP 地址來滿足大量私網用戶訪問Internet的需求。
NAPT方式和NAT No-PAT在配置上區別僅在于:NAPT方式NAT策略在引用NAT地址池時,不配置關鍵字no-pat。
和上案例其他配置一樣。
配置NAT地址池和NAT策略
配置地址池
nat address-group GW 1mode pat section 0 210.1.1.5 210.1.1.10 route enable 配置NAT
nat-policy
rule name source_natsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action source-nat address-group GW 配置安全策略
security-policyrule name sourcenatsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action permit
會話表可以看出,兩個私網地址分別轉換公網地址,同時端口也轉換為新的端口。在地址池選擇地址的時候,設備是隨機選擇。
再次觀察,192.168.20.2第一條,轉換的IP210.1.1.6,端口為2051。192.168.10.2第六條,轉換IP210.1.1.6,端口為2052。
私網用戶共用一個公網IP,但是端口不一樣。也就不必擔心轉換沖突的問題。
NAPT方式不會產生server-map表項,與NAT No-Pat不同。
——————————————————————————————————————————————————
1.3.出接口地址方式(Easy IP)
出接口地址方式Easy-IP:是利用出接口的公網IP地址作為NAT 轉換后的地址,也同時轉換地址和端口,一個公網IP地址可以同時被多個私網用戶使用。
出接口方式比較特殊,如果防火墻公網接口通過動態獲取IP時,想用一個公網IP地址來進行轉換,不能在地址池中配置固定地址。因為公網IP是可變的,此時使用出接口方式,即使出接口獲取IP發生變化,防火墻也只會按照公網IP地址進行轉換。
Easy IP,不需要配置NAT地址池,也無需配置路由黑洞。只需要在NAT策略中指定出接口即可。
為了方便,用210.1.1.2服務器開啟DHCP來模擬防火墻G1/0/1端口自動獲取地址。
配置防火墻G1/0/1接口為自動獲取地址
interface GigabitEthernet1/0/1
ip address dhcp-alloc
服務器上已經看到地址下發了。
交換機上也看到獲取的地址。210.1.1.10/24
配置NAT策略
nat-policyrule name easynatsource-zone trustsource-zone untrustegress-interface GigabitEthernet1/0/1 出接口方式source-address 192.168.0.0 mask 255.255.0.0action source-nat easy-ipsecurity-policyrule name sourcenatsource-zone trustdestination-zone untrustsource-address 192.168.0.0 16action permit
兩個私網用戶IP地址已經轉換為接口的公網IP地址,同時端口也轉換為新的端口。
和NAPT一樣,Easy-IP方式不會生成Server-map表。
——————————————————————————————————————————————————
1.4.Smart NAT
前面我們介紹過NATNO-PAT方式,一對一地址轉換,NAT地址池中的公網IP地址被私網用戶占用后,其他私網用戶就無法再使用該公網IP地址,在這種情況下如何使其他私網用戶也能訪問Internet呢?
Smart NAT方式也叫做聰明的NAT,它融合了NAT No-PAT和NAPT方式特點。
其實我們可以把Smart NAT 方式理解成是對NPAT功能的增強,它克服了NO-PAT的缺點:只能讓有限的私網用戶訪問Intermet,當私網用戶數量大于地址池中公網IP地址數量時后面的私網用戶將無法訪問Intermet,只能等待公網IP地址被釋放。
使用SmartNAT方式后,即使某一時刻私網用戶數量激增Smart NAT也留有后手,即預留一個公網IP地址進行NAPT方式的地址轉換這樣就可以滿足大量新增的私網用戶的需求。
配置NAT地址池
nat address-group GW 1mode no-pat localsmart-nopat 210.1.1.10section 0 210.1.1.5 210.1.1.9route enable配置NAT策略
nat-policyrule name smartsource-zone trustdestination-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group GW配置安全策略
security-policyrule name smartsource-zone trustdestination-zone trustsource-address 192.168.0.0 mask 255.255.0.0action permit
就不過多演示,明白意思就行。只有公網IP地址被NAT No-pat轉換用盡后,才會進行NATP轉換。
——————————————————————————————————————————————————
1.5.三元組 NAT
前面介紹了4種源NAT,其中NAPT和Easy-IP應用最廣泛,不但解決地址短缺,還隱藏內部IP。但是NAT技術與文件共享、語音通信、視頻傳輸等方面的P2P技術不能很好的共存。當P2P業務遇到NAT的時候,產生的不是完美的NAT-P2P,而是,你可能無法下載最新影視資源,無法視頻聊天等。
為了解決共存問題,需要一種新的轉換方式,即三元組NAT,先看看P2P業務交互過程。
————————————————————
PC1和PC2是兩臺運行P2P業務的客戶端,運行時首先和P2P服務器進行交互(登錄、認證等操作),P2P服務器會記錄客戶端的地址和端口,如果PC1位于內部網絡,防火墻會對PC1訪問服務器的報文進行NAPT方式轉換,這樣P2P服務器記錄的是經過轉換后的公網地址和端口。當PC2需要下載文件時,服務器會將擁有該文件的客戶端地址和端口發送給PC2(如PC1的IP和端口),然后PC2會向PC1發送請求,從PC1上下載文件。
過程看起來很順暢,但對于P2P業務來說,存在兩個問題。
1、為了保持聯系,PC1會定期向P2P服務器發送報文,經過NAPT轉換后,端口會動態變化,并不是固定的。這樣P2P服務器記錄的PC1地址和端口信息也要經常刷新,會影響P2P業務正常運行。
2、更重要的是,根據轉發原理,只有P2P服務器返回給PC1的報文命中會話表才能通過防火墻,其他主機如PC2不能通過轉換后的地址和端口來主動訪問PC1,默認情況,防火墻安全策略不允許這一類訪問報文通過。
三元組NAT方式可以完美解決。
1、對外呈現端口一致性
PC1訪問P2P服務器后,在一段時間內,PC1再次訪問P2P服務器或者訪問internet其他主機時,防火墻都會將PC1的端口轉換成相同的端口。這樣就保證了PC1所呈現的端口一致性,不會動態變化。
2、支持外網主動訪問
無論PC1是否訪問過PC2,只要PC2獲取到PC1經過NAT轉換的IP和端口后,就可以主動向該地址和端口發起訪問。防火墻及時沒有配置相應的安全策略,也允許此類報文通過。
正是由于三元組NAT的這兩個特點,使得P2P業務可以正常運行。
對于華為USG6000系列防火墻來說,可以通過配置ASPF來保證P2P業務的正常運行。新式的設備應該支持的越來越多。
三元組NAT方式配置如下:(三元組NAT不能配置黑洞路由,否則會影響業務)
配置NAT地址池
nat address-group GW 1mode full-cone localsection 0 210.1.1.5 210.1.1.6配置NAT策略
nat-policyrule name NATsource-zone trustsource-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group GW配置安全策略rule name NATsource-zone trustsource-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action permit
連續訪問2次服務器,HTTP協議。
在一時間內,轉換的端口都是固定的。
查看MAP表。由于是閑置了會,抓的,和上面的端口就有差別了。同一時間的通信,端口都是固定的。
從表中可以看出,三元組NAT生成了兩條Server-map表項(FullCone Src),和目的(FullCone Des)。作用如下:
源Server-map表項(FullCone Src):
老化之前,PC1訪問Untrust區域內任意主機ANY,NAT轉換后的地址和端口都是210.1.1.6:61440,端口不會變化,這樣就保證了PC1對外所呈現的端口一致性。
目的(FullCone Des)
表項老化之前,Untrust區域內的任意主機ANY都可以通過210.1.1.6:53248端口來訪問PC1的:138端口,這樣就保證了Internet上的P2P客戶端可以主動訪問PC1。
由此可知,三元組NAT方式通過源和目的Server-Map表項解決了P2P業務與NAT地址轉換共存的問題。三元組在轉換時,僅和源IP地址、源端口和協議類型這個3個元素有關,故稱三元組。
————————————————————
大家又可以說,三元組NAT生成的Server-map表項不就是ASPF功能生成的Server-map表項那樣,報文命中表項之后就不受安全策略控制了?其實還暗藏玄機,防火墻針對三元組NAT還支持端點無關過濾功能。
命令:firewall endpoint-independent filter enable
命令中: endpoint-independent 原意是:不關心對端地址和端口轉換模式。表示一種NAT轉換模式,其實可以看成三元組NAT方式另一種叫法。
endpoint-independent 使用此命令代表三元組NAT方式下控制報文是否進行安全策略檢查。
開啟后,報文只要命中Server-map就可以通過防火墻,不受安全策略控制。關閉后,就要配置相應的策略允許報文通過。默認情況下,防火墻是開啟了端點無關過濾功能。所以說internet上的P2P客戶端可以主動訪問內部網絡的PC1。
——————————————————————————————————————————————————
1.6.多出口場景下的源NAT
各種各樣的源NAT都見識了吧,看似各種源地址轉換問題都能一網打盡了,但實際上吧這些NAT理論應用在現實網絡中很快就會出現告急。在多出口網絡中,源NAT該何去何從?
首先,我們以防火墻通過兩個出口連接Internet為例,探討源NAT的配置方法,如圖:某企業在內部網絡的出口處部署了防火墻作為出口網關,通過ISP1和ISP2兩條鏈路連接到Internet,企業內部網絡中的PC有訪問Internet的需求。
該場景中,防火墻面臨主要問題是在轉發內部網絡訪問Internet報文如何進行出口選路,本應該從ISP1發出的卻從ISP2發出,可能會導致報文繞路到達目的地。
選路方式有很多種,如果根據報文目的地址進行選路,可以配置兩條缺省路由,如果根據源地址進行選路,還可以配置策略路由。這些都不是目前的重點,后續對出口選路會詳細的介紹。對于源NAT來說,無非就是報文從ISP1出去或者從ISP2出去,不管走那條路,只要在發出去之前把報文私網地址轉換成相應的公網地址,源NAT作用就完成了。
我們會把防火墻ISP1和ISP2兩個接口分別加入到不同的區域,然后基于內部網絡所在的安全區配置源NAT策略。
下面給出配置:假設ISP1,給的公網地址是:210.1.1.5·····210.1.1.6。ISP2,給的公網地址是:110.1.1.5·····110.1.1.6。
配置區域加入端口
firewall zone name ISP1 set priority 20add interface GigabitEthernet1/0/1
#
firewall zone name ISP2set priority 21add interface GigabitEthernet1/0/0配置地址池
nat address-group ISP1 2section 0 210.1.1.5 210.1.1.6route enable
nat address-group ISP2 3section 0 110.1.1.5 110.1.1.6route enable基于不同域間關系配置兩條NAT策略
nat-policyrule name ISP1source-zone trustdestination-zone ISP1source-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP1rule name ISP2source-zone trustdestination-zone ISP2source-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP2配置安全策略
security-policydefault action permitrule name ISP1source-zone trustdestination-zone ISP1action permitrule name ISP2source-zone trustdestination-zone ISP2action permit配置默認路由
ip route-static 0.0.0.0 0.0.0.0 210.1.1.2
ip route-static 0.0.0.0 0.0.0.0 110.1.1.2
在這種情況下,分別有兩個區域,配置默認路由如果是等價的,防火墻還會選擇隨機的轉換。除非指定默認路由的優先級或在rule Nmae ISP的時候精確匹配網段。
我們把防火墻接口規劃成1個區域。
firewall zone untrustadd interface GigabitEthernet1/0/1add interface GigabitEthernet1/0/0nat-policyrule name ISP1source-zone trustdestination-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP1rule name ISP2source-zone trustdestination-zone untrustsource-address 192.168.0.0 mask 255.255.0.0action source-nat address-group ISP2security-policydefault action permitrule name NATsource-zone trustdestination-zone untrustaction permitip route-static 0.0.0.0 0.0.0.0 210.1.1.2
ip route-static 0.0.0.0 0.0.0.0 110.1.1.2
經過好幾次老化,一直會從ISP1走。
如果我們把防火墻與ISP1和ISP2兩個接口加入同一安全區域,無論報文走ISP1還是ISP2,安全域間關系都是Trust到Untrust,基于相同安全域間關系配置NAT策略,就無法區分兩條鏈路。由于ruleISP1匹配順序高于ISP2,此時內部訪問外部都匹配ISP1,不會再向下繼續匹配ISP2。
兩種配置關系,兩種不同的效果。
——————————————————————————————————————————————————
總結
NAT No-PAT:一對一,不轉換端口,生成Server-map表,需要配置路由黑洞。
NAPT:多對一,多對多。轉換端口,不生成server-map表,需要配置路由黑洞。
Easy-IP:多對一,轉換端口,不生成server-map表,無需配置路由黑洞。
Smart NAT:一對一,多對一(針對預留地址),預留地址會轉換端口,僅NAT No-PAT方式生成Server-map表,需要配置路由黑洞。
三元組NAT:多對一,多對多,轉換端口,生成Server-map表,不必配置路由黑洞。
——————————————————————————————————————————————————
延伸
三元組NAT還有一個學名:Full Cone(全圓錐)。(Full Cone)全圓錐是4種NAT端口映射方式的一種,
其他3種分為:(Restricted Cone)受限圓錐、(Port Restricted Cone)端口受限圓錐和(Symmetric)對稱型。
介紹下Full Cone(全圓錐)和(Symmetric)對稱型。由于RFC3489已廢棄,故不對(Restricted Cone)受限圓錐、(Port Restricted Cone)端口受限圓錐進行介紹。
Full Cone(全圓錐):內網主機進行NAT轉換后的地址和端口在一段時間內保持不變,不會因為目的地址不同而不同,所以內網主機可以使用轉換后相同三元組訪問不同的外網主機,外網主機也都可以通過該三元組訪問內網主機。就是前面說的P2P業務。
(Symmetric)對稱型:內網主機根據不同的目的地址進行NAT轉換,NAT轉換后的地址和端口一般是不相同的,由于對不同外網主機呈現不同三元組,所以只有特定的外網主機的特定端口才能進入內網,即需要限定目標主機和端口。對稱型NAT也稱為五元組NAT,NAPT方式即五元組NAT。