网络地址转换
如果IPv4专用互联网连接到公共IPv4互联网,则必须通过“锥形模式”NAT网关,该网关将内部专用地址隐藏在单个全局唯一的公共IPv4地址后面。基本上,NAT网关以可逆方式将专用IPv4地址映射到传出数据包的单个公共IPv4地址,以便网关稍后可以将回复路由回发送传出数据包的内部节点。这就是为什么传入连接不适用于NAT后面的节点-NAT网关无法撤消从未撤消的映射。
还有另一种称为“1:1 NAT”的NAT,其中单个专用IPv4地址(可逆的)映射到单个公共IPv4地址。回复数据包直接进入相应的专用节点。每个此类映射都需要您以前的公共IPv4地址之一。任何外部节点都可以使用任何端口(路由器或防火墙中的子网到端口阻止)与此类内部节点建立传入连接。在我的公司,我们有一些落后于1:1 NAT的服务器。它们具有内部地址(例如,172.17.0.11),并且与关联的公共地址(例如,66.96.216.18)的连接将中继到内部地址(例如,172.17.0.11)。回复来自专用地址,但映射到公共地址。来自此节点的传出连接似乎来自此节点的1:1公共地址(66.96.216.18),而不是常规NAT公共地址。
另一种称为“端口映射”的NAT允许我将传入连接重定向到用于NAT的公共地址、特定端口、一个内部节点。例如,我可以将端口80映射到内部节点172.17.2.1。给定端口(例如80)只能映射到单个内部节点。但我可以将端口25上的传入连接映射到相同或不同的内部节点。因此,即使只有一个公共IPv4地址,我也可以通过端口映射在内部节点上运行服务器。如果您的ISP路由器的WAN接口上有专用地址,那么您就不走运了。
IPv4+NAT互联网中的集中式服务器
由于使用NAT时没有传入连接,因此NAT网关后面的节点只能建立传出连接,并且只能与具有公共IP地址的节点建立连接。这意味着,要允许一个专用互联网中的人们与另一个专用互联网中的人进行通信,我们必须拥有具有公共IPv4地址的中间服务器。
如果Alice的节点之间存在NAT网关,则它们无法直接连接到Bob。更典型的是,他们都在NAT后面;他们中的任何一个都无法连接到另一个。但是Alice可以使用公共地址与中间服务器建立传出连接,Bob也可以。因此,它们都连接到中间服务器(具有公共地址)并通过它来回发送消息:Alice的节点->中间服务器<-Bob的节点。
必须有人设置并运行该中间服务器,并且他们都必须拥有“帐户”。中间服务器上的帐户通常不是免费的。运行该服务器的人都可以访问其流量(如果他们不对其进行端到端加密),并且可能具有限制他们可以发送的内容(流量、流量类型等)的策略。他们甚至可能根据他们通过该中间节点运行的流量向他们收费。
Alice和Bob可能不是在同一台中间服务器上都有帐户,因此可能涉及两个中间服务器和三个链接–Alice的节点到她的服务器,她的服务器往返Bob的服务器,以及Bob的节点到他的服务器:Alice的节点->Alice的服务器<->Bob的服务器<-Bob的节点。
这设置起来很复杂,并且迫使集中到其他分散的互联网上。因此,我们最终得到了少量的集中式中间服务器(可能为数千或数百万用户提供服务)。这会影响可靠性(如果其中一个服务器出现故障,它会影响很多人,即使他们保持正常运行,他们也很容易过载)和隐私(有人可以将窥探软件放在中间服务器上并查看所有流量来回)。即使您使用TLS来保护链接,在中间服务器上,数据也是纯文本(未加密)的。您还将丢失从原始发件人到最终收件人的身份验证。可以使用S/MIME通过多个链接进行端到端隐私和身份验证,但这需要向每个用户颁发客户端数字证书并拥有支持S/MIME的软件。
这种情况对大多数人(甚至是网络工程师)来说似乎是“正常的”,因为自1990年代中期以来一直在使用这种方法,大多数人认为它一直都是这样,而且永远都是这样。
NAT与网络安全
许多人认为,如果没有人可以通过NAT与他们的节点建立传入连接,他们是“安全的”,NAT不会为网络增加任何安全性。这是一个神话。传入和传出连接被阻止特定端口上的流量的路由器或防火墙机制阻止。NAT实际上只是使这个过程复杂化。破坏NAT“保护”所需的只是一个“内部人员”(NAT遍历)。让某人运行一个与STUN服务器建立传出连接的应用程序,您可以使用该应用程序从互联网上的任何地方对他们的网络执行任何您想做的事情。
黑客也可以躲在NAT后面。如果他们从NAT后面攻击某人,可能会有数百甚至数千名其他人似乎来自同一地址。当执法部门试图追查罪魁祸首时,他们只能看到黑客躲在后面的公共地址。该公共广播背后的数千名用户中,哪一个是罪魁祸首?除非您可以记录NAT网关完成的所有映射(很难做到),否则几乎不可能在大海捞针中找到黑客。使用CGN就更难了,一个IP地址背后可能有成千上万的人(以及两个映射需要解开)。NAT是黑客的朋友。
DNS遍历伪造传入连接
如果NAT后面的IPv4节点不能接受传入连接,Skype如何工作?看起来我确实从我的节点连接到您的节点,即使您在NAT后面。我没有使用我的Skype副本登录中间服务器。
Skype(以及许多其他类似的应用程序)使用称为NAT遍历的东西来伪造传入连接。
我的Skype副本与称为STUN服务器的特殊节点建立了持久的传出连接。此服务器位于全球IPv4互联网上,并具有公共地址。它基本上允许您使用其公共地址接受传入连接,然后通过传出连接将其中继到STUN服务器。
那么谁拥有并运行STUN服务器呢?当我安装Skype时,我没有注册一个。任何人都可以部署STUN服务器——黑客、暴徒、国家安全局等。Skype执行DNSSRV查找,然后随机选择一个。您从其他Skype用户传入的信息将通过该服务器。您的节点和STUN服务器之间的流量可以使用TLS加密,但在STUN服务器上将以纯文本形式显示。运行和控制STUN服务器的人都可以随心所欲地监控您的流量。他们甚至可以修改它,你永远不会知道。他们甚至可以在此传出连接的另一端接管Skype客户端,并从中接管整个节点。听起来很吓人?
无NAT互联网
使用IPv6,不需要NAT(至少对于NAT66,将IPv6地址映射到其他IPv6地址)。部署NAT44的唯一原因是将IPv4地址空间的生命周期延长几年,尽管公共IPv4地址用完了,而后继协议(IPv6)是设计和部署的。它在这方面做得非常出色——我们现在有超过200亿台设备连接到公共IP地址不到30亿的互联网。但在这个过程中,它已经将全球IPv4互联网分裂成数百万个私有互联网,破坏了许多协议,并使危险的NAT穿越成为必要。它还使消息传递应用程序的设计和实施变得非常复杂。
虽然不需要NAT66,但可能需要一种称为NAT64的东西,它将IPv6地址映射到IPv4地址,以允许IPv6节点访问传统(仅限IPv4)节点。不幸的是,NAT64具有NAT44的所有问题,然后是一些问题。一方面,对于所有使用NAT64,7的节点,它都需要一个名为DNS64的非标准DNS版本。其他节点无法使用DNS64。NAT64也破坏了许多协议。很多人都在尝试使NAT64/DNS64工作,因为那时您可以在LAN中摆脱IPv4并为传统(仅IPv4)节点提供边界转换。
请注意,NAT64中使用的方案涉及DNS64服务器将IPv4地址嵌入到虚构的IPv6地址中,NAT64服务器使用该地址连接到真正的IPv4节点。这不能在另一个方向(“NAT46”)上完成,因为您无法将128位地址放入32位地址。
对于网络,有更好的方法可以将IPv6转换为IPv4,反之亦然,这些方法不需要DNS64并且没有上述问题。这些涉及在双堆栈网络中部署反向Web代理。DNS中现有的A记录保持不变,因此IPv4流量直接进入旧服务器(不通过代理)。对于IPv6,将创建一个指向反向代理的新AAAA记录。反向代理与旧服务器建立持续连接(通过IPv4),并通过IPv6返回回复。只有IPv6流量通过反向代理。与NAT64不同,此方案在两个方向上都有效-您可以以相同的方式使仅IPv6服务器双堆栈-您将旧的AAAA记录保留在DNS中,但添加指向反向代理的A记录。不幸的是,这种方法对非Web协议没有帮助。
在IPv6中,不乏公共地址-因此不需要延长IPv6地址空间的寿命。对于拥有IPv6全局地址的人来说,我们可以一劳永逸地摆脱NAT。
如若转载,请注明出处:https://www.hanjifoods.com/23398.html