第七章 防火墙地址转换

文章目录

一、地址转换技术概述

1、NAT分类
类型 中文名称 主要用途
NAT Outbound 出方向 NAT 内网用户访问外网时隐藏私网 IP
NAT Server 服务器映射 将公网 IP 映射到内网服务器(如 Web、FTP)
NAT No-PAT 静态端口无关转换 多个私网 IP 对应多个公网 IP,不复用端口
Smart NAT / Easy IP 智能 NAT 使用出接口公网 IP 做源地址转换
Twice NAT 双重 NAT 同时转换源和目的地址,用于复杂组网
2、处理流程
python 复制代码
              +------------------+
              |   数据包到达     |
              +--------+---------+
                       |
       +---------------v------------------+
       |       是否命中会话表?             |
       +----------------+-----------------+
                        |
           +-----------v------------+   是  +--------------------+
           |         否            +-------> 快速转发(Fastpath)|
           +-----------+------------+       +--------------------+
                       |
       +---------------v------------------+
       |     入接口 ACL 检查(可选)        |
       +----------------+-----------------+
                        |
       +---------------v------------------+
       |           路由查找                |
       +----------------+-----------------+
                        |
       +---------------v------------------+
       |      是否命中 NAT Server?         |
       +----------------+-----------------+
                        | 是
                        v
       +-----------------------------------+
       |   目的地址转换(DNAT)             |
       |   global → inside                 |
       +----------------+------------------+
                        |
       +---------------v------------------+
       |      安全策略检查(关键!)         |
       +----------------+------------------+
                        |
          +------------v-------------+ 否
          |           是             +-----> 丢弃 + 日志
          +------------+-------------+
                       |
       +---------------v------------------+
       |     是否启用 NAT Outbound?        |
       +----------------+------------------+
                        | 是
                        v
       +-----------------------------------+
       |   源地址转换(SNAT/PAT)           |
       +----------------+-------------------+
                        |
       +---------------v------------------+
       |        出接口处理(L2/L3)          |
       +----------------+-------------------+
                        |
              +---------v----------+
              |   转发数据包        |
              +--------------------+

二、源地址转换

1、定义

源地址转换(Source Network Address Translation, SNAT) 是指在数据包通过防火墙时,将原始报文中的 源 IP 地址 (通常是私网 IP)替换为防火墙指定的 公网 IP 地址,从而实现内网主机对外通信的能力。

2、工作原理

首包进入

  • 来自内网主机的数据包到达防火墙
  • 匹配路由,确定下一跳和出接口
  • 查找安全策略,确认是否允许并是否启用 nat outbound

执行源地址转换

  • 根据配置的 NAT 规则,将源 IP 替换为公网 IP
  • 如果使用 PAT(端口地址转换),还会修改源端口号以区分不同内网主机

创建会话表项

python 复制代码
协议: TCP
原始五元组: 192.168.1.10:12345 → 8.8.8.8:80
转换后:     203.0.113.10:50001 → 8.8.8.8:80
动作: permit, nat enabled

返回流量处理

  • 外部服务器回包发往 203.0.113.10:50001
  • 防火墙查询会话表,反向转换为目标地址 192.168.1.10:12345
  • 转发给内网主机
3、转换类型对比
类型 是否复用端口 转换方式 典型用途
NAT Outbound + PAT ✅ 是 多个私网 IP → 一个/多个公网 IP + 不同端口 内网上网(最常见)
NAT No-PAT ❌ 否 一对一静态映射(IP 对应) 特定主机固定映射
Easy IP ✅ 是 使用出接口 IP 作为转换地址 PPPOE 拨号等动态公网场景
4、主要实现方式
4.1、NAT Outbound(带地址池 + PAT)

适用于多个内网用户共享少量公网 IP 访问外网。

python 复制代码
# 定义需要做 NAT 的内网范围
acl number 2000
 rule permit source 192.168.1.0 0.0.0.255

# 创建公网地址池
nat address-group OUTBOUND_POOL
 section 0 203.0.113.10 203.0.113.20

# 配置安全策略并启用 NAT
security-policy
 rule name ALLOW_TO_INTERNET
  source-zone trust
  destination-zone untrust
  source-address 192.168.1.0 mask 255.255.255.0
  action permit
  nat enable
  nat outbound 2000 address-group OUTBOUND_POOL
  • 所有来自 192.168.1.0/24 的流量,源 IP 被替换为 203.0.113.10~20 中的一个
  • 自动分配端口号(PAT),支持上千用户并发上网

4.2、Easy IP(接口 IP 作为转换地址)

当公网 IP 数量极少或动态获取时使用(如 ADSL 拨号)。

python 复制代码
# 只需启用 nat outbound,不指定 address-group → 默认使用接口 IP
security-policy
 rule name ALLOW_EASY_IP
  source-zone trust
  destination-zone untrust
  source-address 192.168.2.0 mask 255.255.255.0
  action permit
  nat enable
  nat outbound 2001   # acl 2001 匹配内网段,但无 address-group
  • 源 IP 被替换为外网接口的 IP 地址(如 203.0.113.1
  • 支持 PAT,适合小型网络

4.3、NAT No-PAT(静态一对一映射)

用于某些特殊业务需要固定公网 IP 映射。

python 复制代码
# 启用静态 NAT
nat static enable

# 配置一对一映射
interface GigabitEthernet0/0/1
 ip address 203.0.113.100 255.255.255.0
 nat static 192.168.1.100 netmask 32 global 203.0.113.100
  • 192.168.1.100 访问外网时,始终使用 203.0.113.100
  • 不改变端口,适合运行 VoIP、视频会议等协议
5、应用场景
应用场景 说明
内网用户访问互联网 最常见用途,保护隐私、节省公网 IP
多分支机构统一出口 所有分支流量经总部防火墙 SNAT 出去,便于审计
云环境下 VPC 互通 私网地址冲突时可通过 SNAT 避免冲突
合规与日志追溯 所有外联流量统一从几个公网 IP 发出,便于监控和溯源
PPPoE 拨号上网环境 使用 Easy IP 实现动态公网 IP 上网
6、注意事项
项目 说明
必须配合安全策略 只有 action permit 且启用 nat enable 的规则才触发 SNAT
默认不开启 需手动配置 nat outbound
会话表决定返回路径 若会话老化或被清除,返回流量可能无法还原
避免地址冲突 地址池不能与内网网段重叠
日志建议开启 便于排查访问失败问题

三、目的地址转换

1、定义

目的地址转换(Destination Network Address Translation, DNAT) 是指当数据包进入防火墙时,将其 目标 IP 地址和/或端口 从公网地址转换为内部网络中的私网地址和端口。

2、工作原理

🌐 正向流量(外 → 内):

  1. 外部用户发起请求:源IP: 8.8.8.8:12345 → 目标IP: 203.0.113.5:80
  2. 防火墙收到后,查找是否有匹配的 nat server 规则
  3. 找到规则:global 203.0.113.5 80 → inside 192.168.10.10 8080
  4. 将目标地址替换为 192.168.10.10:8080
  5. 进入安全策略检查(判断是否允许访问该内网服务器)
  6. 若允许,则创建会话表项,并转发数据包

🔁 返回流量(内 → 外):

  1. 内网服务器响应: 192.168.10.10:8080 → 8.8.8.8:12345
  2. 防火墙查询会话表,发现这是已建立连接
  3. 自动将源地址还原为 203.0.113.5:80
  4. 发送回外部用户

✅ 整个过程对客户端透明,用户以为直接访问的是公网服务器。

3、转换类型对比
类型 映射方式 应用场景
一对一端口映射 public_ip:port → private_ip:port Web、FTP 服务发布
多端口映射 同一公网 IP 映射多个服务 如 80→Web, 443→HTTPS, 21→FTP
IP 全穿透(静态映射) 整个公网 IP 映射给一台主机 特殊业务需求
4、主要实现方式
4.1、最常用:NAT Server(端口映射)

将公网 IP 的某个端口映射到内网服务器的指定端口。

python 复制代码
# 将公网 IP 203.0.113.5 的 80 端口映射到内网 Web 服务器 192.168.10.10 的 8080 端口
nat server WEB_SERVER protocol tcp
 global 203.0.113.5 80 inside 192.168.10.10 8080

📌 支持协议可选:

  • protocol tcp / udp / icmp / 不指定(所有协议)

💡 可省略端口号表示全端口映射:

python 复制代码
nat server FTP_SERVER global 203.0.113.6 inside 192.168.10.20

表示整个 203.0.113.6 映射给 192.168.10.20

4.2、多端口发布同一服务器

例如同时开放 Web 和 HTTPS 服务:

📌 外部访问:

  • https://203.0.113.5:443 → 实际访问 192.168.10.10:8443
4.3、使用接口地址作为公网地址(Easy IP for DNAT)

当防火墙外网接口使用动态 IP 时,可以用接口地址做映射:

python 复制代码
nat server MAIL_SERVER protocol tcp
 global current-interface 25 inside 192.168.10.30 25

📌 效果:

  • 无论接口获取什么公网 IP,都自动将 25 端口映射到内网邮件服务器
5、应用场景
应用场景 说明
对外发布 Web 服务器 让公网用户通过域名访问企业官网
部署邮件服务器(SMTP/IMAP) 提供收发邮件服务
远程办公接入(如 SSL VPN) 用户通过公网 IP 登录内网门户
视频监控平台发布 安防系统远程查看摄像头画面
云环境下混合组网 将私有云中的服务器暴露给公网访问
6、注意事项
项目 说明
必须配置黑洞路由(Blackhole Route) 防止路由环路,确保公网 IP 可达
安全策略需基于 inside 地址编写 因为 DNAT 在策略前发生
避免端口冲突 同一公网 IP+端口只能映射一次
考虑服务器性能 外部攻击可能直达内网服务器,建议启用防护功能(如 IPS)
日志审计建议开启 便于追踪非法访问行为

四、综合实验

1、内网用户通过NAT No-PAT访问Internet
1.1、实验需求
复制代码
1、当内网访问外网时,防火墙将内网数据包的源IP转换为公网地址池中的地址
(1)、ISP1-NAT地址池地址为30.30.30.10-30.30.30.15
(2)、ISP2-NAT地址池地址为40.40.40.10-40.40.40.15
1.2、创建地址池


1.3、创建NAT转换策略


1.4、放行流量


1.5、验证




2、内网用户通过NAPT访问Internet
2.1、实验需求
复制代码
1、当内网访问外网时,防火墙将内网数据包的源IP转换为公网地址池中的地址
(1)、ISP1-NAT地址池地址为30.30.30.10-30.30.30.15
(2)、ISP2-NAT地址池地址为40.40.40.10-40.40.40.15
2.2、创建地址池


2.3、创建NAT转换策略


2.4、放行流量


2.5、验证




3、内网用户通过EASY-IP访问Internet
3.1、实验需求
复制代码
1、当内网访问外网时,防火墙将内网数据包的源IP转换为公网地址池中的地址
(1)、ISP1-NAT地址池地址为30.30.30.10-30.30.30.15
(2)、ISP2-NAT地址池地址为40.40.40.10-40.40.40.15
3.2、创建地址池


3.3、创建NAT转换策略


3.4、放行流量


3.5、验证




4、配置黑洞路由
4.1、实验需求
复制代码
1、当内网访问外网时,防火墙将内网数据包的源IP转换为公网地址池中的地址
(1)、ISP1-NAT地址池地址为30.30.30.10-30.30.30.15
(2)、ISP2-NAT地址池地址为40.40.40.10-40.40.40.15
2、规避环路与ARP风险
4.2、创建地址池


4.3、创建NAT转换策略


4.4、验证
python 复制代码
[USG]display ip routing-table 
2025-11-21 21:16:33.190 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 17       Routes : 18       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  60   0          RD   30.30.30.1      GigabitEthernet1/0/0
                    Static  60   0          RD   40.40.40.1      GigabitEthernet1/0/1
        5.5.5.0/24  Direct  0    0           D   5.5.5.254       Vlanif5
      5.5.5.254/32  Direct  0    0           D   127.0.0.1       Vlanif5
     10.10.10.0/24  Direct  0    0           D   10.10.10.254    Eth-Trunk12.10
   10.10.10.254/32  Direct  0    0           D   127.0.0.1       Eth-Trunk12.10
     20.20.20.0/24  Direct  0    0           D   20.20.20.254    Eth-Trunk12.20
   20.20.20.254/32  Direct  0    0           D   127.0.0.1       Eth-Trunk12.20
     30.30.30.0/24  Direct  0    0           D   30.30.30.254    GigabitEthernet1/0/0
    30.30.30.10/31  Unr     61   0           D   127.0.0.1       InLoopBack0
    30.30.30.12/30  Unr     61   0           D   127.0.0.1       InLoopBack0
   30.30.30.254/32  Direct  0    0           D   127.0.0.1       GigabitEthernet1/0/0
     40.40.40.0/24  Direct  0    0           D   40.40.40.254    GigabitEthernet1/0/1
    40.40.40.10/31  Unr     61   0           D   127.0.0.1       InLoopBack0
    40.40.40.12/30  Unr     61   0           D   127.0.0.1       InLoopBack0
   40.40.40.254/32  Direct  0    0           D   127.0.0.1       GigabitEthernet1/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0




5、理解NAT-ASPF-ALG技术原理
5.1、实验需求
复制代码
1、结合实验理解理解NAT-ASPF-ALG技术原理
5.2、创建NAT转换策略
5.3、配置安全策略
6、公网用户通过NAT访问DMZ-FTP服务器
6.1、服务器增加网卡绑定
6.2、新建目的地址转换池
6.3、配置NAT策略


6.4、配置安全策略
6.5、验证
7、公网用户通过NAT-Server访问DMZ-FTP服务器
7.1、新建服务器映射列表
8、允许服务器使用公网地址上网
8.1、新建服务器映射列表
8.2、配置安全策略
8.3、验证
相关推荐
好好学操作系统6 小时前
autodl 保存 数据 跨区
linux·运维·服务器
dbitc6 小时前
WIN11把WSL2移动安装目录
linux·运维·ubuntu·wsl
KingRumn6 小时前
Linux同步机制之信号量
linux·服务器·网络
嵌入式学习菌6 小时前
SPIFFS文件系统
服务器·物联网
旺仔Sec6 小时前
2026年度河北省职业院校技能竞赛“Web技术”(高职组)赛项竞赛任务
运维·服务器·前端
BullSmall6 小时前
linux 根据端口查看进程
linux·运维·服务器
herinspace6 小时前
管家婆软件年结存后快马商城操作注意事项
服务器·数据库·windows
嘻哈baby7 小时前
DDNS动态域名解析方案对比与实战配置
网络
嘻哈baby7 小时前
Ansible自动化运维入门:从手工到批量部署
运维·自动化·ansible