这篇博客记录一下NAT和内网穿透的学习总结
参考:折腾必懂

一、NAT

(1)NAT是什么

NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。IPV4地址在19年年底已经被分配完了,NAT作为一种缓解IPv4公网地址枯竭的过渡技术,由于实现简单,得到了广泛应用。简单来说,NAT是为了缓解IP地址不足而产生的一项解决方案。当然现在出现的IPV6地址已经解决了数量上的问题。

(2)NAT的类别

NAT分为很多种。第一种是静态NAT(Static NAT),为一对一。
第二种是动态NAT(Dynamic NAT),为多对多。这两种有一个共同点就是最终的表现还是一个IP绑定一个主机,并没有缓解IPv4的地址枯竭问题。

第三种是端口地址转换PAT(Port Address Translation),这也是最常用的NAT,也叫做NAPT。这种与前两种相比,它即涉及到IP地址的转换也涉及到端口的转换。

NAPT也分两种,一种是SNAT(Source NAT),中文翻译为源NAT,基于源IP地址的NAT是指对发起连接的IP报文头中的源地址进行转换。它可以实现内部用户访问外部网络的目的。通过将内部主机的私有地址转换为公有地址,使一个局域网中的多台主机使用少数的合法地址访问外部资源,有效的隐藏了内部局域网的主机IP地址,起到了安全保护的作用。由于一般内网区域的安全级别比外网高,所以这种应用又称为NAT Outbound。
还有一种是DNAT(Destination NAT),基于目的IP地址的NAT是指对IP报文头中的目的地址进行转换。通常用于隐藏一个对外提供服务的网络设备的真实IP地址,使客户端可以通过访问一个公网地址来访问这些服务器。
下面通过访问网页的例子进行描述。
$MAMVVAHH_RI_TJMJK_D$_1.png

二、内网穿透

(1)内网穿透是什么

当然NAT也有它本身的缺陷,只能由内网主机发起连接,而不能从外网主机发起连接。由此诞生了内网穿透技术,让不同NAT网关背后的主机可以相互访问。网上看到一个例子觉得很形象。A在家上网,B也在家上网。有一款局域网游戏,AB想要一起玩。由于是局域网游戏,那么就需要A或者B其中一位,穿透广域网,去到另外一位的家里的局域网,成为局域网的一员。我们称这种行为叫内网穿透。

(2)内网穿透的实现

内网穿透技术涉及两大类,一种是STUN,STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址,从而替代位于应用层中的私网地址,达到NAT穿透的目的。STUN协议是典型的Client-Server协议,各种具体应用通过嵌入STUN客户端与STUN Server端通讯来完成交互。

还有一种是TURN,TURN解决NAT穿透的思路与STUN类似,都是通过修改应用层中的私网地址达到NAT穿透。 与STUN不同的是,TURN是通过两方通讯的“中间人”的方式实现穿透,在这种方式下, 要进行通讯的两方分别与位于公网上的TURN服务器建立各自的连接进行通讯,由服务器负 责在两方之间进行数据转发。

(3)内网穿透工具

Zerotier

官网:https://www.zerotier.com/

frp

文档:https://frps.cn/11.html