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 产生的表项略过安全策略检测。