视频加载失败

NAT技术详解

2701 字
14 分钟
NAT技术详解

NAT 技术详解#

一、NAT概述#

项目说明
全称Network Address Translation(网络地址转换)
核心目的① 解决IPv4地址不足问题 ② 隐藏内部网络结构,提高安全性
工作原理将IP报文头中的IP地址(和端口)进行转换
会话维护NAT设备维护转换表,确保回程报文正确还原
标准RFC 1631(基础NAT)、RFC 3022(传统NAT)、RFC 2663(NAT术语)

1.1 私有地址范围(RFC 1918)#

类别地址范围CIDR可用地址数
A类10.0.0.0 ~ 10.255.255.25510.0.0.0/8约1677万
B类172.16.0.0 ~ 172.31.255.255172.16.0.0/12约104万
C类192.168.0.0 ~ 192.168.255.255192.168.0.0/16约6.5万

私有地址不可在公网路由,必须通过NAT转换后才能访问公网。

二、NAT类型对比 🏷️高频考点#

NAT类型转换方式映射关系是否复用公网IP典型应用场景
静态NAT私有IP ↔ 公有IP 固定映射一对一服务器对外发布
动态NAT从地址池动态分配公有IP多对多否(同时刻一IP一主机)内部用户上网(已少用)
NAPT(PAT)私有IP+端口 ↔ 公有IP+端口多对一最常用,现代网络首选
Easy IP使用接口IP进行NAPT转换多对一(接口IP)小型网络/家庭/拨号
NAT Server公网IP+端口 → 私有IP+端口(入方向)一对一端口映射内网服务器对外发布

2.1 NAT类型决策树#

是,多个

仅接口IP

NAT需求

需要外部访问内部?

只有一个公网IP?

NAT Server

端口映射

静态NAT

一对一映射

有固定公网IP?

动态NAT / NAPT

Easy IP

最简单

是,多个

仅接口IP

NAT需求

需要外部访问内部?

只有一个公网IP?

NAT Server

端口映射

静态NAT

一对一映射

有固定公网IP?

动态NAT / NAPT

Easy IP

最简单

三、NAT各类型工作原理 🏷️高频考点#

3.1 静态NAT#

一对一固定映射,双向可发起连接。

外网Server8.8.8.8NAT设备内网PC192.168.1.10外网Server8.8.8.8NAT设备内网PC192.168.1.10查NAT表192.168.1.10→100.1.1.10查NAT表100.1.1.10→192.168.1.10Src:192.168.1.10 Dst:8.8.8.8Src:100.1.1.10 Dst:8.8.8.8Src:8.8.8.8 Dst:100.1.1.10Src:8.8.8.8 Dst:192.168.1.10
外网Server8.8.8.8NAT设备内网PC192.168.1.10外网Server8.8.8.8NAT设备内网PC192.168.1.10查NAT表192.168.1.10→100.1.1.10查NAT表100.1.1.10→192.168.1.10Src:192.168.1.10 Dst:8.8.8.8Src:100.1.1.10 Dst:8.8.8.8Src:8.8.8.8 Dst:100.1.1.10Src:8.8.8.8 Dst:192.168.1.10
特性说明
转换方向出方向和入方向均可主动发起
优点外网可以主动访问内网服务器
缺点每个内网主机需要一个公网IP,不节省IP
适用场景内网服务器对外发布(如Web、Mail服务器)

3.2 动态NAT#

从地址池动态获取公网IP,一对一但不固定。

Terminal window
特点:
- 先到先得,用完即止(地址池耗尽则拒绝新连接)
- 同一时刻一个公网IP只能分配给一个私有IP
- 不同时刻同一私有IP可能分配到不同公网IP
- 会话结束后公网IP回收
特性说明
地址池多个公网IP组成地址池
分配方式动态分配,先到先得
复用不支持(同时刻一对一)
缺点地址池耗尽则新用户无法上网

3.3 NAPT(PAT)🏷️高频考点#

同时转换IP和端口,多个私有IP共用一个公网IP,通过端口区分会话。

外网Server8.8.8.8:80NAT设备公网IP:100.1.1.1PC2192.168.1.11:12345PC1192.168.1.10:12345外网Server8.8.8.8:80NAT设备公网IP:100.1.1.1PC2192.168.1.11:12345PC1192.168.1.10:12345转换192.168.1.10:12345 → 100.1.1.1:10001转换192.168.1.11:12345 → 100.1.1.1:10002通过不同端口号区分两个会话的回程报文Src:192.168.1.10:12345 Dst:8.8.8.8:80Src:100.1.1.1:10001 Dst:8.8.8.8:80Src:192.168.1.11:12345 Dst:8.8.8.8:80Src:100.1.1.1:10002 Dst:8.8.8.8:80
外网Server8.8.8.8:80NAT设备公网IP:100.1.1.1PC2192.168.1.11:12345PC1192.168.1.10:12345外网Server8.8.8.8:80NAT设备公网IP:100.1.1.1PC2192.168.1.11:12345PC1192.168.1.10:12345转换192.168.1.10:12345 → 100.1.1.1:10001转换192.168.1.11:12345 → 100.1.1.1:10002通过不同端口号区分两个会话的回程报文Src:192.168.1.10:12345 Dst:8.8.8.8:80Src:100.1.1.1:10001 Dst:8.8.8.8:80Src:192.168.1.11:12345 Dst:8.8.8.8:80Src:100.1.1.1:10002 Dst:8.8.8.8:80
特性说明
转换对象IP + 端口
复用能力一个公网IP可承载约65535个会话
会话处理NAT表每行包含:协议、源IP、源端口、转换后IP、转换后端口、目的IP、目的端口
会话老化TCP会话空闲约4分钟老化,UDP约1分钟

3.4 Easy IP#

NAPT的简化版,直接使用出接口IP进行转换。

Terminal window
Easy IP = NAPT + 自动使用接口IP
- 不需要配置NAT地址池
- 转换后地址 = 出接口的公网IP地址
- 特别适用于拨号/动态IP场景

3.5 NAT Server 🏷️高频考点#

将内网服务器端口映射到公网IP的指定端口,方使外网用户访问。

访问 100.1.1.1:80

NAT Server映射

100.1.1.1:80 → 192.168.1.100:80

外网用户

NAT设备

内网Web服务器

192.168.1.100:80

访问 100.1.1.1:80

NAT Server映射

100.1.1.1:80 → 192.168.1.100:80

外网用户

NAT设备

内网Web服务器

192.168.1.100:80

特性说明
转换方向入方向(公网→私网)
映射粒度端口级别
配置要素协议类型、公网IP<端口>、私网IP<端口>
典型应用Web服务器(80/443)、邮件服务器(25/110)、FTP服务器(21)

四、NAT转换过程详解#

4.1 出方向转换(SNAT - Source NAT)#

出站报文处理流程:
接口接收报文 → 查NAT出方向策略 → 匹配ACL → 分配公网IP/端口
→ 建立NAT会话表 → 修改源IP/端口 → 查路由转发

4.2 入方向转换(DNAT - Destination NAT)#

入站报文处理流程:
接口接收报文 → 查NAT Server映射 → 匹配 → 修改目的IP/端口
→ 查路由表 → 内网转发

4.3 NAT会话表结构#

字段说明
Protocol协议类型(TCP/UDP/ICMP)
SrcIP原始私有源IP和端口
NatIP转换后的公网IP和端口
DstIP目的IP和端口
Aging会话剩余老化时间
VPNVPN实例(如有)

4.4 NAT ALG(应用层网关)#

某些应用层协议在数据载荷中携带IP地址/端口(如FTP的PORT命令、SIP的SDP),NAT只转换IP头,不转换载荷内容,导致通信失败。

ALG解决此问题:解析应用层协议载荷,自动修改其中的IP/端口信息。

协议ALG解决的问题
FTP主动模式PORT命令中携带IP地址,需ALG转换
SIPSDP/Contact头域包含内网IP
H.323多媒体通信信令和媒体通道的地址转换
PPTPGRE隧道和TCP控制连接
DNS内网DNS响应包中私网IP的ALG转换
RTSP流媒体的传输端口协商

五、NAT优缺点#

5.1 优点#

优点说明
缓解IPv4地址不足大量内网主机共享少量公网IP
隐藏内部网络结构外部无法直接访问内网,提高安全性
网络灵活性内部IP变更不影响外部,内部可使用任意私有地址
负载分担结合服务器负载均衡器可实现流量分发

5.2 缺点#

缺点说明
增加转发延迟每个报文需查NAT表、修改IP/端口/校验和
破坏端到端通信违背IP端到端原则,某些P2P应用受影响
调试困难问题定位时需要跟踪NAT转换过程
协议兼容性载荷含IP的协议需ALG支持
会话表压力大流量场景消耗CPU和内存

六、华为设备配置命令示例#

6.1 静态NAT配置#

Terminal window
# 接口配置公网IP
interface GigabitEthernet0/0/0
ip address 100.1.1.1 255.255.255.0
nat static enable
# 全局配置静态NAT映射
nat static global 100.1.1.10 inside 192.168.1.10 netmask 255.255.255.255

6.2 动态NAT配置#

Terminal window
# 配置ACL匹配内网地址
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
# 配置NAT地址池
nat address-group 1 100.1.1.10 100.1.1.20
# 出接口应用NAT
interface GigabitEthernet0/0/0
ip address 100.1.1.1 255.255.255.0
nat outbound 2000 address-group 1 no-pat

no-pat 参数表示不做端口转换(即纯动态NAT),不加则为NAPT。

6.3 NAPT配置#

Terminal window
# ACL匹配内网地址
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 permit source 192.168.2.0 0.0.0.255
# NAT地址池
nat address-group 1 100.1.1.10 100.1.1.15
# 出接口应用NAPT(不加no-pat即为NAPT)
interface GigabitEthernet0/0/0
ip address 100.1.1.1 255.255.255.0
nat outbound 2000 address-group 1

6.4 Easy IP配置#

Terminal window
# ACL匹配内网地址
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
# 出接口应用Easy IP(不指定地址池)
interface GigabitEthernet0/0/0
ip address 100.1.1.1 255.255.255.0
nat outbound 2000

6.5 NAT Server配置#

Terminal window
# 接口配置
interface GigabitEthernet0/0/0
ip address 100.1.1.1 255.255.255.0
nat server enable
# 全局配置NAT Server(端口映射)
nat server protocol tcp global 100.1.1.1 80 inside 192.168.1.100 80
nat server protocol tcp global 100.1.1.1 443 inside 192.168.1.100 443
nat server protocol tcp global 100.1.1.1 25 inside 192.168.1.101 25
# 不同公网端口映射到同一服务器不同端口
nat server protocol tcp global 100.1.1.1 8080 inside 192.168.1.100 80

6.6 NAT ALG配置#

Terminal window
# 全局使能各协议ALG
nat alg ftp enable
nat alg sip enable
nat alg dns enable
nat alg rtsp enable
nat alg pptp enable
# 查看ALG状态
display nat alg

6.7 NAT日志配置#

Terminal window
# 使能NAT日志
nat log session enable
# 配置日志服务器
info-center loghost 192.168.100.100
# 查看NAT会话
display nat session all
display nat session source 192.168.1.10
display nat session number

6.8 完整场景配置示例#

Terminal window
# 场景:内网192.168.1.0/24通过Easy IP上网,同时发布内网Web服务器
# 1. ACL匹配内网地址
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
# 2. 内网接口
interface GigabitEthernet0/0/1
ip address 192.168.1.1 255.255.255.0
# 3. 外网接口
interface GigabitEthernet0/0/0
ip address 100.1.1.1 255.255.255.0
nat outbound 2000 # Easy IP
nat server protocol tcp global 100.1.1.1 80 inside 192.168.1.100 80 # Web发布
# 4. 默认路由指向公网
ip route-static 0.0.0.0 0.0.0.0 100.1.1.254

七、常见故障排查#

7.1 故障排查流程#

过早老化

NAT转换不生效

ACL匹配正确?

检查ACL源地址

通配符掩码

NAT配置正确?

检查地址池

NAT类型参数

接口应用正确?

确认出接口

nat outbound方向

路由可达?

检查路由表

默认路由

会话表存在?

流量未到达

检查防火墙ACL

会话老化?

调整会话老化时间

过早老化

NAT转换不生效

ACL匹配正确?

检查ACL源地址

通配符掩码

NAT配置正确?

检查地址池

NAT类型参数

接口应用正确?

确认出接口

nat outbound方向

路由可达?

检查路由表

默认路由

会话表存在?

流量未到达

检查防火墙ACL

会话老化?

调整会话老化时间

7.2 常见问题#

问题可能原因排查方法
内网无法上网ACL未匹配display acl 2000 查看命中计数
NAT未应用到正确接口display nat session 检查是否有会话
缺少默认路由display ip routing-table 0.0.0.0
部分应用不通需要ALG支持检查FTP/SIP等协议,display nat alg
端口范围不足公网IP端口耗尽,增加地址池
NAT Server发布失败协议/端口配置错误display nat server 核对配置
未使能 nat server接口下 nat server enable
防火墙拦截检查入方向ACL/安全策略
会话表溢出并发连接数过多display nat session number
会话老化时间过长调整TCP/UDP会话老化时间
设备性能不足考虑升级或分布式NAT

7.3 常用排错命令#

Terminal window
display nat session all # 查看所有NAT会话
display nat session number # 查看会话数量统计
display nat session source 192.168.1.10 # 查看指定源IP的会话
display nat address-group 1 # 查看NAT地址池状态
display nat server # 查看NAT Server映射
display nat alg # 查看ALG状态
display nat statistics # 查看NAT统计信息
display nat outbound # 查看出方向NAT配置
reset nat session all # 清空所有NAT会话(谨慎使用)

7.4 抓包定位#

Terminal window
# 在NAT设备上抓包确认报文是否到达
capture-packet interface GigabitEthernet0/0/1 destination terminal
# 确认NAT转换是否正确
# 抓取入接口和出接口报文,对比源IP是否被正确转换

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏

评论区

Profile Image of the Author
zs13
Hello, I'm Zs13.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
22
分类
1
标签
46
总字数
64,717
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.15.10
文章许可
CC BY-NC-SA 4.0