文章目录
eNSP实验——NAT地址转换(静态NAT+PAT+Easy IP)
仅供参考
基础概念
一、NAT简介
NAT(Network Address Translation,网络地址转换) 是一种网络技术,用于在 私有IP地址(内网) 和 公有IP地址(外网) 之间进行转换。它的核心目的是解决 IPv4地址不足 的问题,同时增强内网安全性。NAT能做的就是:多人共享IP上网 + 隐藏内网 + 对外开服务。
可以把NAT想象成一个大型办公大楼的前台。大楼内部有数百个员工(私有IP设备),但对外只有一个主电话号码(公有IP)。当外部来电时,前台(NAT设备)会根据分机号(端口号)将呼叫转接到正确的内部员工。
二、NAT能做什么
NAT不是防火墙,虽然能隐藏内网,但仍需额外安全措施。
- 让多人共享一个公网IP上网
- 🏢 就像公司所有员工共用一台打印机
- ✔️ 解决IPv4地址不够用的问题
- 🔧 实现方式:NAPT/Easy IP(端口复用技术)
- 隐藏你的内部网络
- 🕵️ 像给公司大楼装上单向玻璃
- ✔️ 外部无法直接扫描内网设备
- ⚠️ 注意:需配合防火墙更安全
- 把内网服务"晒"到公网
- 📮 类似在小区门口设快递柜
- ✔️ 将内网服务器映射到公网(Web/监控/NAS)
- 🔧 实现方式:NAT Server/静态NAT
- 解决IP地址"撞车"问题
- 🚦 像给同名街道加上区号
- ✔️ 让使用相同私有IP的不同网络互通
- 🔧 实现方式:双向NAT
- 帮网络"减负"(负载均衡)
- 🏋️ 像健身房分流不同时段客流
- ✔️ 将访问流量分配到多个公网IP
- 🔧 实现方式:多地址池轮询
1. NAT和防火墙本质区别
维度 | NAT | 防火墙 |
---|---|---|
核心功能 | IP地址转换 | 流量过滤与访问控制 |
工作层级 | 网络层(IP/端口转换) | 应用层/传输层深度检测 |
安全机制 | 隐性安全(地址隐藏) | 显性安全(规则主动拦截) |
2. NAT的"伪防护"特性
看似安全:
- 🛡️ 地址隐藏:外部扫描只能看到公网IP,无法直接访问内网设备
- 🔒 无状态阻挡:默认丢弃未经NAT映射的入站连接
实际风险:
- ☠️ 无内容检测:不检查数据包payload(可能传输恶意代码)
- 💣 无协议分析:无法识别SQL注入/XSS等应用层攻击
- ⏱️ 无会话审计:不记录完整的通信日志(难以追溯攻击)
三、NAT工作原理
NAT用来将内网地址和端口转换成公网地址和端口,建立一个会话,与公网主机进行通信。
NAT外部的主机无法主动跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个个映射关系,从而实现数据的转发。
数据包从内网到外网时会转换源IP地址,由私网地址转换成公网地址; 数据包从外网到内网时,会转换目的IP地址,由公网地址转换成私网地址。
1. 内网访问外网(员工寄快递)
- 步骤:
- 员工A(工位101)想寄快递给快递站,他填的寄件人地址是工位101。
- 前台收到快递后,将寄件人地址改为“科技园1号楼”,并记录一条映射表(工位101 ↔ 当前使用的快递单号)。
- 快递站收到包裹时,看到寄件人是“科技园1号楼”,回件也会送到这个地址。
- 前台收到回件后,查映射表发现“快递单号对应工位101”,于是将包裹送到员工A。
- NAT实际过程:
- 内网设备(192.168.1.2)访问外网服务器时,NAT将源IP(私有IP)替换为公网IP(如123.123.123.123),并记录映射(192.168.1.2:端口 ↔ 公网IP:端口)。
- 外网服务器响应公网IP,NAT通过映射表将数据转发给内网设备。
2. 外网访问内网(快递员送快递)
- 问题:快递员无法直接写“送到工位101”,因为工位号是楼内私有地址。
- 解决方案:
- 方案1:员工提前登记(类似端口映射)
员工A告诉前台:“如果有给我的快递(比如标注‘A的书籍’),请送到工位101。”
前台会对外公布:“科技园1号楼【A的书籍】→ 工位101”。 - 方案2:前台拒绝陌生快递(默认NAT行为)
如果没有提前登记,前台会拒收快递(外部无法主动访问内网)。
- 方案1:员工提前登记(类似端口映射)
- NAT实际过程:
- 需手动配置端口映射(如将公网IP的80端口映射到内网192.168.1.2:80),外部访问公网IP的80端口时,NAT会转发到内网设备。
- 若无映射规则,外部请求会被NAT丢弃(保护内网安全)。
关键点总结:
- 内→外:NAT修改源地址,靠映射表实现回包转发。
- 外→内:必须提前配置映射规则,否则默认禁止(类似前台不代收陌生快递)。
- 地址转换:
- 出方向:私有IP → 公有IP(如192.168.1.2 → 123.123.123.123)。
- 入方向:公有IP → 私有IP(通过映射表匹配)。
1️⃣ 核心流程类比
NAT工作步骤 | 快递站类比 | 关键动作 |
---|---|---|
内网设备发请求 | 下单网购(写收货地址为快递站) | 内网设备用私有IP访问外网 |
路由器做NAT转换 | 快递站把包裹发件人改成驿站地址 | 路由器将私有IP→公网IP+新端口 |
外网服务器响应 | 商家把包裹送回快递站 | 外网数据包返回NAT的公网IP |
路由器逆向转换 | 快递站根据订单号找到你家门牌号 | 通过NAT表将公网IP→私有IP |
数据包送回内网 | 包裹最终送到你手上 | 数据到达真实内网设备 |
2️⃣ 三种常见NAT类比
- 静态NAT(VIP专属快递柜)
- 固定1个公网IP对应1个内网IP,就像专属柜子(你家快递永远用X号柜)。
- 适用:对外开服务器(如网站)。
- PAT/NAPT(拼团发货)
- 多人共享1个公网IP,靠端口区分(像快递站用取件码区分不同人的包裹)。
- 适用:手机/电脑共享上网。
- Easy IP(驿站老板亲自发货)
- 直接拿路由器公网IP当发货地址(快递站老板用自己的地址代发)。
- 适用:家庭宽带。
四、NAT的优缺点
✅ 优点
优点 | 备注 |
---|---|
节省公网IP资源 | 通过PAT(NAPT)和Easy IP的端口复用技术,实现成百上千台设备共享一个公网IP,缓解IPv4地址枯竭问题。 |
增强内网安全性 | 隐藏内部网络拓扑结构,外部攻击者无法直接扫描或访问内网设备(需依赖NAT映射规则)。 |
解决IP地址冲突 | 通过双向NAT(如企业合并网络时)解决不同内网使用相同私有IP地址(如192.168.1.0/24)的通信问题。 |
❌ 缺点
缺点 | 备注 |
---|---|
破坏端到端通信 | 有些应用不支持,影响P2P应用(如视频通话、BT下载)的直接连接,需依赖STUN/TURN/ICE等NAT穿透技术。 |
增加网络延迟 | NAT设备需维护会话状态表(如端口映射、超时机制),数据包需经过地址转换,可能引入额外处理延迟。 |
运维调试复杂 | 故障排查时需跟踪NAT会话状态(如端口映射错误、会话超时),日志分析难度高于纯路由环境。 |
单点故障风险 | 若NAT设备宕机,所有依赖它的内网对外通信会中断(需高可用方案如NAT集群)。 |
五、NAT的类型
1️⃣ 静态 NAT(Static NAT)
特性 | 说明 |
---|---|
映射方式 | 一对一固定映射(1 个公网 IP 对应 1 个内网 IP) |
端口处理 | 全端口自动转发(无需单独配置端口映射) |
配置示例 | nat static global 203.0.113.1 inside 192.168.1.100 |
适用场景 | 内网服务器对外提供服务(如 Web、邮件服务器) |
优缺点 | ✅ 配置简单,双向可达 ❌ 浪费公网 IP,需配合防火墙防暴露 |
2️⃣ 动态 NAPT(Network Address Port Translation)
特性 | 说明 |
---|---|
映射方式 | 多对一映射(多个内网 IP 共享公网 IP + 端口复用) |
核心原理 | 转换源 IP + 源端口,生成唯一会话标识 |
地址池要求 | 需预先配置公网 IP 地址池(如 nat address-group 1 203.0.113.1 203.0.113.5 ) |
配置示例 | nat outbound 2000 address-group 1 |
适用场景 | 企业内网多用户共享上网 |
优缺点 | ✅ 高效利用 IP ❌ 需维护会话表 |
3️⃣ 动态 NO-PAT(Basic NAT)
特性 | 说明 |
---|---|
映射方式 | 一对一动态映射(仅转换 IP,不转换端口) |
地址分配 | 从地址池临时分配公网 IP(会话结束后回收) |
配置示例 | nat outbound 2000 address-group 1 no-pat |
适用场景 | 需保留原始端口的场景(如审计要求) |
优缺点 | ✅ 保持端口透明性 ❌ IP 利用率低(内网设备数 ≤ 地址池 IP 数) |
4️⃣ Easy IP(简化版 NAPT)
特性 | 说明 |
---|---|
映射方式 | 多对一映射,直接使用路由器接口公网 IP(无需地址池) |
端口复用 | 动态分配端口(1024-65535) |
配置示例 | nat outbound 2000 (绑定到 WAN 口) |
适用场景 | 家庭宽带、PPPoE 拨号上网 |
优缺点 | ✅ 零成本配置 ❌ 单 IP 易被封锁 |
5️⃣ NAT Server(端口映射)
特性 | 说明 |
---|---|
映射方式 | 端口级一对一映射(精准控制协议和端口) |
典型配置 | nat server protocol tcp global 203.0.113.1 80 inside 192.168.1.100 80 |
安全建议 | 配合 ACL 限制访问源 IP(如 rule permit source 202.160.10.0 0.0.0.255 ) |
适用场景 | 发布内网服务(如 FTP、SSH、Web) |
优缺点 | ✅ 灵活控制暴露范围 ❌ 需手动维护映射规则 |
NAT类型利用率
类型 | IP 利用率 | 核心原理 | 适用场景 | 配置复杂度 |
---|---|---|---|---|
Easy IP | ⭐⭐⭐⭐⭐ | 使用接口公网 IP + 端口复用 | 家庭宽带、单公网 IP | 低 |
PAT (NAPT) | ⭐⭐⭐⭐ | 地址池 IP + 端口复用 | 企业内网多用户共享少量公网 IP(比 Easy IP 灵活) | 中 |
动态 NAT | ⭐⭐ | 地址池 IP 一对一分配(无端口复用) | 临时多设备访问外网(公网 IP 充足) | 中 |
静态 NAT | ⭐ | 固定一对一 IP 映射 | 内网服务器对外提供服务(如 Web/FTP) | 低 |
NAT Server | - | 端口级一对一映射 | 精细化发布内网服务(如公网 80 → 内网 Web 80) | 中 |
双向 NAT | - | 双向 IP 转换(源 + 目的地址转换) | 解决 IP 地址冲突(如企业网络合并) | 高 |
实验环境
1. 拓扑图
2. 设备信息划分
设备类型 | 设备名称 | 接口 | 所属网络 | IP 地址 |
---|---|---|---|---|
路由器 | AR1 | GE 0/0/0 | 192.168.5.0/24 | 192.168.5.1 |
GE 0/0/1 | 100.1.1.0/24 | 100.1.1.1 | ||
路由器 | AR2 | GE 0/0/1 | 100.1.1.0/24 | 100.1.1.2 |
GE 0/0/2 | 200.1.1.0/24 | 10.0.1.254 | ||
三层交换机 | SW1 | GE 0/0/1 | 192.168.1.0/24 | 192.168.1.254(Vlanif 10) |
GE 0/0/2 | 192.168.2.0/24 | 192.168.2.254(Vlanif 20) | ||
GE 0/0/3 | 192.168.3.0/24 | 192.168.3.254(Vlanif 30) | ||
GE 0/0/4 | 192.168.4.0/24 | 192.168.4.254(Vlanif 40) | ||
GE 0/0/5 | 192.168.5.0/24 | 192.168.5.254(Vlanif 50) | ||
二层交换机 | SW2 | Ethernet 0/0/1 | 200.1.1.0/24 | |
Ethernet 0/0/2 | 200.1.1.0/24 | |||
主机 | PC1 | Ethernet 0/0/1 | 192.168.1.0/24 | 192.168.1.1(Vlan 10) |
主机 | PC2 | Ethernet 0/0/1 | 192.168.2.0/24 | 192.168.2.2(Vlan 20) |
主机 | PC3 | Ethernet 0/0/1 | 192.168.3.0/24 | 192.168.3.3(Vlan 30) |
主机 | PC4 | Ethernet 0/0/1 | 200.1.1.0/24 | 200.1.11/24 |
服务器 | Server1 | Ethernet 0/0/0 | 192.168.4.0/24 | 192.168.4.4(Vlan 40) |
3. 环境基本配置
[SW1]vlan batch 10 20 30 40 50
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1]
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 10
[SW1-GigabitEthernet0/0/1]q
[SW1]
[SW1]
[SW1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 20
[SW1-GigabitEthernet0/0/2]q
[SW1]
[SW1]int g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type access
[SW1-GigabitEthernet0/0/3]port default vlan 30
[SW1-GigabitEthernet0/0/3]q
[SW1]
[SW1]int g0/0/4
[SW1-GigabitEthernet0/0/4]port link-type access
[SW1-GigabitEthernet0/0/4]port default vlan 40
[SW1-GigabitEthernet0/0/4]q
[SW1]int g0/0/4
[SW1]
[SW1]
[SW1]int g0/0/5
[SW1-GigabitEthernet0/0/5]port link-type access
[SW1-GigabitEthernet0/0/5]port default vlan 50
[SW1-GigabitEthernet0/0/5]q
[SW1]
[SW1]
[SW1]int Vlanif 10
[SW1-Vlanif10]ip address 192.168.1.254 24
[SW1-Vlanif10]q
[SW1]
[SW1]int Vlanif 20
[SW1-Vlanif20]ip address 192.168.2.254 24
[SW1-Vlanif20]q
[SW1]
[SW1]int Vlanif 30
[SW1-Vlanif30]ip address 192.168.3.254 24
[SW1-Vlanif30]q
[SW1]
[SW1]int Vlanif 40
[SW1-Vlanif40]ip address 192.168.4.254 24
[SW1-Vlanif40]q
[SW1]
[SW1]int Vlanif 50
[SW1-Vlanif50]ip address 192.168.5.1 24
[SW1-Vlanif50]q
[SW1]
[SW1]ip route-static 0.0.0.0 0.0.0.0 192.168.5.2
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip address 192.168.5.2 24
[AR1-GigabitEthernet0/0/0]q
[AR1]
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip address 100.1.1.1 24
[AR1-GigabitEthernet0/0/1]q
[AR1]ip route-static 192.168.1.0 24 192.168.5.1
[AR1]ip route-static 192.168.2.0 24 192.168.5.1
[AR1]ip route-static 192.168.3.0 24 192.168.5.1
[AR1]ip route-static 192.168.4.0 24 192.168.5.1
[AR1]ip route-static 0.0.0.0 0 100.1.1.2
[Huawei]sy AR2
[AR2]
[AR2]int g0/0/1
[AR2-GigabitEthernet0/0/1]ip address 100.1.1.2 24
[AR2-GigabitEthernet0/0/1]q
[AR2]
[AR2]
[AR2]int g0/0/2
[AR2-GigabitEthernet0/0/2]ip address 200.1.1.254 24
[AR2-GigabitEthernet0/0/2]q
[AR2]ip route-static 0.0.0.0 0 100.1.1.1
一、静态NAT配置
# 配置静态NAT映射(1对1固定IP)
nat static global <公网IP> inside <内网IP>
1. 配置PC1主机的私网IP地址转换为公网的IP地址
备注:因为是测试环境,所以这个公网IP(123.1.1.1)可以看着来给,但不要忘记给(默认)路由。
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat static global 123.1.1.1 inside 192.168.1.1 # 将私网IP地址192.168.1.1映射到公网IP地址123.1.1.1
[AR1-GigabitEthernet0/0/1]
global
:指定公网IP地址。inside
:指定内网IP地址。
2. 查看静态NAT的信息
[AR1]dis nat static
Static Nat Information:
Interface : GigabitEthernet0/0/1
Global IP/Port : 123.1.1.1/----
Inside IP/Port : 192.168.1.1/----
Protocol : ----
VPN instance-name : ----
Acl number : ----
Netmask : 255.255.255.255
Description : ----
Total : 1
[AR1]
3. 测试
- Source:源(发送数据包的那一方)
- Destination:目的(接受数据包的那一方)
PC1(192.168.1.1)给PC4(200.1.1.1)发送数据包,这里可以看到是刚刚给PC1配置的静态NAT地址(123.1.1.1)是源IP地址发送数据包到PC4目的地(200.1.1.1)。数据包的源IP从PC1的内网IP(192.168.1.1)被正确转换为公网IP(123.1.1.1),说明静态NAT配置生效。
它这个过程就是,PC1发送数据包给PC2,然后PC2接收到了PC1发送的数据包,于是PC2就发送一个数据包回应给PC1。
Q:为什么回复包的Destination是 123.1.1.1 而不是 192.168.1.1?
A:因为PC4只能看到路由器转换后的公网IP(123.1.1.1),不知道内网IP(192.168.1.1)的存在。路由器收到回复后,会根据静态NAT规则将目标IP转换回内网IP。
这里再看PC4(200.1.1.1)发送数据包给123.1.1.1这个IP地址的主机,最后显示收到这个200.1.1.1的数据包的主机是PC1(192.168.1.1)
这里再看PC1(192.168.1.1)给PC2(192.168.2.2)发送数据包,可以看到源IP地址是192.168.1.1的,综上所得,私网的IP地址
二、PAT(NAPT)配置
备注:PAT(NAPT)和动态NAT的区别就是用了端口转换,配置方面就只是没有no-pat而已,没啥区别。
先把前面配置的静态NAT配置取消掉
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]undo nat static global 123.1.1.1 inside 192.168.1.1 netmask 255.255.255.255
1. 创建公网IP地址池(可选)
不能使用已经接在口使用的IP地址
[AR1]nat address-group 1 100.1.1.3 100.1.1.5
[AR1]display nat address-group 1
NAT Address-Group Information:
--------------------------------------
Index Start-address End-address
--------------------------------------
1 100.1.1.3 100.1.1.5
--------------------------------------
Total : 1
[AR1]
2. 在外网接口启用PAT
# 配置ACL允许通过的IP
[AR1]acl 2000 # 创建ACL 2000
[AR1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255 # 允许192.168.1.0网段
[AR1-acl-basic-2000]rule permit source 192.168.2.0 0.0.0.255 # 允许192.168.2.0网段
[AR1-acl-basic-2000]rule permit source 192.168.3.0 0.0.0.255 # 允许192.168.3.0网段
[AR1-acl-basic-2000]q
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1 # 仅允许ACL 2000中的IP使用PAT,使用address-group 1池
[AR1-GigabitEthernet0/0/1]
如果想改为动态NAT,需显式添加 no-pat:
nat outbound 2000 address-group 1 no-pat
[AR1]dis nat outbound
NAT Outbound Information:
--------------------------------------------------------------------------
Interface Acl Address-group/IP/Interface Type
--------------------------------------------------------------------------
GigabitEthernet0/0/1 2000 1 pat
--------------------------------------------------------------------------
Total : 1
3. 测试
这里可以看到指定的范围池,PC2(100.1.1.3)和PC3(100.1.1.4),因为这里是先用PC2发送数据包过去再到PC3,所以PC1的应该是(100.1.1.5),也可以看到两台PC发送数据包给PC4的时候,源IP地址也是和指定的范围池之内。
三、Easy IP配置
需要ACL规则,不需要创建范围池,使用接口IP进行。
如果要接着配置Easy IP,可以先把
nat outbound 2000 address-group 1
取消掉
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 100.1.1.1 255.255.255.0
nat outbound 2000 address-group 1
#
return
[AR1-GigabitEthernet0/0/1]undo nat
[AR1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1 # 取消掉 nat outbound 2000 address-group 1 (PAT配置)
[AR1-GigabitEthernet0/0/1]
1. 配置匹配 ACL 被执行 NAT 转换
# 配置ACL允许通过的IP
[AR1]acl 2000 # 创建ACL 2000
[AR1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255 # 允许192.168.1.0网段
[AR1-acl-basic-2000]rule permit source 192.168.2.0 0.0.0.255 # 允许192.168.2.0网段
[AR1-acl-basic-2000]rule permit source 192.168.3.0 0.0.0.255 # 允许192.168.3.0网段
[AR1-acl-basic-2000]
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat outbound 2000 # 匹配 ACL 2000 的流量 会被执行 NAT 转换(通常是转换成出口接口的IP或指定的地址池)。
[AR1-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 100.1.1.1 255.255.255.0
nat outbound 2000
#
return
[AR1-GigabitEthernet0/0/1]
2. 测试
在这种配置下,当内网主机访问外网时,路由器会直接使用其连接外网的出接口 IP 地址作为转换后的源 IP 地址来转发数据包 。
这里会发现,不管是用PC1还是PC2还是PC3,都是直接使用AR1的g0/0/1接口的IP(100.1.1.1)发送这个数据包