學習防火墻之前,對路由交換應要有一定的認識
- NAT Server
- 1.1.基本原理
- 1.2.多出口場景下的NAT Server
- 1.3.源進源出
——————————————————————————————————————————————————
NAT Server
一般對用戶提供一些可訪問的服務,這些服務器的地址一般都是私網地址,公網用戶是無法直接訪問私網地址。源NAT是對私網用戶訪問公網的報文的源地址進行轉換,而服務器對公網提供服務時,是公網用戶向私網發起訪問,方向正好反過來了。于是,NAT轉換的目標也由報文的源地址變成目的地址。針對服務器地址轉換,稱為:NAT Server(服務器映射)。
——————————————————————————————————————————————————
1.1.基本原理
結合下圖所示來看防火墻上的NAT Server是如何實現。
NAT Server也需要用到公網IP地址,與源NAT不同的是,NAT Server的公網IP地址不需要放到NAT地址池這個容器中,直接使用即可。這里假設公網IP:210.1.1.1。
配置的過程如下:
[USG6000V2]nat server global 210.1.1.1 inside 192.168.100.1
按照上述配置會將服務器上所有的服務項都發布到公網,會帶來嚴重風險,華為防火墻支持配置指定協議的NAT Server,只將服務器上特定的服務項對公網發布,可以按照如下方式,將服務器上的80端口映射為9980端口供公網用戶使用。
nat server protocol tcp global 210.1.1.1 9980 inside 192.168.100.1 80
這里將80端口轉換成9980端口,而不是轉換成80端口,是因為一些地區的運營商默認會阻斷80、8000、8080端口業務,而導致業務失敗。
NAT Server配置完,也會生成server-map,但是是靜態的,不需要報文來觸發,只有配置被刪除,server-map才會清除。
Server-map表項和之前一樣,都存在正向和反向。不論是正向和反向,都僅只是實現地址轉換。而不像ASPF的Server-map表項打開一個可以繞過安全策略檢查的通道。所以無論公網用戶要訪問私網服務器還是私網服務器主動訪問公網時,都需要配置安全策略。
這里有個經典的問題:NAT Server場景下,為了讓公網用戶能夠訪問私網服務器,配置安全策略時,策略的目的地址是服務器的私網地址還是公網地址?
當公網用戶通過210.1.1.1:9980訪問私網服務器時,防火墻收到報文的首包,首先查找匹配到Server-map表項,將報文的目的地址和端口轉換為192.168.100.1:80。然后根據目的地址查找路由找到出接口。根據入接口和出接口所處的區域,判斷報文在那兩個安全區域流動,進行區域安全策略檢查。
因此,配置安全策略,策略的目的地址應配置為服務器私網地址,而不是服務器對外映射的公網地址。
安全策略配置:
security-policyrule name Nat_Sersource-zone untrustdestination-zone trustdestination-address 192.168.100.0 mask 255.255.255.0service httpaction permit
報文通過安全檢查后,會建立如下會話表,并將報文轉發到私網服務器。
之后服務器對公網用戶的請求做出響應,響應到達防火墻后匹配上面的會話表,防火墻將報文的源地址和源端口轉換為210.1.1.1:9980,而后發送至公網。公網用戶和私網服務器交互后續報文。防火墻都會直接根據會話表對其進行地址和端口轉換,而不會再去查找Server-map表項。
配置黑洞路由
NAT Server也需要配置黑洞路由
ip route-static 210.1.1.1 32 NULL 0
——————————————————————————————————————————————————
1.2.多出口場景下的NAT Server
與源NAT相同,NAT Server也面臨多出口問題。如圖:通過ISP1和ISP2兩條鏈路連接internet,將私網服務器提供給Internet上的用戶訪問。
防火墻作為出口網關,雙出口、雙ISP接入公網時,NAT Server配置通常需要一分為二,讓一個私網服務器向兩個ISP發布兩個不同的公網地址供公網用戶訪問。一分為二方法有兩種:
方法1:將接入不同ISP的公網接口規劃在不同安全區域中,配置NAT Server時,帶上Zone參數,使同一個服務器向不同安全區域發布不同的公網地址。
配置過程,假設私網服務器對ISP1發布公網地址:110.1.1.1,對ISP2發布的公網地址是210.1.1.1。
interface GigabitEthernet1/0/1 ip address 110.1.1.1 255.255.255.0
interface GigabitEthernet1/0/0ip address 210.1.1.1 255.255.255.0
interface GigabitEthernet1/0/2ip address 192.168.10.254 255.255.255.0firewall zone trustadd interface GigabitEthernet1/0/2firewall zone name ISP1set priority 10add interface GigabitEthernet1/0/1
firewall zone name ISP2 set priority 20add interface GigabitEthernet1/0/0配置帶有zone參數的NAT Servernat server zone ISP1 protocol tcp global 110.1.1.1 9980 inside 192.168.10.2 80nat server zone ISP2 protocol tcp global 220.1.1.1 9980 inside 192.168.10.2 80基于不同域間關系配置兩條安全策略
security-policyrule name ISP1source-zone ISP1destination-zone trustdestination-address 192.168.10.2 mask 255.255.255.255action permitrule name ISP2source-zone ISP2destination-zone trustdestination-address 192.168.10.2 mask 255.255.255.255action permit黑洞路由
ip route-static 110.1.1.1 255.255.255.255 NULL0
ip route-static 210.1.1.1 255.255.255.255 NULL0
配置完成后,防火墻會生成如下Server-map表項
從Server-map表項可以看出,正向和反向表項都已生成,Internet用戶通過正向Server-map表項就可以訪問私網服務器。私網服務器通過反向Server-map也可以主動訪問Internet。
推薦在網絡規劃時,把防火墻與ISP1和ISP2兩個接口分別加入到不同的安全區域,然后規劃帶有ZONE參數的NAT SERVER功能。
如果兩個接口在同一區域如Untrust,并且現實情況不允許調整,那么還有另外一種配置方法。
方法二:配置NAT Server時候帶上No-revers參數,使同一個服務器向外發布兩個不同的公網地址。
為了保證可以正常配置NAT Server功能,必須使用no-reverse參數。
nat server 0 protocol tcp global 110.1.1.1 9980 inside 192.168.10.2 www no-reverse
nat server 1 protocol tcp global 210.1.1.1 9980 inside 192.168.10.2 www no-reverse
配置完成后,防火墻生成如下Server-map表項
從會話看出,只生成了正向表項,Internet上的公網用戶通過正向表項可以訪問私網服務器。但是如果私網服務器想要主動訪問Internet,因為沒有了反向表項,就必須在Trunst------Untrust域間配置源NAT策略。
如果在同一區域,不帶No-reverse參數直接配置兩條NAT SERVER命令,壓根就不能同時下發。
思考下,假如這兩條命令能同時下發,分兩次下發。
第一條,反向表,將報文源地址192.168.10.2轉換為110.1.1.1,第二條,反向表,將源地址192.168.10.2,轉換為210.1.1.1,如果同時下發后,防火墻既可以將報文源地址由192.168.10.2轉換為110.1.1.1,又可以將源地址192.168.10.2,轉換為210.1.1.1,于是,防護墻凌亂了。這就是命令不帶No-reverse參數同時下發出現的問題。如果帶上no-reverse參數,就不會生成反向Server-map表項。
總結:
多出口下,兩個接口分別配置兩個區域,配置NAT Server時,配置zone參數,生成靜態server-map表項,包含正向和反向,能區分反向的區域。
多出口下,兩個接口同時配置一個區域,配置NAT Server時,配置no-reverse參數,生成靜態server-map表項,只包含正向,無法區分反向的區域。
——————————————————————————————————————————————————
1.3.源進源出
上面介紹了NAT Server一分為二的配置方法,根據防火墻與ISP1和ISP2相連的2個接口是否加入到不同的安全區域,選擇帶有ZONE參數或帶有No-Reverse參數來配置NAT Server。除此之外,雙出口環境中,還需要考慮兩個ISP中的公網用戶使用哪個公網地址訪問私網服務器的問題。
例如:ISP1網絡中的公網用戶如果通過防火墻發布了ISP2的公網地址來訪問私網服務器,或者ISP1的公網用戶訪問服務器后,從ISP2回包的,基本就屬于繞路了。而且有時候兩個ISP之間由于利益沖突可能會存在無法互通的情況,就會導致訪問過程很慢或干脆不通。
如第一種情況,要求我們向兩個ISP中的公網用戶告知公網地址時,避免兩個ISP中的公網用戶使用非本ISP的公網地址訪問私網服務器。即對于ISP1的用戶,就讓其使用防火墻發布給ISP1的公網地址來訪問私網服務器,對于ISP2的用戶,就讓使用防火墻發布的ISP2公網地址來訪問。
第二種情況,就是上圖情況,ISP1中的公網用戶通過防火墻發布給ISP1的公網地址訪問私網服務器,報文從防火墻G1/0/1進入,私網服務器回應報文到達防火墻后,雖然匹配了會話表并進行地址轉換,但還是要根據目的地之查找路由來確定出接口。如果防火墻沒有配置到該公網用戶的明細路由,只配置了缺省路由,就可能會導致回應報文從連接ISP2的鏈路G1/0/0接口發出,該報文在ISP2的網絡中傳輸時兇多吉少,有可能會變慢,也可能干脆就不能回到公網用戶處,訪問就會中斷。
為了解決這個問題,可以在防火墻配置明細路由,讓防火墻嚴格按照ISP1和ISP2各自的公網地址來選路。但ISP1和ISP2的公網地址數量很大,配置起來不太現實。為此,防火墻提供了源進源回(或源進源出)功能,即請求報文從某條路徑進入,響應報文依然沿著同樣的路徑返回,而不用查找路由表來確定接口,保證了報文從一個接口進出。
源進源回功能在接口上配置,防火墻連接ISP1和ISP2的兩個接口上都需要配置。假設,ISP1提供的下一跳接口是:110.1.1.254,ISP2提供的下一跳接口:210.1.1.254
interface GigabitEthernet1/0/1
redirect-reverse next-hop 110.1.1.254
interface GigabitEthernet1/0/0
redirect-reverse next-hop 210.1.1.254
其他根據版本不同所使用的命令:
reverse-route nexthop 110.1.1.254gateway 110.1.1.254
reverse-route enable