NAT [Network Address Translation,网络地址转换] 技术
[TOC]
NAT:对IP数据报文中的IP地址进行转换,一般部署在网络出口设备
NAT的典型应用场景:
在私有网络内部使用私有地址,出口设备部署NAT
- 对于从内到外的流量,网络设备通过NAT将数据包的源地址进行转换
- 对于从外到内的流量,则对数据包的目的地址进行转换
通过私有地址的使用结合NAT技术,可以有效节约公网IPv4地址。
- 由于私有地址无法在Internet上路由转发,访问Internet的IP数据包将缺乏路由无法到达私有网络出口设备
- 如果使用了私有地址的私有网络需要访问Internet,必须在网络出口设备配置NAT,将访问Internet的IP数据报文中的私有网络源地址转换成公有网络源地址。
静态NAT
静态NAT:每个私有地址都有一个与之对应并且固定的公有地址,即私有地址和公有地址之间一对一映射
支持双向互访:
- 私有地址访问Internet经过出口设备NAT转换时,会被转换成对应的公有地址
- 外部网络访问内部网络时,其报文中携带的公有地址 [目的地址] 也会被NAT设备转换成对应的私有地址
静态NAT配置
1. 方式一:接口视图下配置静态NAT
# 完整版
[Huawei-GigabitEthernet0/0/0] nat static protocol { tcp | udp } global { global-address | current-interface | interface interface-type interface-number } global-port [ global-port2 ] [ vrrp vrrpid ] inside host-address [ host-address2 ] [ host-port ] [ netmask mask ] [ acl acl-number ] [ description description ]
# 常见形式
[Huawei-GigabitEthernet0/0/0] nat static global { global-address} inside {host-address }
数 | 参数说明 |
---|---|
protocol | 指定协议 |
protocol-number | 指定协议号 |
icmp | 指定对ICMP协议报文进行地址转换 |
tcp | 指定对TCP协议报文进行地址转换 |
udp | 指定对UDP协议报文进行地址转换 |
global | 设置NAT的公网信息 |
global-address | 指定NAT的公网IP地址 |
global-port | 指定提供给外部访问的服务的端口号。如果不配置此参数,则表示是any的情况,即端口号为零,任何类型的服务都提供 |
global-port2 | 指定公网结束端口。配置该参数时表示转换一段连续的端口,如果不配置此参数,则表示仅转换global-port端口 |
inside | 设置NAT的私网信息 |
host-address | 指定NAT的私网IP地址 |
host-address2 | 指定私网结束地址。配置该参数时表示转换一段连续的私网IP地址,如果不配置此参数,则表示仅转换host-address一个私网IP地址 |
host-port | 指定私网设备提供的服务端口号。如果不配置此参数,则和global-port端口号一致 |
vrrp vrrpid | 指定VRRP ID |
netmask mask | 指定静态NAT网络掩码 |
acl acl-number | 指定访问控制列表的索引值。可以利用ACL控制地址转换的使用范围,只有满足ACL规则的数据报文才可以进行地址转换 |
description description | 指定NAT的描述信息 |
current-interface | 指定global地址为当前的接口地址 |
interface interface-type interface-number | 指定global地址为接口地址。interface-type:代表指定接口的接口类型。interface-number:代表指定接口的接口编号 |
2. 方式二:系统视图下配置静态NAT:
[Huawei] nat static protocol { tcp | udp } global { global-address} { global-port } [ global-port2 ] inside { host-address } [ host-address2 ] [ host-port ] [ netmask mask ] [ description description ]
- 配置命令参数与接口视图下配置相同,视图为系统视图,之后在具体的接口下开启静态NAT
[Huawei-GigabitEthernet0/0/0] nat static enable #在接口下使能nat static功能
动态NAT
为了避免地址浪费,动态NAT提出了地址池的概念:所有可用的公有地址组成地址池
当内部主机访问外部网络时临时分配一个地址池中未使用的地址,并将该地址标记为In Use。当该主机不再访问外部网络时回收分配的地址,重新标记为Not Use
动态NAT转换过程
动态NAT输出:
- STEP 1:选择一个地址池中未使用的地址作为转换后的地址,同时将该地址的标记变为In Use
- STEP 2:生成一个临时的NAT映射表

动态NAT输入:
- STEP 1:查找NAT映射表,根据公有地址查找私有地址,并进行IP数据报文目的地址转换

动态NAT配置
1. 创建地址池:
[Huawei] nat address-group group-index start-address end-address
# 配置公有地址范围,其中group-index为地址池编号,start-address、end-address分别为地址池起始地址、结束地址
2. 配置地址转换的ACL规则:
[Huawei] acl number
[Huawei-acl-basic-number ] rule permit source source-address source-wildcard
# 配置基础ACL,匹配需要进行动态转换的源地址范围
# source-address,指定报文的源地址 source-wildcard,指定源地址通配符
3. 接口视图下配置带地址池的NAT Outbound:
[Huawei-GigabitEthernet0/0/0] nat outbound acl-number address-group group-index [no-pat]
# 接口下关联ACL与地址池进行动态地址转换,no-pat参数指定不进行端口转换
NAPT
动态NAT选择地址池中的地址进行地址转换时不会转换端口号,即No-PAT [No-Port Address Translation,非端口地址转换],公有地址与私有地址还是1:1的映射关系,无法提高公有地址利用率
NAPT [Network Address and Port Translation,网络地址端口转换]:
- 从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率
动态NAPT转换过程
动态NAPT输出:
- STEP 1:选择一个地址池中的地址,同时转换源IP、端口
- Step 2:同时生成一个临时的NAT映射表,其中记录:[ 转换前源IP : 端口 ],[ 转换后IP : 端口 ]

动态NAPT输入:
- STEP 1:查找NAT映射表,根据 [公有地址:端口] 查找对应的 [私有地址:端口] ,并进行IP数据报文目的地址、端口转换

Easy-IP
实现原理和NAPT相同,同时转换IP地址、传输层端口,区别在于Easy IP没有地址池的概念,使用接口地址作为NAT转换的公有地址
- Easy IP适用于不具备固定公网IP地址的场景:如通过DHCP、PPPoE拨号获取地址的私有网络出口,可以直接使用获取到的动态地址进行转换
NAT Server
指定 [ 公有地址 : 端口 ] 与 [ 私有地址 : 端口 ] 的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用
- 外网主机主动访问 [ 公有地址 : 端口 ] 实现对内网服务器的访问

NAT Server转换过程

NAT Server配置命令
[R1-GigabitEthernet0/0/1] nat server protocol { tcp | udp } global { global-address | current-interface | interface interface-type interface-number } global-port [ global-port2 ] [ vrrp vrrpid ] inside host-address [ host-address2 ] [ host-port ] [ acl acl-number ] [ description description ]
# 配置命令参数与静态配置参数基本相同
[R1-GigabitEthernet0/0/1] nat server protocol { tcp | udp } global [ global-address ] [ global-port ] inside [ host-addres s] [ host-port ]
# 简化形式