NATIP地址分为公有地址和私有地址。公网地址由IANA统一分配,用于连接互联网;私有地址可以自由分配,用于私有网络中的内部通信。
私有和公共网络
随着互联网用户的快速增长,2019年11月25日,全球公网IPv4地址耗尽。在IPv4地址耗尽之前,利用NAT(网络地址转换)技术解决IPv4地址不够用的问题,并延续至今。
NAT技术是将私有地址转换成公有地址,使私有网络中的主机可以通过少量的公有地址访问互联网。
但NAT只是一种过渡技术,通过采用支持更大地址空间的下一代IP技术,即提供几乎取之不尽的地址空间的IPv6协议,从根本上解决了问题。
NAT技术
NAT IP地址中预留了三个私有地址段,可以在私有网络中任意使用。
私有地址范围
其余的IP地址可以在互联网上使用,由IANA管理,被称为公共地址。
公共网络地址范围
NAT解决了IPv4地址不够用的问题,NAT屏蔽了专网用户的真实地址,提高了专网用户的安全性。
典型的NAT组网模式,网络通常分为两部分:私网和公网,各自使用自己的地址空间。私有网络使用私有地址10.0.0.0/24,而公有网络使用公有地址。为了让主机A和B访问Internet上的服务器,需要在网络边界部署NAT设备来执行地址转换。NAT设备通常是路由器或防火墙。
典型的NAT网络
基本NAT
NAT基本上是最简单的地址转换方式。它只翻译数据包的IP层参数,分为静态NAT和动态NAT。
静态NAT意味着公有ip地址和私有IP地址之间是一对一的关系。一个公有IP地址对应一个私有IP地址,建立并维护静态地址映射表。
动态NAT意味着公共ip地址和私有IP地址之间是一对多的关系。同一个公有IP地址分配给不同的私有用户,使用时间必须错开。它包含一个公共IP地址池和一个动态地址映射表。
给我一个动态的栗子
私网主机A( 10.0.0.1)需要访问公网(61.144.249.229)的服务器,在路由器RT上配置NAT,地址池是从219.134.180.11到219.134.180.20。地址转换过程如下:
基本NAT
向服务器发送消息,网关为10.0.0.254,源地址为10.0.0.1,目的地址为61.144.249.229。
合同
收到IP消息后,RT查找路由表,并将IP消息转发到传出接口。由于NAT配置在出接口上,RT需要将源地址10.0.0.1转换为公网地址。
RT数据包收集
RT从地址池中查找第一个可用的公有地址219.134.180.11,并用该地址替换数据包的源地址。转换后的数据包的源地址是219.134.180.11,目的地址保持不变。同时,RT在其NAT表中添加一个条目,记录私有地址10.0.0.1和公有地址219.134.180.11之间的映射。RT将消息转发到目的地址61.144.249.229。
NAT转换
收到消息后,服务器会进行相应的处理。
服务器发送一条响应消息,源地址为61.144.249.229,目的地址为219.134.180.11。
服务器发送响应数据包
收到消息后,RT发现消息的目的地址219.134.180.11在NAT地址池中,因此检查NAT表并找到相应的条目。之后,它使用私有地址10.0.0.1替换公网地址219.134.180.11,转换后的报文源地址不变,目的地址为10.0.0.1。RT正在将消息转发给a。
NAT转换
a收到消息,地址转换过程结束。
包集合
如果B也想访问服务器,RT会从地址池中再分配一个可用的公有地址219.134.180.12,并在NAT表中增加相应的条目,记录B'之间的映射关系;的私有地址10.0.0.2和公共地址219.134.180.12。
b的NAT转换
NAPT
在基本NAT中,私有地址和公有地址是一一对应的,即一个公有地址在同一时间只能分配给一个私有地址。只解决了公网和私网的通信问题,没有解决公网地址不足的问题。
表格NAT
NAPT(网络地址端口转换)可以同时转换数据包的IP地址、协议类型和传输层端口号,可以明显提高公有IP地址的利用率。
NAPT的NAT表
给我一个栗子
私网主机A( 10.0.0.1)需要访问公网的服务器的WWW服务(61.144.249.229),在路由器RT上配置NAPT,地址池是从219.134.180.11到219.134.180.20。地址转换过程如下:
向服务器发送消息,网关为RT( 10.0.0.254),源地址和端口为10.0.0.1:1024,目的地址和端口为61.144.249.229:80。
合同
收到IP消息后,RT查找路由表,并将IP消息转发到传出接口。由于NAPT配置在传出接口上,RT需要将源地址10.0.0.1:1024转换为公有网络地址和端口。
RT从地址池中查找第一个可用的公有地址219.134.180.11,用这个地址替换数据包的源地址,再查找这个公有地址的一个可用端口,比如2001,用这个端口替换源端口。转换后的数据包的源地址是219.134.180.11:2001,目的地址和端口保持不变。同时,RT在其NAT表中添加一个条目,记录私有地址10.0.0.1:1024和公有地址219.134.180.11:2001之间的映射。RT将消息转发到目的地址61.144.249.229。
NAPT转换
收到消息后,服务器会进行相应的处理。
服务器发送一条响应消息,源地址为61.144.249.229:80,目的地址为219.134.180.11:2001。
服务器发送响应数据包
收到报文后,RT发现报文的目的地址在NAT地址池中,于是检查NAT表,找到相应的条目。之后,它使用私有地址和端口10.0.0.1:1024替换公有网络地址219.134.180.11:2001。转换后的报文源地址和端口保持不变,目的地址和端口为10.0.0.1:1024。RT将消息转发给a.
NAPT转换
a收到消息,地址转换过程结束。
如果B也要访问服务器,RT会从地址池中分配同一个公有地址219.134.180.11,但另一个端口3001,并在NAT表中增加相应的条目,记录B'之间的映射关系;的私有地址10.0.0.2:1024和公共地址219.134.180.12:3001。
b的NAPT转换
易IP
在标准NAPT配置中,需要创建一个公共网络地址池,也就是说,必须首先知道公共网络IP地址的范围。但是,在拨号接入中,公网的IP地址是由运营商动态分配的,这可以事先确定,而标准NAPT可以不做地址翻译。要解决这个问题,就要用易IP。
Easy IP也称为基于接口的地址转换。在地址转换过程中,Easy IP的工作方式与NAPT相同,同时转换数据包的IP地址、协议类型和传输层端口号。但是Easy IP直接用公网接口的IP地址作为转换后的源地址。Easy IP适用于拨号访问互联网和动态访问公共IP地址。
易IP
Easy IP不需要配置地址池,只需要配置一个ACL(访问控制列表)来指定需要NAT转换的私有IP地址范围。
NAT服务器
根据基本NAT和NAPT的工作原理,NAT条目由私网主机发起访问公网主机生成,公网主机无法发起连接私网主机。所以NAT隐藏了内部网络结构,具有屏蔽主机的功能。然而,在实际应用中,内部网可能需要提供外部服务,如Web服务,常规的NAT无法满足要求。
为了满足公网用户访问私网内部服务器的需求,需要使用NAT服务器功能,将私网地址和端口静态映射为公网地址和端口,供公网用户访问。
NAT服务器
给我一个栗子
A的私网地址是10.0.0.1,端口8080提供Web服务。向公网提供Web服务时,要求端口号为80。在NAT设备上启动NAT服务器功能,将私有IP地址和端口10.0.0.1:8080映射到公有IP地址和端口219.134.180.11:80,这样公有主机C就可以访问A 美国的网络服务通过219.134.180.11:80。
NAT ALG
基本NAT和NAPT只能识别和修改IP报文中的IP地址和端口号信息,不能修改报文中携带的信息。因此,一些协议在IP消息中携带网络信息,如FTP、DNS、SIP、H.323等。无法正确转换。
ALG可以识别应用层协议中的网络信息,在转换IP地址和端口号时正确转换应用层数据中的网络信息。
以栗子为例:ALG 处理FTP的主动模式
FTP是一种基于TCP的协议,用于在客户端和服务器之间传输文件。FTP工作时,建立两个通道:控制通道和数据通道。控件用于传输FTP控制信息,数据通道用于传输文件数据。
私网A( 10.0.0.1)访问公网服务器(61.144.249.229)的FTP服务,在RT上配置NAPT,地址池从219.134.180.11到219.134.180.20。地址转换过程如下:
NAT ALG
a向服务器发送FTP控制信道建立请求。报文的源地址和端口是10.0.0.1:1024,目的地址和端口是61.144.249.229:21,携带的数据是IP=10.0.0.1端口=5001 ,意思是告诉服务器使用TCP端口5001传输数据。
合同
RT收到报文后,建立10.0.0.1:1024与219.134.180.11:2001的映射关系,转换源ip地址和TCP端口。根据目的端口21,rt识别出这是一个FTP消息,因此它也检查了应用层数据,发现原始数据是IP=10.0.0.1端口=5001 。因此,为到219.134.180.11:2002的数据通道10.0.0.1:5001: 10.0.0.1:5001建立第二映射关系。转换后的报文源地址和端口为219.134.180.11:2001,目的地址和端口不变,携带的数据为IP=219.134.180.11港口=2002 。
NAT ALG转换
服务器收到消息后,向a回复了命令ok消息,FTP控制通道建立成功。同时,服务器根据应用层数据确定A的数据通道网络参数为219.134.180.11:2002。
a需要从FTP服务器下载文件,所以它发起一个文件请求消息。服务器收到请求后,发起数据通道建立请求。IP报文的源地址和端口是61.144.249.229:20,目的地址和端口是219.134.180.11:2002,IP报文携带FTP数据。
数据通道
NAT实战基础NAT实验
实验拓扑图
拓扑图
实验要求
ENSP模拟器
PC通过公共网络地址访问互联网。
实验步骤
根据接口IP地址表配置每台设备的接口地址。
IP地址表
PC配置
RT配置
ISP配置
在RT上配置NAT配置。
NAT配置
配置基本NAT只需要一个命令:将私有IP地址转换为公有IP地址,并在接口视图中配置NAT静态全局全局地址内部主机地址命令。默认路由是网关路由器上的常见配置。使用display nat static命令查看RT上的静态nat配置。
验证电脑的网络功能。
PC验证结果
抓取数据包,看看NAT转换的效果。分别抓取报文rt的内网端口G0/0/0和外网端口G0/0/1的报文,可以看到发送的Echo请求报文和接收的Echo应答报文都经过了NAT转换。
RT intranet端口抓取包
RT外部网络端口抓取包
NAPT实验
实验拓扑图
拓扑图
实验要求
RT使用NAPT函数
ISP分配4个可用的公有网络地址:202.0.0.3 ~ 202.0.0.6
VLAN 10的用户使用两个公共网络地址。
VLAN 20的用户使用另外两个公有地址。
实验步骤
根据接口IP地址表配置每台设备的接口地址。有关配置,请参考上一个实验的步骤1。
IP地址表
在rt上配置NAPT配置
NAPT构型
在NAPT的配置中,基本ACL用于指定私有IP地址范围。ACL 2010指定了VLAN 10的IP地址空间,ACL 2020指定了VLAN 20的IP地址空间。使用命令NAT address-group group-index start-address end-address指定公网的IP地址范围,并分别指定两个编号为1和2的NAT地址组。在外部网络接口上,使用NAT出站ACL-number address-group group-index绑定NAT转换关系。
使用display nat address-group命令查看RT上的nat地址组配置。使用display nat outbound命令检查与NAT的转换关系。
分别验证PC10和PC 20的互联网访问功能。
PC10验证结果
PC20验证结果
抓取数据包,看看NAT转换的效果。分别抓取报文rt的内网端口G0/0/1和外网端口G0/0/0的报文,检查VLAN 10的用户发送的Echo请求报文和接收的Echo回复报文是否都经过NAT转换。
RT内部网端口VLAN10数据包捕获
RT外部网络端口抓取包
其他常见的NAT命令
NAT服务器在接口视图中配置,命令格式为:NAT服务器协议{ TCP | UDP } global global-address global-port inside host-address host-port。
检查nat服务器配置信息命令:显示NAT服务器。
检查nat会话命令:显示NAT会话全部。
启动nat alg功能的命令:NAT ALG全部使能。
查看nat alg函数的命令:显示NAT ALG。
原标题:42张图详解NAT:换个马甲就能上网。
来源:【微信微信官方账号:Linux爱好者】欢迎关注!请注明文章出处。
标签:地址NATIP