NAT 网络地址转换技术


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 ]
#	简化形式

文章作者: 十二惊惶
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 十二惊惶 !
  目录