ps: 如果对你有帮助,请点赞,谢谢!
引用:
- NAT的几种类型(https://blog.csdn.net/phoenix06/article/details/70139756)
- 对比Cone NAT 和 Symmetric NAT,说明STUN为何不适用于对称型NAT的穿透(https://blog.csdn.net/Rookie_Manito/article/details/85260943)
- 基于STUN协议的NAT穿越技术的研究与应用_郑浩(http://cdmd.cnki.com.cn/Article/CDMD-10497-1019832865.htm)
- AR530 V200R005C60 配置指南-NAT配置(https://support.huawei.com/enterprise/zh/doc/EDOC1000061797?section=j008)
- 华为路由器是否支持STUN(RFC3489 )中定义的各种类型的NAT?(https://forum.huawei.com/enterprise/zh/thread-294915-1-1.html)
向以上大佬致敬!
1. 经典STUN分类
RFC3261定义的分类,但是自从 RFC3489 发布后,经典 STUN 的判断 NAT 类型的分类算法被发现是不完美的,许多 NAT不完全符合由它定义的类型。
1.1 锥型NAT
锥型NAT指:内网同一个ip:port向不同的公网地址发起请求,无论被请求方的ip:port是怎样,都会一直被映射到同一个公网ip:port。
(ps: 假如公网ip上全部port都被映射过, 即公网ip的65536个port全部被不同的内网ip:port映射过,此时新的内ip:port将如何映射到公网?所以个人觉得"一直"是个伪命题,应该是在一定时间内,内网的同一个ip:port 可以保证映射到相同的公网ip:port,而事实上在华为路由器中也是如此)。
1.1.1 完全锥型NAT (Full Cone NAT)
解释:对于完全锥而言,X:y向P发送请求的过程就是在防火墙上“打洞"(建立一个4元组 (x,y,A,b),在此4元组存在时间内,任何一次X:y向外网请求都会被防火墙转换成A:b ),此时任何一台公网ip(M,S)都可以向A:b发送数据并最终映射到X:y。
1.1.2 地址限制型NAT (Restricted Cone NAT)
解释:对于地址限制型NAT而言,内网主机X:y向P:q发送请求的过程就是在防火墙上“打洞"(形成5元组 (X,y,A,b,P),在此5元组存在时间内,任何一次X:y向外网请求都会被防火墙转换成A:b ),此时,只有外网IP为P的地址才可以向A:b发送数据并最终映射到X:y,其他的外网IP都会被拦下。
1.1.3 端口限制型NAT (Port Restricted Cone NAT)
解释:对于端口限制型NAT而言,内网主机X:y向P:q发送请求的过程就是在防火墙上“打洞"(形成6元组 (X,y,A,b,P,q),在此6元组存在时间内,任何一次X:y向外网请求都会被防火墙转换成A:b ),此时,只有外网IP为P且端口为q的地址才可以向A:b发送数据并最终映射到X:y,其他外网ip:port都会被拦下。
1.2 对称型NAT (Symmetric NAT)
对称型NAT指:内网同一个ip:port向不同的公网地址发起请求,都会被映射到不同的ip:port 。
解释:
内网X:y向公网P,q请求,此时会在防火墙上生成6元组(A,y,A,b,P,q),此时仅只有P,q才能返回数据到A:b。
在此6元组存在的情况下,内网X:y向公网Mn发送请求,并不会采用原有6元组,而是生成新的6元组(X,y,C,d,M,n),此时仅有M,n和P,q才能返回数据到X,y。
2. RFC5389最新分类
在当今,NAT设备越来越复杂了,经典的NAT分类已经不能完整的描述设备NAT行为,因此,新的协议标准出现了。
新的协议将NAT从两个方面划分,即映射(LAN->WAN)和过滤(WAN->LAN)。
(这种划分有点分而治之的味道,应当学习。)
2.1 映射
NAT映射功能可以让内网中的一组主机通过NAT映射表映射到一个外部IP地址,共享这一个IP地址,即 将内网地址映射公网地址的过程。
2.1.1 端点无关映射 (Endpoint-independent Mapping)
对于相同的A:a ,无论访问哪个ip:port,映射成相同的公网地址E:e。 即,不考虑访问的ip:port。
2.1.2 地址相关映射 (Address-dependent Mapping)
对于相同的A:a,访问相同的ip,映射成相同的公网地址E:e,访问不同的ip,则出去的ip:port不同。
2.1.3 地址端口相关映射 (Address-And-Port-dependent Mapping)
对于相同的A:a,访问相同的ip:port,映射成相同的公网地址E:e,访问不同的ip:port,则出去的ip:port不同。
2.2 过滤
NAT过滤是指NAT设备对外网发到内网的流量进行过滤,即 将公网地址映射内网地址的过程。
(注意:地址的过滤一定是基于映射表来实现,也就是必须内网先向外网发包,形成映射表后,才可以过滤。)
2.2.1 端点无关过滤(Endpoint-independent Filtering)
数据报文2’代表公网主机PC-3(与报文1的目的地址不同)访问私网主机PC-1,目 的端口号为1111,只有配置了端点无关过滤,才允许此报文通过, 否则被NAT设备过滤掉。
即:与外部地址端口无关的NAT过滤行为
2.2.2 地址相关过滤(Address-dependent Filtering)
数据报文3’代表公网服务器PC-2(与报文1的目的地址相同)访问私网主机PC-1, 目的端口号为1111,源端口号为3333(与报文1的目的端口不同),只有配置了地址相关过滤或者配置了端点无关过滤,才允许此报 文通过,否则被NAT设备过滤掉。
即:只与外部地址相关的NAT过滤行为,而与端口无关。
2.2.3 地址端口相关过滤(Address-And-Port Filtering)
数据报文4’代表公网服务器PC-2(与报文1的目的地址相同)访问私网主机PC-1, 目的端口号为1111,源端口号为2222(与报文1的目的端口相同),这属于外部地 址和端口都相关的NAT过滤行为,是缺省的过滤行为,任何一种都过滤都可以,即地址端口相关过滤或者配置地址相关过滤或者配置了端点无关过滤都可以。
即:与外部地址和端口都相关的NAT过滤行为
3. 新旧协议等价互换
- 完全锥型NAT = 端点无关映射 + 端口无关过滤
- 地址限制型NAT = 端点无关映射 + 地址相关过滤
- 端口限制型NAT = 端点无关映射 + 端口地址相关过滤
- 对称型NAT = 端口地址相关映射 + 端口地址相关过滤
来源:oschina
链接:https://my.oschina.net/lianghao0/blog/3215761