一、NAT技術原理
1.1 爲什麼需要NAT
1、IPv4枯竭;
2、延長IPv4的技術不斷出現,NAT的高效使用是其一;
3、IPv6技術普及不高。
爲了節省共有地址,私有地址需要與公有地址之間做轉換,因爲私有地址在Internet無路由,用戶可以在私有網絡自由使用,私有網絡的網段如下:
A類:10.0.0.1-10.255.255.254;
B類:172.16.0.1-172.31.255.254;
C類:192.168.0.1-192.168.255.254;
1.2 NAT技術原理
網絡地址轉換NAT,是將IP數據包包頭中的IP地址轉換爲另一個IP地址,當IP數據包通過路由器或者安全網關時,路由器或者安全網關會把IP數據包的源IP地址或目的IP地址進行轉換,在實際應用中,NAT主要用於私有網絡與外部網絡的互通。
Hillstone設備的NAT功能將內部網絡主機的IP地址和端口替換成Hillstone設備外部網絡的地址和端口,將Hillsone設備的外部網絡地址和端口轉換爲內部網絡主機的IP地址和端口,也就是“私有地址+端口”與“共有地址+端口”之間的轉換;
Hillstone設備通過創建並執行NAT規則來實現NAT功能,NAT規則有兩類,分別爲源NAT規則(SNAT Rule)和目的NAT規則(DNAT Rule),SNAT轉換源IP地址,從而隱藏內部IP地址或者分享有限的IP地址,DNAT轉換目的IP地址,通常是將受Hillstone設備保護的內部服務器(如WWW服務器或者SMTP服務器)的IP地址轉換成公網IP地址。
1.3 NAT的分類
源地址轉換(SNAT):靜態地址轉換(static-ip)、動態地址轉換(dynamic-ip)、動態端口(dynamic-port);
目的地址轉換(DNAT):端口映射、IP映射。
二、源NAT(訪問外網)
2.1 源NAT
SNAT支持的轉換類型爲:靜態NAT(static-ip)、動態地址轉換(dynamic-ip)、動態端口(dynamic-port);
StoneOS支持三種轉換模式:static、dynamic-ip、dynamic-port,具體描述如下:
--static:靜態源NAT轉換即一對一的轉換,該模式要求被轉換到的地址條目(trans-to-address)包含的IP地址數與流量的源地址的地址條目(src-address)包含的IP地址數相同;
--dynamic-ip:動態源NAT轉換即多對多的轉換,該模式將源地址轉換到指定的IP地址,每一個源地址會被映射到唯一的IP地址做轉換,直到指定地址全部被佔用;(相當於多個一對一)
--dynamic-port:即PAT,多個源地址將被轉換成指定IP地址條目中的一個地址,如果不使用sticky,地址條目中的第一個地址將會被首先使用,當第一個地址的端口資源被用盡,第二個地址將會被使用,如果使用了sticky(黏性),每一個源IP產生的所有會話將會被映射到同一個固定的IP地址。(IP地址會保留一些資源爲和這個IP地址已經建立連接的PC提供服務,防止IP地址變化導致一些服務無法正常使用)track用於檢測轉換到公網以後能否正常轉發數據,如果鏈路斷掉,則使數據不再轉發到此鏈路。
2.2 源NAT配置
SNAT配置(支持vroute和NAT兩種模式):
snatrule [id id] [before id | after id | top] from src-address to dst-address [eif egress-interface] trans-to {addressbook trans-to-address | eif-ip} mode {static | dynamicip | dynamicport [sticky]} [log] [disable] [ track track-name] [description description]
配置舉例:
--id id 爲SNAT規則指定ID號
--before id | after id | top 指定規則所在位置
--from src-address to dst-address [eif egress-interface 指定該規則中流量應符合的條件
--eif egress-interface 指定流量的出接口
--addressbook trans-to-address | eif-ip 指定NAT轉換地址
--mode {static | dynamicip | dynamicport [sticky 指定轉換模式
查看SNAT配置信息和資源佔用
show snat [ id id ] [ resource ] [ vrouter vrouter-name ]
NAT規則基於VRouter創建並生效,用戶可以在VRouter配置模式下,創建SNAT/DNAT規則、修改SNAT/DNAT規則排列以及刪除SNAT/DNAT規則等,進入VRouter配置模式,在全局配置模式下使用以下命令:
ip vrouter vrouter-name (vrouter-name指定VRouter的名稱)
當缺省VR即trust-vr配置NAT,也可以使用NAT模式(在全局配置模式下,使用nat命令進入NAT配置模式),當SNAT的轉換模式爲dynamicport時,用戶可以開啓擴展PAT端口池功能,擴展NAT轉換後的網絡端口資源,默認情況下,該功能是關閉的,開啓擴展PAT端口池功能,在全局模式下使用以下命令:expanded-port-pool。
WebUI示意圖:
源地址即內網的地址,目的地址不是NAT接口處的公網地址,而是要訪問的公網地址,通常用any表示,除非已經知道要訪問的公網IP地址具體的數字
三、目的NAT(向外網發佈內網服務器)
3.1 目的NAT
通常是將受安全網關保護的內部服務器(如WWW服務器或者SMTP服務器)的地址轉換爲公網IP地址,通常用於通過IP映射或端口映射對外發布服務器,DNAT有端口映射和IP映射兩種模式,
端口映射:該模式爲一對多映射,將公網某一IP的不同端口,映射到內網不同IP的不同端口,解決公網IP有限時多個服務器需對外發布的需求;
IP映射:該模式爲一對一的映射,端口一一對應不做轉換,通常用於公網IP足夠時服務器對外發布。
如果需要做雙向的IP映射,比如內網郵件服務器映射到公網,需要分別添加SNAT和DNAT規則。
如果需要以端口映射方式發佈服務器,需要選擇被訪問的相應服務,並指定映射到IP的某端口,如果以IP映射方式發佈服務器,服務處保持默認配置“any”即可。
高級的DNAT有源地址的配置
DNAT支持負載均衡,只需要轉換爲地址爲多個服務器IP即可。
3.2 配置DNAT
dnatrule [id id] [before id | after id | top] from src-address to dst-address [service service-name] trans-to trans-to-address [port port] [load-balance] [track-tcp port] [track-ping] [log] [group group-id] [disable] [description description]
查看配置結果
show dnat rule [id] [vrouter vrouter-name]
WebUI示意圖:
目的地址爲NAT處的公網地址,映射到地址爲內網的地址
3.3 高級DNAT配置
WebUI示意圖:
源地址可以選擇是否全部允許通過或排除某些地址,目的地址是NAT設備上的公網IP地址,轉換地址是轉換爲內網的地址。
四、NAT匹配順序和相關策略
NAT配置方式中,也有BNAT,BNAT是指靜態NAT一對一功能,它比SNAT和DNAT匹配優先級高,如果配置了BNAT,不會匹配SNAT和DNAT(同一個NAT轉換)
4.1 NAT規則
NAT分爲源NAT和目的NAT,源NAT由多條源NAT規則組成,目的NAT由多條目的NAT組成,當定義多條NAT規則時,需要根據需求移動NAT規則位置。
4.2 NAT規則匹配順序
每條NAT都有唯一一個ID號,流量進入安全網關時,安全網關對NAT規則進行順序查找,然後按照查找到的相匹配的第一條規則對流量的源IP做NAT轉換,ID的大小順序不是規則匹配順序,使用show snat/dnat命令列出的規則順序纔是規則匹配順序,通過移動已有的NAT規則從而改變規則的排列順序。
注意:定義防火牆策略時,源和目的地址要使用NAT前的地址,DNAT時,源地址使用發起方的地址,多用any,目的地址使用NAT處的地址(內網的地址是NAT後得知的)
4.3 調整NAT規則位置
通過WebUI調整NAT規則位置,在NAT規則編輯頁面選擇<更多配置>,示意圖如下:
調整規則的排列順序,在NAT配置模式下使用以下命令:
snatrule move id { before id | after id | top | bottom}
dnatrule move id { before id | after id | top | bottom}
刪除規則,在NAT配置模式下使用以下命令:
no snatrule id id
no dnatrule id id
4.3 配置DNAT對應訪問策略
目的NAT做好以後,還需要創建相應的訪問策略,纔可以實現到發佈服務器的訪問,策略目的地址需要制定服務器所映射的虛地址,通常是公網IP地址
以下爲WebUI示意圖:
五、NAT應用場景
5.1 多出口NAT應用場景
1、配置多出口路由;
2、配置多個出口NAT規則;
3、安全策略
5.2 出口多地址NAT應用場景
1、接口占用一個地址
2、網關佔用一個地址
3、在配置NAT時,除網關外其他地址均可直接使用,無需配置第二IP地址;
4、當一個接口租用多段子網地址時,部分情況下需要配置第二IP地址;
回顧:
1、通常配置內網用戶上網採用哪種NAT方式?
SNAT動態端口
2、何種環境需使用基於端口的DNAT而非基於IP DNAT?
公網地址不夠用
3、對外發布服務器時,訪問策略目的IP如何配置?
NAT處的IP地址