NAT:端口受限类型和对称型有什么区别?(续)

友情提醒,没有阅读类型1、2的读者,可能无法理解类型3,4。


类型3:限制地址端口型

归纳能力强的读者,其实看到这个类型就可以归纳出,入向的过滤列表更加严格了,采用了四元组里全部的四元。

 

让我们看一下这个入向的过滤列表是什么样子:

 

NAT入向(Outside  -> Inside)过滤列表为:

ACL = (1.1.1.1,12121,2.2.2.22222

 

这个过滤列表的潜台词是,只有主机2.2.2.2且使用端口号2222才可以访问客户端。

 

但是在P2P通信中,客户端想和服务器B后方的客户端通信,但是由于在茫茫的互联网无法找到对方,所以需要服务器A的存在,做为一个双方全球IP、端口号的中介。服务器A的全球IP= 2.2.2.2,端口号=2222 是已知的,互联网上任何主机都可以找到它。

 

在上文中客户端主机在互联网上联系方式 = 1.1.1.1:12121

 

然后服务器A将客户端的联系方式告知服务器B,服务器B就可以发起一个主动连接,四元组为:

(1.1.1.1,12121,3.3.3.3,13131)

很显然这个IP报文无法通过保护客户端的NAT设备。


客户端主机发现一个规律,互联网很多NAT设备有一个特点,这个特点是什么呢?

 

假设客户端主动发起以下两个TCP连接:

10.1.1.1,11111,2.2.2.2, 2222)

10.1.1.1,11111,3.3.3.3,13131)

 

被NAT修改后的四元组分别为:

1.1.1.1,12121,2.2.2.2, 2222)

1.1.1.1,12121,3.3.3.3,13131)

 

这个特点是,当源主机使用相同的IP、端口号时,NAT通常也会使用相同的IP、端口号予以映射。

 

将主机重复使用同一个端口号用于不同连接的行为称为端口重用

 

上文说了,四元组为(1.1.1.1,12121,3.3.3.3,13131)的IP报文无法通过客户端的NAT设备。

 

之所以无法通过,是因为客户端还没有从内网主动发起连接,一旦发起连接,意味着(1.1.1.1,12121,3.3.3.3,13131)这个过滤列表立马生效,那么来自服务器B的流量就可以进入了。

 

本文为了简化,服务器B并不是一台服务器,其实它也是一台NAT,它的全球IP =3.3.3.3,用于保护后方的客户端,这个客户端在互联网上的联系方式为 = 3.3.3.3:13131。

 

这种借助于服务器A,可以无障碍穿越NAT的技术,俗称打洞技术



运营商并不欢迎P2P通信,P2P的流量如果不加限制,会将互联网挤爆。其中一个限制措施就是类型4。


类型4:对称型NAT

类型4与类型3没有什么太大差别,都是基于四元组严格过滤。不同之处在于,当源主机使用相同的IP、端口号时发起多个TCP连接时,对称型NAT修改后的源IP、源端口一定是不同的。

 

客户端主动发起以下两个TCP连接:

10.1.1.1,11111,2.2.2.2, 2222)

10.1.1.1,11111,3.3.3.3,13131)

 

对称型NAT修改后的四元组分别为:

1.1.1.1,12121,2.2.2.2, 2222)

1.1.1.1,56789,3.3.3.3,13131)

 

而服务器B从服务器A那里拿到的客户端的联系方式却是:1.1.1.1:12121,服务器发起的主动连接四元组为:

 

1.1.1.1,12121,3.3.3.3,13131)



很显然,客户端主机与服务器B在不同的轨道上擦肩而过,永远无法相交。这是运营商最乐意看到的,那么客户端与服务器B之间的通信只有通过服务器A中转,这样就大大限制了P2P的应用。