第204篇:NAT 在防火墙上的实现差异
关键词
防火墙 NAT、源 NAT、目的 NAT、NAT Server、Easy IP、Smart NAT、NAT No-PAT、ASPF NAT
一、防火墙 NAT 概述
1.1 防火墙 NAT 的定位
防火墙上的 NAT 与普通路由器 NAT 有显著差异:
路由器 NAT: 防火墙 NAT:
单纯的地址转换 地址转换 + 安全策略联动
无状态检测 状态检测 + 会话跟踪
ACL 控制 安全策略 + NAT 策略分离
不感知应用层 支持 ASPF + 应用层 NAT
防火墙 NAT 的核心优势在于:
1. NAT 与安全策略协同工作
2. 具备完整的会话跟踪
3. 支持应用层协议检测(ALG)
4. 支持 NAT 日志留痕(等保合规)
1.2 NAT 分类
防火墙 NAT 按方向分为两大类:
源 NAT(Source NAT):
转换源 IP 地址,通常用于内网用户访问外网
将私网 IP 转换为公网 IP
目的 NAT(Destination NAT):
转换目的 IP 地址,通常用于外网用户访问内网服务器
将公网 IP 转换为私网服务器 IP
NAT Server(服务器映射):
目的 NAT 的一种特殊形式
将公网 IP:端口映射到内网服务器
二、源 NAT 的实现
2.1 源 NAT 类型
| 类型 | 说明 | 适用场景 |
|---|---|---|
| Easy IP | 直接使用接口的公网 IP 做 NAT | 小型企业、ADSL 拨号 |
| NAT 地址池 | 从公网地址池中分配地址 | 大中型企业 |
| Smart NAT | 一个 IP 做 NAT,其余做 No-PAT | 需要保留源端口场景 |
| NAT No-PAT | 不做端口转换,只做 IP 转换 | 专线互连、VPN |
| 三元组 NAT | 转换源 IP + 源端口 + 协议 | 安全要求高的场景 |
2.2 Easy IP 配置
# Easy IP:直接使用接口地址做 NAT
nat-policy
rule name Easy_IP_NAT
source-zone trust
destination-zone untrust
source-address 10.0.0.0 mask 255.255.255.0
action source-nat easy-ip # 使用出接口地址
!
# 流量示例:
# 内网 10.0.0.1:12345 → 8.8.8.8:80
# 转换后 202.1.1.1:2048 → 8.8.8.8:80(出接口地址 = 202.1.1.1)
2.3 NAT 地址池配置
# NAT 地址池
nat address-group 1
mode pat # 端口地址转换模式(默认)
section 0 202.1.1.10 202.1.1.100 # 公网地址池
!
nat-policy
rule name Pool_NAT
source-zone trust
destination-zone untrust
source-address 10.0.0.0 mask 255.255.255.0
action source-nat address-group 1
!
# PAT(Port Address Translation)模式:
# 多个内网用户共享公网 IP,通过端口区分
# 10.0.0.1:12345 → 202.1.1.10:2048
# 10.0.0.2:12345 → 202.1.1.10:2049
2.4 NAT No-PAT 配置
# No-PAT:不做端口转换,只做 IP 地址映射
nat address-group 2
mode no-pat # 不做端口转换
section 0 203.0.113.10 203.0.113.20
!
nat-policy
rule name No_PAT_NAT
source-zone trust
destination-zone dmz
source-address 10.0.0.0 mask 255.255.255.0
action source-nat address-group 2 no-pat
!
# 用于企业专线互连等不需要端口转换的场景
三、目的 NAT(服务器映射)
3.1 NAT Server 配置
# 将公网 IP 映射到内网 Web 服务器
nat server www_server protocol tcp global 202.1.1.1 80 inside 10.0.1.100 80
nat server ssh_server protocol tcp global 202.1.1.1 2222 inside 10.0.1.200 22
# 或者配置地址池映射(一对一映射)
nat server mail_server global 202.1.1.2 inside 10.0.1.101
3.2 多端口映射示例
# 一个公网 IP 映射多个内网服务
nat server Web_Server protocol tcp global 202.1.1.1 80 inside 10.0.1.10 80
nat server Web_SSL protocol tcp global 202.1.1.1 443 inside 10.0.1.10 443
nat server FTP_Server protocol tcp global 202.1.1.1 21 inside 10.0.1.20 21
nat server RDP_Server protocol tcp global 202.1.1.1 3389 inside 10.0.1.30 3389
# 访问方式:
# http://202.1.1.1 → 10.0.1.10:80
# https://202.1.1.1 → 10.0.1.10:443
# ftp://202.1.1.1 → 10.0.1.20:21
# RDP: 202.1.1.1:3389 → 10.0.1.30:3389
3.3 安全策略与 NAT Server 的协同
# NAT Server 配置了映射后,仍需放行安全策略
security-policy
rule name Internet_to_Server
source-zone untrust
destination-zone dmz
destination-address 10.0.1.10 mask 255.255.255.255
service http
service https
action permit
!
# 注意:安全策略中目的地址填内网服务器真实 IP(而非公网 IP)
四、防火墙 NAT 的特殊处理
4.1 NAT + ASPF 应用层处理
防火墙 NAT 与 ASPF 联动处理应用层协议:
FTP 的 NAT 处理:
数据流:
客户端 防火墙 FTP 服务器
│ │ │
│ PORT 192,168,1,1,10,20 │ │
│───────────────────────────→│ │
│ │ 修改 PORT 命令中的私网地址 │
│ │ 为公网地址 + 开放临时端口 │
│ │ │
│ PORT 202,1,1,1,8,0 │ │
│ │─────────────────────────────→│
│ │ │
│ │ 服务器连接 202.1.1.1:2048 │
│ │ 防火墙翻译为 10.0.0.1:2562 │
│ │ │
│ ←数据通道建立成功→ │
ALG(Application Level Gateway)功能:
# 启用应用层 NAT 检测
firewall interzone trust untrust
detect ftp # FTP 的 NAT ALG
detect sip # SIP 的 NAT ALG
detect h323 # H.323 的 NAT ALG (视频会议)
detect dns # DNS 的 NAT ALG(NAT 环境下 DNS 查询)
4.2 NAT 会话表与日志
# 查看 NAT 会话
display firewall session table
TCP 10.0.0.1:12345 ←→ 202.1.1.1:2048
→ 8.8.8.8:80
NAT: Source NAT applied
# NAT 日志(Syslog 格式)
<134>1 2024-03-15T10:00:00Z FW NAT - -
[NAT@32473 src="10.0.0.1" sport="12345"
nat-src="202.1.1.1" nat-sport="2048"
dst="8.8.8.8" dport="80"
protocol="6" action="create"]
# 启用 NAT 日志
firewall log nat-session enable
firewall log nat-session aging-time 300 # 日志老化时间
4.3 NAT 与路由的交互
NAT 对路由的影响:
NAT 前:
dest=8.8.8.8 → 查路由表 → 出接口 = GigabitEthernet0/0/1(Untrust)
NAT 后:
src=10.0.0.1 → NAT 转换为 202.1.1.1 → 查路由表 → 出接口 = G0/0/1
需要注意的是:
NAT 策略通常在路由查询之前或之后执行(取决于设备架构)
华为防火墙:先查路由,再做 NAT
→ 确保路由可达,否则 NAT 不会执行
五、NAT 部署最佳实践
5.1 选择 NAT 策略的建议
场景 推荐方案
────────────────────────────────────────────
员工上网 Easy IP(小型)/ 地址池(大型)
对外服务器 NAT Server + 目的 NAT
企业互联专线 NAT No-PAT(保留源 IP)
NAT 日志留存 PAT + 地址池(便于溯源)
等保合规 NAT 日志 + 会话日志
公网 IP 不足 PAT + 端口复用
5.2 NAT 优化配置
# NAT 端口块分配(适用于大规模 PAT)
nat address-group 1
mode pat # PAT 模式
port-block-start 1024 # 起始端口
port-block-size 1024 # 每用户端口块
!
# 单用户并发会话限制
nat-policy
rule name User_Limit
source-zone trust
destination-zone untrust
action source-nat address-group 1
session-limit per-source-ip 5000 # 单 IP 最多 5000 会话
六、总结
| 知识点 | 核心要点 |
|---|---|
| 源 NAT | 转换源 IP,Easy IP / 地址池 / No-PAT |
| 目的 NAT | 转换目的 IP,NAT Server 映射内网服务器 |
| NAT Server | 公网 IP:端口 → 内网服务器 IP:端口 |
| ASPF NAT | ALG 处理 FTP/SIP 应用层地址 |
| 日志要求 | 等保合规需要完整的 NAT 日志 |
| 性能考量 | 防火墙 NAT 与安全策略联动,性能优于路由器 NAT |
七、思考
- Easy IP 和 NAT 地址池有什么区别?各适合什么场景?
- NAT No-PAT 模式什么时候需要使用?它和 PAT 的区别是什么?
- NAT Server 配置后,安全策略中应该填写公网 IP 还是内网 IP 来放行流量?
- FTP 的 NAT ALG 解决了什么问题?没有它会发生什么?
- 在等保合规场景下,NAT 日志为什么重要?需要记录哪些信息?
下篇预告:第205篇《防火墙双机热备:主备与负载分担》——防火墙高可用方案详解,包括 VRRP、HRP、会话同步等技术。