公网/内网IP分配及NAT(Network Address Translation)地址转换协议
Posted on 2012-01-17 22:48 无忧consume 阅读(1113) 评论(0) 编辑 收藏 举报公网IP/内网IP: 在TCP/IP协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0~10.255.255.255 172.16.0.0/12:172.16.0.0~172.31.255.255 192.168.0.0/16:192.168.0.0~192
公网IP/内网IP:
在TCP/IP协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下:
10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255
使用保留地址的网络只能在内部进行通信,而不能与其它网络互连。因为本网络中的地址同样也可能被其它网络使用,如果进行网络互连,那么寻找路由时就会因为地址的不唯一而出现问题。但是这些使用保留地址的网络可以通过将本网络内的保留地址翻译转换成公共地址的方式实现与外部网络的互连。这也是保证网络安全的重要方法之一。
但是有一些宽带运营商尽管也使用了非私有地址分配给用户使用,但是由于路由设置的原因,Internet上的其它用户并不能访问到这些IP。
我们将这两种情况下应用的IP称为内网IP。
如果自己机器上网络接口的IP地址落在上述保留地址范围内,则可以肯定自己处于内网模式下。
内网IP对Internet的访问必须通过代理的方式,NAT(Network Address Translation)技术是基于TCP层面的代理,能够相当好地使用于各种IP服务应用,因此被广泛应用。之所以说是相当好,是因为NAT要求整个服务的连接是从内网向外网主动发起的,而外网用户则无法直接(主动)向内网内网的服务发起连接请求,除非在NAT的(所有)网关上针对服务的端口作了端口映射。
NAT转换的类型:
有四种NAT转换模型可以涵盖当前NAT的基本应用。
1、静态转换(Static NAT)
在路由器上手工配置私有IP地址和公网IP地址的对应关系,一经配置,转换表永久存在。明显的例子是NAT路由器上配置外网用户访问内网的服务器:内网服务器依然使用私网地址,在NAT路由器上,分配一个公网地址并配置私网地址/公网地址的转换表,对外提供公网IP地址给外部网络用户访问。
NAT转换表:202.110.10.10 8080 ---> 10.110.10.10 80 (www)
2、动态转换(Dynamic NAT)
路由器上保留一个合法地址列表,每当有转换需求的时候,从列表中选择一个进行转换。注意:动态转换依然是一对一的。
1)由于从列表中选择,每次转换采用的IP地址并不一定是同一个;
2)合法地址被采用后,其他的转换需求不能再使用这个合法IP。
3、复用转换(Overloading NAT)
在动态转换中,每个合法的IP地址只能在转换表中使用一次,在内部网络主机访问外部需求增多的情况下,合法地址列表中的IP地址会很快不够用。这时,可以利用上层协议标识,例如利用传输层TCP/UDP的端口号字段来协助建立NAT转换表项(ICMP报文的ICMP头中的Identifier字段也可以用来实现与端口号类似的功能)。这样,多个私有地址可以通过一个合法地址进行转换,这种类型的NAT转换也可以称为PAT(端口地址转换)。
转换表项例子:
10.10.1.1 100 202.110.10.1 100
10.10.1.1 101 202.110.10.1 101
10.10.1.2 102 202.110.10.1 102
......
理论上,1个公网地址可以提供的转换表项为2^16=65535个(尚未扣除知名端口数量)。这是INTERNET上NAT的典型应用。通过复用转换,还可以实现服务器负载分担的功能。
4、重叠转换(Overlapping NAT)
内部网使用的地址跟外部网重叠,这时需要把跟外部重叠的IP地址进行变换。在NAT路由器上,将外部网的重叠IP重新映射成不重叠的IP地址。这个方案可以解决使用相同私网网段的企业网络的合并问题。
10.10.10.1 168.192.10.1 172.10.1.1 10.10.10.1 10.10.10.1 172.10.1.1 168.192.10.1 10.10.10.1 在NAT路由器上,将外部网的重叠IP重新映射成不重叠的IP地址。这个方案可以解决使用
10.10.10.1 168.192.10.1 172.10.1.1 10.10.10.1
10.10.10.1 172.10.1.1 168.192.10.1 10.10.10.1
在NAT路由器上,将外部网的重叠IP重新映射成不重叠的IP地址。这个方案可以解决使用相同私网网段的企业网络的合并问题。
------------------------------
4种地址类型分别是:
内部局部地址(IL Inside local address)
内部全局地址(IG Inside global address)
外部局部地址(OL Outside local address)
外部全局地址(OG Outside global address)
------------------------------
NAT转换表
NAT按照转换表进行数据包的转发。
1)转发原则根据数据包的来源是内部还是外部而不同。NAT重叠转换为例,建立如下转换表:
内部局部 内部全局 外部局部 外部全局
10.10.10.1 172.10.10.1 — — — —
— — — — 168.192.10.1 10.10.10.1
10.10.10.1 172.10.10.1 168.192.10.1 10.10.10.1
左边主机访问右边主机发出的Packet_1 IP包到达NAT路由器转换后,源IP地址将根据转换表项第1行转换为172.10.10.1,目的IP地址将根据转换表项第2行转换为10.10.10.1,反之亦然。
2)按照数据驱动的方式建立,有静态,动态两种。静态地址转换类型表项一旦建立,将一直存在。动态地址表项在需要时动态建立,如果一段时间没有IP报文查询利用这个表项,到达老化时间后将自动删除,释放资源重新使用。
---------------------------
从功能上看,主要有以下几种典型的NAT:传统NAT(基本NAT,NAPT)、两次NAT、多宿主NAT。
两次NAT:即上文的“重叠转换NAT”
多宿主NAT(Multihomed NAT)
使用NAT会带来很多问题(RFC2993)。比如,NAT设备要为经过它的会话维护状态信息,而一个会话的请求和响应必须通过同一NAT设备做路由,因此通常要求允许NAT末梢域边界路由器必须是惟一的,所有的IP包要么发起,要么终结在该域。但这种配置将NAT设备变成了可能的单点故障点。
为了让一个内部网络能够在某个NAT链路故障的情况下,也可以保持与外部网络的连通性,通常希望内部网络到相同或不同的ISP具有多条连接(多宿主的),希望经过相同或不同的NAT设备。
又如,多个NAT设备或多条链路使用同一NAT,共享相同的NAT配置能够为相互之间提供故障备份。在这种情况下,有必要让备份NAT设备交换状态信息,以便当主NAT出现故障时,备份NAT能够担负起透明地保持会话的能力。
传统NAT(内部地址,端口)与(内部地址,端口)的映射方式主要有以下几种典型类型:ConeNAT(Full Cone、Restricted Cone、Port Restricted Cone、)和对称NAT。
1.锥形NAT(ConeNAT)
当在(私有IP,私有端口)与(公开IP.公开端口)已经建立了一个端口映射表后,克隆NAT将为随后从相同的私有地址和端口号发起的呼叫重复使用该映射,条件是只要使用映射(有时业叫绑定)的会话至少有一个继续保持激活状态。
从下图可以看出,客户A分别从相同的内部地址和端口号(10.0.0.1:1234)同时发起两个会话请求到服务器1和服务器2,因为这两个请求来自相同的内部地址和端口,所以克隆NAT将为这两个不同的会话请求分配相同的公开端点号(100.100. 100. 100:62000),以保证客户A的“身份”能够在经过翻译后仍然保持一致。NAT和防火墙不翻译端口号,因此也是克隆方式的NAT。根据克隆时受到的限制大小,又可以把克隆NAT分为以下三种:
(1)全双工锥形(Full Cone) 首先,把所有来自相同内部IP地址和端口的请求映射到相同的外部1P地址和端口。其次,任何一个外部主机通过把一个TP包发送给已得
(1)全双工锥形(Full Cone)
首先,把所有来自相同内部IP地址和端口的请求映射到相同的外部1P地址和端口。其次,任何一个外部主机通过把一个TP包发送给已得到映射的外部IP地址的方式,都能够把该包发送给该内部主机。
(2)限制性克隆(Restricted Cone)
把所有来自相同内部IP地址和端口号的请求映射到相同的外部IP地址和端口。与全克隆NAT方式不同,只有当内部主机以前曾经给IP地址为x的外部主机发送过一个包时,IP地址为x的该外部主机才能够把一个IP包发送给该内部主机。
(3)端口限制性克隆(Port Restricted Cone)
端口限制性克隆与限制性克隆类似,只是限制中多了端口号。特别是,一个外部主机可以发送一个源IP地址和源端口号分别为(x,P)的IP包给内部主机,只有当内部主机以前曾经给IP地址为x,端口号为P的外部主机发送过一个包时,IP地址为X的该外部主机才能够把一个源端口号为P的IP包发送给该内部主机。
2.对称NAT
对称式NAT(symmetric NAT)是指把所有来自相同内部IP地址和端口号,到特定目的1P地址和端口号的请求映射到相同的外部TP地址和端口。如果同一主机使用不同的源地址和端口对,发送的目的地址不同,则使用不同的映射。只有收到了一个IP包的外部主机才能够向该内部主机发送回一个UDP包。对称式的NAT不保证所有会话中的(私有地址,私有端口)和(公开IP,公开端口)之间绑定的一致性。相反,它为每个新的会话分配一个新的端口号。
从下图可以看出,假如客户A分别从相同的内部地址和端口号(10.0.0.1:1234)同时发起两个会话请求到服务器1和服务器2,对称NAT可能会为这两个来自相同地点的会话请求分配不相同的公开端点号,如把100 100. 100.100:62000分配给会话1,把100 100. 100.100:62001分配给会话2。因为这两个会话的有一个端点不同,所以虽然在翻译的过程中客户A的身份发生了变化,但NAT仍然能够正确工作。