NAT网络地址转换(Network Address Translation)主要用于解决IP地址不足而提出的,NAT主要有以下几类
1、S-NAT(Source Network Address Translation)基于源地址的NAT
2、D-NAT(Destination Network Address Translation)基于目标地址的NAT
3、P-NAT(Port Network Address Translation)基于端口的NAT
P-NAT 也称为 P-AT(Port Address Translation)
4、ID-NAT(Identity NAT)基于ID的NAT
NAT大致为以上四类,下面阐述这些分别用于那些场景:
1、S-NAT 常用于 NAT 端口映射,DMZ、NAT/1
2、D-NAT 常用于公网重定向到内网
3、P-NAT 常用于 TCP/IP、UDP/IP 这些L3层协议
4、ID-NAT 常用于 ICMP 这些L3层协议
GRE/PPP帧,NAT路由做工是拆出欲转发IP报文在按照正常路由NAT处理的,因为GRE/PPP帧一般带的就是一个L3网络层完整的IP数据帧。
关于 NAT/1、NAT/2、NAT/3 类
1、NAT/1 类
网络没有限制直连公网、拥有独立IP地址、路由器之中DMZ功能就是这个,或者光猫桥接到你的电脑。
优点:网络无限制,所以几乎没有网络问题
缺点:因为没有NAT或防火墙的保护,可能面临更高的安全风险。
2、NAT/2 类
最常见的NAT类型,设备位于路由器后面,并通过NAT与外网通信,设备拥有私有IP地址,而路由器负责将内部流量映射到一个公网IP地址。
优点:保持较好网络连接的同时,提供了一定程度的网络安全。
缺点:可能会遇到某些连接问题,尤其是在一些P2P连接的程序中。
3、NAT/3 类
NAT或防火墙的限制非常严格,可能只允许出站连接,而对于进站连接则大多数被阻止,就是端口映射都不行,可以映射端口是 NAT/2 类。
优点:拥有较高的安全级别,未经请求的外部流量几乎都被阻止。
缺点:可能导致多数网络服务和P2P应用出现连接问题,影响在线游戏、视频会议等应用的体验。
4、NAT/4 类
这种是NAT/3、NAT/3,是个不存在的NAT类型,只是有很多人这么叫,一般就是大陆国内ISP运营商给家宽整的IP地址网络,大内网套小内网。
关于锥形NAT(Cone NAT),又称为圆锥形NAT,它主要是用来描述如何处理外部到内部的连接请求,它分为以下几个类型。
1、完全锥形NAT(Full Cone NAT)
意思就是完全不受限制,外部任意端口、IP地址都可以访问,比如P2P穿透一般需要这种,星际战甲(Warfame)那款TPS游戏,玩家练级就比较吃这个。
但需要注意的是,完全锥形NAT,是基于端口映射关系的,即一个端口对应一个内网IP+端口(固定)不可变的。
所以:可以静态端口映射到公网的,都属于是锥形NAT。
2、受限锥形NAT(Restricted Cone NAT)
这个跟完全锥形NAT很类似,区别就一个就是,它只允许来自内部主机之前已发送过数据包的外部IP地址的入站流量通过。
你可以理解,我们在内网NAT客户端设备之中用UDP链接了外网某服务器IP,然后对面可以一直用自己的IP,任意的端口号给我们内网的设备发数据过来,这种常见是UDP、ICMP NAT。
3、端口受限锥形NAT(Port Restricted Cone NAT)
这个跟第二个没多大区别,就是在多限制了一个端口号,主要用在TCP协议的,NAT会跟踪TCP的链接状态。(TCP connection nat tracker)限制对面不能以非这个IP+PORT的数据穿过NAT,所以TCP打不了NAT洞。
4、 对称锥形NAT(Symmetric NAT)
对称锥形NAT对于每一个不同的外部目的地(即不同的外部IP地址或端口),都会使用不同的映射。
即使是从同一个内部IP地址和端口发出的两个数据包,如果它们的目标不同,也可能被映射到两个不同的外部IP地址和端口。
这个主要用在UDP/P2P,你可以理解先打NAT洞,然后用任何类型的IP+PORT都可以向这个UDP端口发送数据,当然这个UDP端口也可以向任何目标IP+PORT地址发数据,打洞需要这种NAT,当然完全锥形NAT更好,毕竟能静态映射它不好嘛,只是这两个类型NAT大多数时候容易被人混淆。