一、背景
前一篇文章提到PCDN, 也就是p2p技术+CDN技术进行融合。 P2P技术有利于文件的快速分发。我们的CDN在控制节点分发数据的时候,向边缘节点传输数据,也是一种分发,还有各边缘节点强制同步数据等等,如果结合P2P技术进行整合,能更灵活,同时还降低了控制节点的压力。
在研究PCDN的时候就发现了P2P技术中肯定绕不开的技术就是NAT网络地址转换技术,所以专门写一篇来回顾NAT的作用和内网穿透实现。
二、NAT技术
1、简介
NAT 技术允许将一个 IP 地址域(如私有网络中的 IP 地址)转换为另一个 IP 地址域(如公有网络中的 IP 地址)。其主要作用是解决 IPv4 地址空间不足的问题,使得多个私有网络中的设备能够通过少数几个公有 IP 地址访问互联网,同时还能隐藏内部网络的拓扑结构,增强网络的安全性。
早期NAT的出现是为了防止IPV4枯竭的一种延缓手段。 现在IPV4已经全部分配耗尽了。 我们上网不可能每个人都拿到一个IPV4, 所以需要将我们内网IP转换为一个公网IP才能上互联网,这里做转换工作的就是NAT。
2、地址转换方式和映射关系-分类
NAT(网络地址转换)主要有以下三种类型:
- 静态 NAT
- 原理:将内部网络中的每个私有 IP 地址与一个外部公有 IP 地址进行一对一的静态映射。这种映射关系是固定的,不会随着时间或网络流量的变化而改变。
- 应用场景:适用于需要对外提供固定 IP 地址服务的设备,如企业内部的服务器,需要让外部用户能够通过固定的公网 IP 地址访问。
- 动态 NAT
- 原理:从一个公有 IP 地址池中动态地为内部网络中的设备分配公有 IP 地址。当内部设备需要访问外部网络时,NAT 设备会从地址池中选取一个未被使用的公有 IP 地址进行映射,并在使用完毕后将其释放回地址池,以便其他设备使用。
- 应用场景:适用于内部网络中设备数量较多,但同时访问外部网络的设备数量相对较少的情况,通过动态分配可以有效地利用有限的公有 IP 地址资源。
- 网络地址端口转换(NAPT)
- 原理:也称为端口映射,它将内部网络中多个私有 IP 地址映射到同一个公有 IP 地址的不同端口上。通过端口号来区分不同的内部设备,使得多个内部设备可以共享一个公有 IP 地址同时访问外部网络。
- 应用场景:这是最常见的 NAT 类型,广泛应用于家庭网络和小型企业网络中,以满足多个设备同时通过一个宽带连接访问互联网的需求。
此外,还有一些扩展的 NAT 类型,如静态 NAPT、动态 NAPT 等,它们都是在上述三种基本类型的基础上进行组合或优化,以满足不同的网络需求。
3、数据包地址转换的方向和目的-分类
1、基于数据包地址转换方向
- SNAT:主要针对数据包的源地址进行转换。当内部网络中的设备访问外部网络时,SNAT 会将数据包的源 IP 地址从内部私有 IP 地址转换为外部公有 IP 地址,使得外部网络设备看到的是转换后的公有 IP 地址,从而实现内部设备对外部网络的访问。例如,在企业内部网络中,员工的电脑通过公司的防火墙访问互联网,防火墙就会使用 SNAT 将员工电脑的私有 IP 地址转换为公司申请的公有 IP 地址。
- DNAT:侧重于对数据包的目的地址进行转换。当外部网络的设备想要访问内部网络的特定设备或服务时,DNAT 会将数据包的目的 IP 地址从外部可访问的公有 IP 地址转换为内部网络中实际提供服务的设备的私有 IP 地址,引导外部流量准确到达内部目标设备。比如,企业对外提供 Web 服务的服务器部署在内部网络,外部用户通过访问企业的公有 IP 地址来访问该 Web 服务,这时防火墙就会使用 DNAT 将外部用户请求的目的地址转换为内部 Web 服务器的私有 IP 地址。
2、基于地址转换目的
- SNAT:目的主要是实现内部网络中多个设备共享少量公有 IP 地址访问外部网络,解决 IPv4 地址短缺问题,同时隐藏内部网络的拓扑结构和设备信息,增强网络安全性。因为外部网络只能看到经过 SNAT 转换后的公有 IP 地址,无法直接得知内部设备的真实 IP 地址和网络结构。
- DNAT:主要目的是让外部网络能够访问内部网络中的特定服务器或服务。通过在边界设备(如防火墙、路由器)上配置 DNAT 规则,将外部的访问请求引导到内部相应的服务器上,使得内部网络的服务器可以对外提供服务,如 Web 服务、邮件服务等。
4、内网主机与外部网络通信的限制程度和映射规则-分类
1、NAT1(全锥形 , Full Cone)
属于限制最少的类型。内网主机使用一个固定的公网 IP 和端口进行所有外部通信,任何外部主机只要知道这个公网 IP 和端口,就能向内网主机发送数据。
2、NAT2(IP 限制锥形 , IP - restricted ConeNAT)
相比 NAT1 增加了请求源IP地址限制。内网主机使用一个固定的公网 IP 和端口进行所有外部通信,但只有内网主机曾向某外部主机发送过数据,该外部主机才能向内网主机发送数据,端口不受限。
NAT2情况下,只有注册中心的这个公网IP才能往110.0.1.1:3389访问或者写入数据,注册中心请求的端口无限制。 其它IP一律拒绝
3、NAT3(端口限制锥形, Port - restricted Cone NAT)
在 NAT2 的基础上又增加了端口限制。内网主机使用一个固定的公网 IP 和端口进行所有外部通信,只有内网主机曾向某外部主机的特定 IP 和端口发送过数据,该外部主机才能向内网主机发送数据,即 IP 和端口都受限。
在NAT2的基础之上,限定了源客户端的端口, 只接受注册中心的9000传来的数据,就算是这个注册中心的IP, 不是9000端口都不行!
4、NAT4(对称型 NAT, Symmetric NAT)
限制最为严格。内网主机与每个外部主机通信时,会分配不同的公网 IP 和端口。外部主机只能在收到内网主机的数据后才能回传数据,内部地址每一次请求一个特定的外部地址,都可能会绑定到一个新的端口号,即请求不同的外部地址映射的端口号可能不同。
NAT4最为严格,首先每当和不同外部主机通信都会使用不同端口(公网IP可能相同、可能不同) , 端口和IP是动态分配的、不是固定的。
其次在NAT3的基础上,你只能与外部主机连接的端口进行通信,限制外部主机IP、端口。 并且还做了更为严格的数据过滤,例如会话绑定。
NAT4基本就是只能源主机和目标外部主机的严格通信,第三方完全都插不进来。 安全性最高,开放性最低。
三、总结
P2P需要解决的前提就是内网穿透问题, 也是难点问题, 因为大家上网都在局域网,正常情况下你是无法直接穿透内网与其它节点进行数据交互和通信的, 那必须要穿透内网才是发挥P2P的优势。
因为现在运营商对P2P, PCDN管控很严格,很多地方都直接把上网的NAT改为NAT4级别,基本上你都无法来穿透内网或者说你要花费的成本变高了很多。
之前用PCDN一些盒子来挂闲置流量赚取收益,现在越来越难。但是上有政策下有对策,还是有人能想出一些办法绕过这个被降为NAT4的情况。