1、NAT 基礎概念
- 核心作用:私網地址無法在 Internet 上直接使用和分配,NAT 通過將私有地址與公有地址及端口進行轉換,實現私網與公網的通信。
- 轉換示例:
- 內網用戶(10.1.1.1)訪問外網 FTP Server(123.3.2.3)時,源 IP 會被替換為公有地址(123.3.2.1)。
- 外網 FTP Server(123.3.2.3)回應內網用戶時,目的 IP 會從公有地址(123.3.2.1)替換為私網地址(10.1.1.1)。
- 分類:
- 源 NAT:使內部用戶能夠訪問外部網絡,包括地址池方式、出接口地址方式(Easy IP)等。
- 服務器映射:讓外部用戶可以訪問私網服務器,如靜態映射。
- 地址池特性:當地址池中存在多個公網 IP 地址時,進行 NAT 轉換時使用的公網地址是隨機的。
2、源 NAT 詳細解析
NAT策略
NAT策略是由 條件+動作組成。
源NAT轉換 --- 必須引用NAT地址池
不進行NAT轉換
源 NAT 類型及特性
源 NAT 類型 | 私網 IP 和公網 IP 的數量對應關系 | 是否轉換端口 | 適用場景 | 配置要點 |
---|---|---|---|---|
NAT No-PAT | 一對一 | 否 | 需要固定公網 IP 的場景,如特定服務器對外提供服務 | 創建地址池時指定模式為 no-pat,配置 NAT 策略引用該地址池 |
NAPT | 多對一、多對多 | 是 | 大量私網用戶共享少量公網 IP 訪問外部網絡 | 地址池模式選擇為 pat,其余配置與 no-pat 類似 |
出接口地址方式(easy-ip) | 多對一 | 是 | 公網接口 IP 地址動態獲取的情況 | 在 NAT 策略的動作中指定為 source-nat easy-ip |
Smart NAT(僅 USG9000 系列支持) | 一對一(預留 IP 做多對一轉換) | 否(預留 IP 做端口轉換) | 防止用戶數量激增導致地址不足 | 創建地址池并設定保留地址,需通過命令行配置 smart-nopat |
三元組 NAT(僅 USG9000 系列支持) | 多對一、多對多 | 是 | 適用于 P2P 應用 | 地址池模式設為 full-cone global,支持端口一致性和外網主動訪問 |
配置示例及說明
NAT No-PAT 配置:該方式代表不進行端口轉換,只進行IP地址轉換
需求:FW上源NAT,模式為no-pat
將公網IP202.10.1.10--->加入地址池1
將公網IP202.10.2.10--->加入地址池2
創建 NAT 地址池:
[FW]nat address-group nat_address_1
[FW-address-group-nat_address_1]mode no-pat global
[FW-address-group-nat_address_1]section 202.10.1.10
創建 NAT 策略:
[FW]nat-policy
[FW-policy-nat]rule name policy-1
[FW-policy-nat-rule-policy-1]description to_server
[FW-policy-nat-rule-policy-1]source-zone trust
[FW-policy-nat-rule-policy-1]destination-zone Untrust_1
[FW-policy-nat-rule-policy-1]source-address 192.168.1.0 24
[FW-policy-nat-rule-policy-1]destination-address 202.10.1.1 32
[FW-policy-nat-rule-policy-1]action source-nat address-group nat_address_1
防火墻檢測流量是否符合安全策略的操作,是發生在檢測源NAT策略之前,所以,如果要針對源IP 設置NAT策略,那么應該做源NAT轉換前的IP地址 --- 先進行安全策略檢測,在進行源NAT轉換。
特性:會產生正反兩條 server-map 表項,在表項未老化前,外部設備在安全策略放行的情況下可訪問內部設備,且命中 server-map 表后仍需安全策略允許。
NAPT 配置:與 no-pat 配置類似,僅在地址池模式選擇時為 pat,且不會產生 server-map 表項。
easy-ip 配置:
[FW]nat-policy
rule name policy_1
source-zone trust
destination-zone Untrust_1
source-address 192.168.1.0 mask 255.255.255.0
destination-address 202.10.1.1 mask 255.255.255.255
action source-nat easy-ip
?特殊現象及解決
- 現象:短時間內訪問多個不同目標時,使用相同的 NAT 地址。
- 原因:NAT No-PAT 會產生正反兩條 server-map 表項,導致該現象。
- 示例:
[EW]display firewall server-map 2025-08-0207:03:28.160 Current Total Server-map:2 Type:No-Pat Reverse,ANY->202.10.1.10[192.168.1.1],Zone:--- Protocol:ANY,TTL:---,Left-Time:---,Pool:0,Section:0 Vpn:public Type:No-Pat,192.168.1.1[202.10.1.10]->ANY,Zone:--- Protocol:ANY,TTL:360,Left-Time:358,Pool:0,Section:0 Vpn: public
Smart NAT
聰明的NAT 邏輯:假設該方式下,NAT地址池存在N個IP地址,其中1個會被指定為預留地址,另外N-1個地址 構成地址族1,進行NO-PAT轉換,而預留的1個進行NAPT轉換,優先使用no-pat轉換方式,只有該地 址被使用完,才會進行NAPT轉換,一般被用于防止用戶數量激增的情況。
[FW]nat address-group 1
[FW-address-group-1]mode no-pat global
[FW-address-group-1]section 202.10.1.10 202.10.1.10
[FW-address-group-1]smart-nopat 202.10.1.20 ---設定保留地址,該命令只能通過命令行配置,
無法通過web界面配置
[FW-address-group-1]route enable
rule name policysource-zone trustdestination-zone Untrust_1source-address 192.168.1.0 mask 255.255.255.0destination-address 202.10.1.1 mask 255.255.255.255action source-nat address-group 1
三元組NAT
設備在進行NAT轉換時,需要關注的是源IP、目的IP、源端口、目的端口以及協議五個參數。 三元組NAT僅關注源IP、源端口和協議。 三元組NAT是針對于P2P應用。(peer to peer)
P2P客戶端首先會在P2P服務端進行交互,留存自己的信息,IP+端口。當某個客戶端想要找另一個 客戶進行文件下載時,服務器會將對端客戶的信息下放給該客戶端,兩個客戶端直接進行通訊。
存在防火墻時,對P2P業務的影響: 1、PC1沒有主動訪問PC2,不存在會話表和server-map表項,則PC2正常情況下無法主動訪問到PC1 2、因為P2P業務需要周期性去向服務器注冊信息,而經過防火墻NAT后,信息刷新,會影響P2P業務正常運行
三元組NAT解決上述問題:
對外呈現端口一致性:
PC1一旦訪問了P2P服務器,則在一段時間內,PC1再次訪問P2P服務器或其他業務時,防火墻 會將端口轉換為與第一次相同的端口。
支持外網主動訪問:
無論PC1是否主動訪問過PC2,只要PC2獲取了PC1經過NAT轉換后的地址和端口,都可以主動 訪問。
且防火墻上即使沒有安全策略,也允許此類報文的通過。
邏輯:通過利用類似no-pat機制和server-map表項來實現。并非是真正的no-pat機制。
[FW]nat address-group aa
[FW-address-group-aa]mode full-cone global --- 三元組NAT方式
[FW-address-group-aa]section 202.10.1.10
[FW-address-group-aa]route enable
三元組NAT分為兩種:
1、本地三元組:server-map表項中包含zone,只有該區域中的主機可以訪問內部主機
2、全局三元組:server-map表項中不包含zone,任何區域中的主機可以訪問內部主機
默認需要受到安全策略控制,但是該功能可調整。
[FW]firewall endpoint-independent filter enable ? --- 開啟端點無關過濾功能 --- 開啟后,此時的server-map表項不再受到安全策略控制
多出口場景下的源NAT技術
為什么出口要分部在不同的安全區域?
將防火墻上連接不同ISP的出接口加入到不同的安全區域,然后基于不同的安全區域關系來配置不同 的源NAT策略。
3、目的 NAT(NAT Server)
概念及特點
- 是一種特殊的目的 NAT,用于實現外部用戶對私網服務器的訪問,需要公網 IP 地址。
- 建議:不要將防火墻的公網接口 IP 地址配置為 NAT Server 的公網 IP 地址,若必須使用,需指定協議和端口避免沖突。
配置示例
[FW]nat server global 1.1.1.1 inside 10.1.1.1
nat server 0 protocol tcp global 1.1.1.1 9980 inside 10.1.1.1 www
- 配置后會生成靜態的 server-map 表項,正向用于公網訪問私網轉換,反向用于內部服務器主動訪問公網轉換。
NAT Server配置完成后,會生成server-map表項。不過與源NAT不同,NAT Server產生的server map表項是靜態的。即該表項一致會存在。
正向 --- 任何公網PC訪問,都會進行轉換
反向 --- 當內部服務器主動訪問公網時,進行轉換,不需要單獨為該服務器配置源NAT策略
配置目的NAT的安全策略時,策略的目的地址應配置為服務器的私網地址(即轉換后的地址),端口也 相同邏輯 --- 原因是因為FW處理過程中,目的NAT處于安全策略匹配之前匹配。
當外部PC發送的流量成功經過FW,并產生會話表信息后,服務器的影響報文會直接匹配會話表進行 轉發,不會去查找server-map表項。
nat server 0 protocol tcp global 1.1.1.10 9980 inside 10.1.1.1 www unr-route---unr-route參數代表UNR路由,即配置黑洞路由信息
允許服務器使用公網地址上網 選項,出于安全考慮,如果服務器無主動訪問外網需求,則不建議開啟。
nat server 0 protocol tcp global 1.1.1.10 9980 inside 10.1.1.1 www no-reverse
unr-routeno-reverse --- 代表不允許服務器使用公網地址上網
安全策略配置
- 策略的目的地址應配置為服務器的私網地址(轉換后的地址),因為 FW 處理過程中,目的 NAT 處于安全策略匹配之前。
- 示例:
名稱 0 描述 服務器映射(0)引入 源安全區域 any 目的安全區域 trust 目的地址地區 10.1.1.1 服務 TCP:src-port0-65535,dst-port80 動作 允許
多出口場景下的 NAT Server
在防火墻作為出口網關,雙出口,雙ISP接入公網時,NAT Server需要一分為二。讓一個私網服務器 向兩個ISP發布兩個不同的公網地址。
- 方法一:將不同 ISP 的公網接口劃分到不同安全區域,配置 NAT Server 時攜帶 zone 參數。
[FW]nat server zone Untrust_1 protocol tcp global 11.0.0.10 9980 inside 192.168.1.1 80 [FW]nat server zone Untrust_2 protocol tcp global 12.0.0.10 9980 inside 192.168.1.1 80
- 方法二:將不同 ISP 的公網接口劃分到相同安全區域,配置時關閉內部服務器使用公網地址上網功能。
[FW]nat server protocol tcp global 12.0.0.10 9980 inside 192.168.1.1 80 no-reverse [FW]nat server protocol tcp global 11.0.0.10 9980 inside 192.168.1.1 80 no-reverse
一定一定注意,報文是否會出現來回路徑不一致問題 --- 該問題是所有的多出口場景都需要考慮的問題。
為了確保流量走向來回路徑一致,故防火墻增加了源進源回功能。即請求報文從某條鏈路進入,響 應報文依然沿著某條路徑返回,而不再需要查找路由表來確定出接口
- 路徑一致性:開啟源進源回功能,確保請求和響應報文路徑一致。
[FW-GigabitEthernet1/0/1]redirect-reverse next-hop 11.0.0.2 [FW-GigabitEthernet1/0/1]gateway 11.0.0.2 [FW-GigabitEthernet1/0/2]redirect-reverse next-hop 12.0.0.2 [FW-GigabitEthernet1/0/2]gateway 12.0.0.2
4、靜態目的 NAT
模式及配置
靜態 1 對 1(地址到地址模式):
創建目的 NAT 地址池:
[FW]destination-nat address-group nat01
[FW-dnat-address-group-nat01]section 192.168.1.2 192.168.1.3
創建 NAT 策略:
[FW]nat-policy [FW-policy-nat]rule name policy_nat01 [FW-policy-nat-rule-policy_nat01]source-zone untrust [FW-policy-nat-rule-policy_nat01]destination-address range 12.0.0.10 12.0.0.11 [FW-policy-nat-rule-policy_nat01]action destination-nat static address-to-address address-group nat01
- 公網地址和私網地址的綁定關系是按照順序執行的
- 其他模式:
- 靜態 1 對 1(端口到端口模式):將公網端口與私網端口一對一映射。
- 靜態 1 對多(端口到地址模式):通過公網地址的不同端口映射不同私網地址的同一端口。
- 靜態多對 1(地址到端口模式):通過不同公網地址的相同端口映射內網相同地址的不同端口。
特點
- 不會產生 server-map 表項,公網與私網地址的綁定關系按順序執行。
5、雙向 NAT
概念
- 同時改變報文的源 IP 和目的 IP,由源 NAT+NAT Server 共同實現,針對同一條數據流。
分類及配置
- 域間 NAT:
- NAT Inbound(外網訪問內網):源 NAT 與 NAT Server 配合。
- NAT Outbound(內網訪問外網):直接使用 NAT Outbound。
- 域內 NAT:源地址和目的地址屬于相同安全區域,需域內 NAT 和 NAT Server 配合。
示例(NAT Inbound + NAT Server)
安全策略?
security-policy rule name untrust_to_trust
source-zone untrust
destination-zone trust
destination-address 192.168.1.1 mask 255.255.255.255
service http
service https
action permit
?NAT Server:
[FW]nat server protocol tcp global 202.1.1.10 9980 inside 192.168.1.1 80
?源 NAT:創建地址池 nat01(IP 為 192.168.1.10),并配置 NAT 策略引用該地址池。
處理機制
- 防火墻先進行目的 NAT,然后進行安全策略判斷,最后進行源 NAT 處理。
該場景中,明明目的NAT已經可以完成任務,為何還需要使用雙向NAT機制。
秘密在于私網服務器對回應報文的處理方式上。
如果是雙向NAT,則服務器會直接發送ARP報文來查詢目的地,完成轉發,此時防火墻代替回復ARP報文,將連接私網服務器的接口的MAC地址發送給服務器。
而這樣的好處就是服務器不再需要網關。 --- >前提:私網服務器必須與防火墻處于相同網段。
6、域內 NAT + NAT Server
適用場景
- 服務器和訪問終端處于防火墻相同接口下,內網用戶通過公網域名訪問內部服務器。
問題及解決
- 問題:來回路徑不一致,去時經過 NAT 轉換,回程未經過,導致報文被丟棄。
- 解決思路:將源 IP 地址替換為公網 IP 地址,使服務器將報文發送給 FW,再由 FW 恢復目的 IP 后轉發給 Client。
7、NAT 相關重要機制
- 安全策略與 NAT 策略順序:防火墻先檢測安全策略,再進行源 NAT 轉換;目的 NAT 在安全策略匹配之前進行。
- 黑洞路由:部分 NAT 類型(如 No-PAT、Smart NAT)建議開啟,防止路由環路,通過
route enable
命令配置。 - server-map 表項:不同 NAT 類型產生的 server-map 表項特性不同,如 NAT No-PAT 產生的表項略過 NAT 策略匹配,ASPF 產生的表項略過安全策略檢測。