NAT技术

目录

前言

IP地址短缺问题并不是一个只有在将来某个时候可能发生的理论问题。现在,此时此地,这个问题已经发生。对于整个Internet而言,长期的解决方案是迁移到IPV6,它有128位地址。这个迁移过程正在缓慢地进行着,可能需要很长一段时间才可以完成。

为了在IPV6迁移的期间找到临时方案,今天普遍使用的解决方案是网络地址转换(NAT)。

一、NAT的基本思想

NAT的基本思想是Internet服务提供商(ISP,Internet Service Provider)为每个家庭或企业分配一个IP地址(或者,最多分配少量的IP地址),用这个IP地址来传输Internet流量。在客户网络内部,每台计算机有唯一的IP地址,该地址主要用来路由内部流量。当一个数据需要离开客户网络,发向其他ISP时,它需要执行一个地址转换,把内部唯一的IP地址转换成那个共享的IP地址。

通常,我们把由ISP分配的IP地址称为公网IP;
在客户网络内部的每一台计算机的IP地址称为私网IP,一般由一个DHCP服务器自动分配。

这种地址转换使用了IP地址的三个范围,这些地址已经被声明为私有化。任何网络可以在内部随意地使用这些地址。仅有的规则是不允许包含这些地址的数据包出现在Internet上 。这3个保留的地址范围为:

NAT的操作过程如下:

当一个数据包离开客户驻地时,首先经过一个NAT盒子(NAT box),NAT盒子将数据包的内部的IP地址(图中为10.0.0.1,私网IP)转换成客户拥有的真实IP地址(图中为198.60.42.12,公网IP)。

NAT盒子通常与防火墙组合成一个单一的设备,防火墙提供一种安全机制,它仔细地控制着进出客户网络的流量。

现在,NAT盒子一般集成到路由器或ADSL调制解调器中。

当一个数据包从客户网络经过地址转换之后发往Internet后,当应答数据包返回时(比如从Web服务器返回的应答包),本质上它的目标IP地址是198.60.42.12,也就是说应答包的目标IP地址。那么,当NAT收到这个包后,如何将应答数据包发给哪个客户网络的IP地址(私网IP)?

NAT的设计者们注意到,大多数IP数据包携带的要么是TCP有效载荷,要么是UDP有效载荷。无论是TCP,还是UDP,这两个协议的头都包含了一个源端口和目标端口字段。
NAT设计者利用发送方的源端口字段去解决这个问题 。下面以TCP头的源端口为例说明:
任何时候当出境数据包进入NAT盒子,其源地址10.0.0.1被真实的IP地址198.60.42.12取代,而且TCP的源端口(Source Port)字段被一个索引值取代,该索引值指向NAT盒子的地址转换表中的65536表项之一。该表项包含了原来的IP地址和原来的源端口。最后,NAT盒子重新计算IP头和TCP头的校验和,并将校验和插入到数据包中。(注:下图只是说明过程,并非真实的数据包格式和转换表)

当一个数据包从ISP到达NAT盒子时,从TCP头取出源端口字段,得到索引值,更加索引值查找NAT盒子的映射表。找到对应的表项后,从该表项提取出内部IP地址和原来的TCP源端口,并将它们插入到数据包中。然后重新计算IP和TCP校验和,并插入到数据包中。最后将该数据包传递给客户内部的路由器,它使用10.x.y.z地址进行正常的路由。

二、NAT的局限性

第一、因为NAT盒子上的映射是由出境数据包建立的,只能在出境数据包之后到达的入境数据包才能被接受。这意味着,家庭网络用户可以通过NAT与一台远程Web服务器建立TCP/IP连接,但远程用户无法与家庭网络的一台游戏服务器建立连接,这种情况需要特殊的配置技术或NAT穿越技术。

第二、NAT违反了最基本的协议分层规则,第K层不应该对第K+1层在本层的有效载荷中放什么做任何假设。

第三、Internet上的进程并不一定必须使用TCP或UDP。如果机器A上的一个用户觉得使用一种新的传输协议与机器B上的用户进行通话,那么,由于NAT的介入,这样的应用将无法工作。

第四、有些应用以规定的方式是使用多个TCP/IP连接或者UDP端口。例如,标准的文件传输协议(FTP,File Transfer Protocol)在数据包正文插入IP地址,接受正文提取这些地址,并使用它们。但NAT对这次安排一无所知,那么就无法进行正确的传输。

总结

相关推荐
DianSan_ERP12 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅12 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
2501_9462055213 天前
晶圆机器人双臂怎么选型?适配2-12寸晶圆的末端效应器有哪些?
服务器·网络·机器人
linux kernel13 天前
第七部分:高级IO
服务器·网络
数字护盾(和中)13 天前
BAS+ATT&CK:企业主动防御的黄金组合
服务器·网络·数据库
~远在太平洋~13 天前
Debian系统如何删除多余的kernel
linux·网络·debian
unfeeling_13 天前
Keepalived实验
linux·服务器·网络
坐吃山猪13 天前
OpenClaw04_Gateway常见问题
网络·gateway·openclaw
上海云盾商务经理杨杨13 天前
2025年重大网络安全事件回顾与趋势分析
网络·安全·web安全
kylezhao201913 天前
C# 的开闭原则(OCP)在工控上位机开发中的具体应用
网络·c#·开闭原则