一、项目背景与拓扑总览(Easy IP/No-PAT/NAPT/ 黑洞路由)
本项目模拟企业内网用户访问公网的场景,通过华为防火墙实现不同方式的源 NAT 转换,解决内网地址无法直接在公网路由的问题。核心拓扑如下:
- Trust 区域(内网):PC1(10.1.1.1/24)、PC2(10.1.1.2/24)等用户主机,网关为防火墙 GE1/0/1(10.1.1.254/24)
- Untrust 区域(公网):Server1(1.1.1.1/24)模拟公网服务器,防火墙出口 GE1/0/2(1.1.1.254/24)
- 核心目标:让内网主机通过不同 NAT 方式,成功访问公网 Server1,并理解各 NAT 的适用场景与差异。




二、前置基础配置(所有任务通用"黑洞路由"除外)
1. 终端基础配置(PC/Server)
表格
| 设备 | IP 地址 | 子网掩码 | 网关 |
|---|---|---|---|
| PC1 | 10.1.1.1 | 255.255.255.0 | 10.1.1.254 |
| PC2 | 10.1.1.2 | 255.255.255.0 | 10.1.1.254 |
| Server1 | 1.1.1.1 | 255.255.255.0 | 1.1.1.254 |
2. 防火墙基础配置
(1)接口 IP 配置
# 配置Trust区域接口
interface GigabitEthernet 1/0/1
undo shutdown
ip address 10.1.1.254 255.255.255.0
# 配置Untrust区域接口
interface GigabitEthernet 1/0/2
undo shutdown
ip address 1.1.1.254 255.255.255.0
(2)安全区域划分
bash
运行
# 将接口加入对应安全区域
firewall zone trust
add interface GigabitEthernet 1/0/1
firewall zone untrust
add interface GigabitEthernet 1/0/2
(3)安全策略(允许 Trust→Untrust 访问)
bash
运行
security-policy
rule name Tru->Untru
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
action permit
三、任务 1:Easy IP 方式访问外网
1. 原理说明
Easy IP 是一种特殊的 NAPT,直接使用防火墙出接口的公网 IP 作为转换后的源 IP,无需额外配置地址池,适合小型企业场景。

2. 配置命令
bash
运行
# 配置Easy IP源NAT策略
nat-policy
rule name tru->untru
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
action source-nat easy-ip
3. 验证与结果
- 在内网 PC 上 ping 1.1.1.1,可正常通
- 查看防火墙会话表,可见 PC1 和 PC2 的源 IP 都被转换为出接口 IP
1.1.1.254,端口号不同,实现多用户复用同一公网 IP。



四、任务 2:No-PAT 方式访问外网
1. 原理说明
No-PAT(静态 NAT)为内网主机一对一分配公网地址池中的 IP,不进行端口转换,适合需要固定公网 IP 的场景,但地址池地址数量不能少于内网用户数。

2. 配置命令
bash
运行
# 1. 配置NAT地址池(No-PAT模式)
nat address-group group1 0
mode no-pat global
section 0 1.1.1.10 1.1.1.11
# 2. 配置源NAT策略
nat-policy
rule name no_pat
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
action source-nat address-group group1
3. 验证与结果
- PC1 ping Server1,会话表中 PC1 的源 IP 被转换为地址池中的
1.1.1.10 - PC2 ping Server1,源 IP 被转换为
1.1.1.11,端口号未发生变化,实现一对一地址转换。 - 当地址池地址耗尽时,后续内网用户将无法访问公网,这也是 No-PAT 的局限性。




五、任务 3:NAPT 方式访问外网
1. 原理说明
NAPT(端口地址转换)通过 "IP + 端口号" 的方式,让多个内网用户复用少量公网 IP,是企业最常用的 NAT 方式,兼顾地址利用率和访问需求。

2. 配置命令
bash
运行
# 1. 配置NAT地址池(NAPT模式,默认即该模式)
nat address-group group1 0
mode pat
route enable
section 0 1.1.1.10 1.1.1.11
# 2. 配置源NAT策略
nat-policy
rule name Tru->Untru
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
action source-nat address-group group1
3. 验证与结果
- 多台内网 PC 同时 ping Server1,会话表中可见:
- 不同 PC 的源 IP 被转换为地址池中的公网 IP(如 1.1.1.10/11)
- 同一公网 IP 下通过不同端口号区分不同内网用户,实现 "多对一" 复用
- 即使地址池地址数量少于内网用户数,也能通过端口复用支持更多用户访问。



六、任务 4:黑洞路由配置(解决 NAT 环路问题)
1. 问题背景
当公网用户访问 NAT 地址池中的公网 IP 时,防火墙会将报文回发到内网,导致路由环路和资源浪费,因此需要配置黑洞路由。

2. 配置命令
路由器基础配置
bash
interface GigabitEthernet 0/0/1
undo shutdown
ip address 1.1.2.1 255.255.255.0
interface GigabitEthernet 0/0/2
undo shutdown
ip address 2.2.2.1 255.255.255.0
防火墙基础配置
(1)接口 IP 配置
# 配置Trust区域接口
interface GigabitEthernet 1/0/1
undo shutdown
ip address 10.1.1.254 255.255.255.0
# 配置Untrust区域接口
interface GigabitEthernet 1/0/2
undo shutdown
ip address 1.1.2.254 255.255.255.0
(2)安全区域划分
# 将接口加入对应安全区域
firewall zone trust
add interface GigabitEthernet 1/0/1
firewall zone untrust
add interface GigabitEthernet 1/0/2
(3)安全策略(允许 Trust→Untrust 访问)
security-policy
rule name Tru->Untru
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
action permit
(4)配置NAT地址池,配置时开启允许端口地址转换,实现公网地址复用
bash
nat addresss-group group1 0
mode pat
section 0 1.1.1.10 1.1.1.11
(5)配置NAPT方式的源NAT策略,使用上面步骤地址池中地址来访问外网
bash
nat-policy
rule name Tru-Untru
source-zone trust
destination-zone untrust
source-address 10.1.1.0 mask 255.255.255.0
action source-nat address-group group1
(6)在防火墙上配置静态路由,下一跳为路由器入口
bash
ip route-static 0.0.0.0 0.0.0.0 1.1.2.1
(7)在路由器上配置静态路由,下一跳为防火墙出接口
bash
ip route-static 0.0.0.0 0.0.0.0 1.1.2.254
3.测试与结果
为便于测试,1.1.1.10启动黑洞路由,1.1.1.11不启用黑洞路由
bash
# 在防火墙上配置黑洞路由,将地址池网段指向NULL0接口
ip route-static 1.1.1.10 255.255.255.255 NULL 0
(1)用公网PC去ping 1.1.1.11 -c 1,只发送一个ping包,在g1/0/2口抓包


发现报文的TTL值逐一递减,最后变为1。TTL是报文的生存时间,每经过一台设备的转发,TTL的值减1,当TTL的值为0时就会被设备丢弃。这说明公网PC主动访间NAT地址池地址的报文在防火墙和路由器之间相互转发,直到TTL变成0之后被最后收到该报文的设备丢弃,造成资源浪费。这是因为1.1.1.11没有配置黑洞路由,造成了路由环路。
(2)用位于公网的PC3去ping 1.1.1.10-c1,只发送一个ping包,在GE1/0/2口抓包,如图所示。


没有出现以上多个ping包在防火墙和路由器之间转发的现象,这是因为1.1.1.10配置了黑洞路由,没有形成路由环路。
(3)测试结论。需要为两个地址均配置黑洞路由,命令如下:
bash
# 在防火墙上配置黑洞路由,将地址池网段指向NULL0接口
ip route-static 1.1.1.10 255.255.255.255 NULL 0
ip route-static 1.1.1.11 255.255.255.255 NULL 0
七、四种 NAT 方式对比总结
表格
| NAT 类型 | 核心特点 | 地址利用率 | 适用场景 |
|---|---|---|---|
| Easy IP | 直接复用出接口 IP,端口复用 | 极高 | 小型企业、出口 IP 固定的场景 |
| No-PAT | 一对一 IP 转换,无端口复用 | 低(地址池地址数≥用户数) | 需要固定公网 IP 的内网主机 |
| NAPT | IP + 端口复用,多对一转换 | 高 | 中大型企业,用户多公网 IP 少 |
| 黑洞路由 | 防止 NAT 地址回包环路 | - | 所有配置 NAT 地址池的场景 |
八、常见问题与排坑指南
- 内网 ping 不通公网
- 检查安全策略是否允许 Trust→Untrust 方向的流量
- 检查防火墙接口 IP 配置,确认 PC/Server 的网关指向正确
- 检查 NAT 策略的源地址范围是否包含内网网段
- No-PAT 地址池耗尽后用户无法访问
- 地址池地址数量不足,可增加地址池地址或改用 NAPT 模式
- NAT 环路问题
- 忘记配置黑洞路由,导致公网访问地址池 IP 时出现环路,必须配置 NULL0 路由