NAT 是如何被破解的?

网络工程 路由器 ipv4 纳特 ipv6 ipv6-transition
2021-07-26 02:24:37

如果这听起来有点业余,或者这是错误的堆栈交换,请原谅我,但是......我一生中的大部分时间都在 NAT 路由器后面使用 ipv4。有人告诉我这是一个黑客行为;仅仅是因为 Internet 的 ipv4 地址用完了。

了解ip地址、路由器、子网、路由(子网之间)、端口的概念,开始了解网桥;但我不明白没有 nat 路由器后面的互联网是如何工作的......在 NAT 之前没有生活过我不明白为什么它是一个黑客......没有 NAT 的 IPv6 互联网是否只是意味着每个人都会得到一个ip 并且中间不需要 NAT 路由器和一个统一的 ip 地址来保护网络上的所有机器不被访问?在我看来,不是在单个路由器上安装单个防火墙,而是每台机器都必须使用自己的防火墙来保护自己。

那么为什么 NAT 是一种黑客行为,在实施该黑客行为之前,事情是如何运作的呢?还有什么了不起?

我住在美国,所以在互联网方面我们没有很多选择,而且大多数 ISP 都是 ipv4(或者至少他们是我住的地方)。

3个回答

在 NAT 之前,连接到 Internet 的每个设备都有自己的 IP 地址。互联网就是这样设计的。这为您提供了极大的灵活性和可见性。如果您有防火墙,那么它可以根据需要单独过滤每个地址、协议、端口等的流量。由于源地址和端口(如果适用,并非所有协议都有端口)以及目标地址和端口在发送方和接收方之间不会更改,因此调试起来要容易得多。并且,如果您想让设备管理自己的安全性也是可能的:只需告诉防火墙不要过滤该地址上的任何内容,或者根本不使用防火墙设备。你的选择 :)

让我们来看看 NAT 的最简单情况:当您的 ISP 只给您一个地址时,您只能将一台设备连接到互联网。这不是大多数人想要的:他们需要连接多个设备。因此,单个设备执行伪装技巧,以便在外部世界看来该单个设备正在执行所有互联网通信,而在该设备后面可能有多个设备认为它们可以正常连接到互联网,但实际上并没有一。具有真实互联网地址的单个设备使用的技巧是 NAT。

NAT 只能对使用端口号的协议进行“多路复用”。对于没有端口号的协议,连接由地址定义。由于您只有一个“真实”地址,因此您只能有一个连接。对于带有端口号的协议,如 UDP 和 TCP,连接通常由地址和端口定义。因此37.77.56.75:12345 <-> 94.142.242.216:80可以是一种连接和37.77.56.75:23456 <-> 94.142.242.216:80一种连接

如果37.77.56.75是 NAT 设备(它不是,它是我自己的 PC 的地址,我在这里不使用 NAT)它可以有一个内部状态表,该表可以记住37.77.56.75:12345对应于内部地址192.168.0.11:32431传出数据包将其原始源地址和端口 ( 192.168.0.11:32431) 替换为 NAT 设备自己的 ( 37.77.56.75:12345),而传入数据包则相反。

经常导致 NAT 和(有状态)防火墙混淆的原因是这两个功能都需要记住状态:谁在和谁说话?

有状态防火墙还必须跟踪谁在与谁通话。因此,NAT 设备和防火墙都需要记住存在会话37.77.56.75:12345 <-> 94.142.242.216:80NAT 设备还必须记住,这37.77.56.75:12345是真的192.168.0.11:32431防火墙对流量进行一些额外的过滤和检查。

如果不带防火墙功能的 NAT 设备碰巧与其状态表中的某些内容匹配,则它会让不需要的流量通过。防火墙将应用检查来防止这种情况发生。但是,如果传入和传出数据包的地址未更改,防火墙也可以这样做:它不需要 NAT 即可执行其功能。

NAT 被认为是一种黑客行为,因为它使互联网变得更加复杂。地址和端口正在改变,NAT 设备必须记住原始地址和端口是什么,它必须真正理解它应用 NAT 的所有传输协议,以便防止部署新的传输协议(没有人会使用新的传输协议因为没有 NAT 设备会支持它们,而 NAT 设备不会支持它们,因为没有人使用它们)等。

有人告诉我这是一个黑客行为;仅仅是因为 Internet 的 ipv4 地址用完了。

没错。IPv4 的最初概念是提供端到端连接,以便每个设备都可以连接到任何其他设备。

出于各种原因,NAT 是一个拐杖:

  • 这是一个瓶颈
  • 诊断网络问题并不容易
  • 出于各种原因,更高级别的几个协议在其有效负载中携带 IP 地址。例如,对于具有 SIP+RDP 的 VoIP,呼叫者的 IP 地址在 SIP 信令消息的 SDP 有效载荷中传输到被呼叫者。NAT 打破了这一点,因此需要进一步的支持(例如 STUN 和/或 TURN)来解决这个问题。因此进一步增加了复杂性。
  • 当使用一对多 NAT(又名“Cone NAT”)时,存根网络的地址被映射到 NAT 网关的外部地址。更准确地说,存根网络中的 addr_in/portnum 被映射到 addr_ex/portnum 以获取固定的addr_ex。现在只有 65535 个端口用于 TCP、UDP 或 SCTP,因此这限制了可以同时进行 NAT 的连接数。作为 C 类存根网络(例如 192.168.xx.0/24)中的私人用户,您几乎不会注意到这个限制,但一些 ISP 使用“运营商级 NAT”(CGN),这只是双 NAT。在这一点上,上述限制成为一个严重的问题。
  • CGN 的另一个问题是黑名单。如果您设法将自己列入基于地址的黑名单,那么您所有的 NAT“邻居”也是如此。

没有 NAT 的 IPv6 Internet 是否只是意味着每个人都获得一个 ip,并且中间不需要一个 NAT 路由器,它有一个统一的 ip 地址来保护网络上的所有机器不被访问?在我看来,不是在单个路由器上安装单个防火墙,而是每台机器都必须使用自己的防火墙来保护自己。

(a) NAT 是一种安全机制,以及 (b) 使用 IPv6,每台机器都可以连接到其他每台机器,这是一个根深蒂固的神话。首先,是的,NAT 在某种程度上就像一个非常基本的数据包过滤器,但不能替代真正的数据包过滤器。其次,您可以像以前使用 IPv4 一样使用数据包过滤器保护整个 IPv6 网络,因此您无需单独保护每个主机。

自 Web 早期以来,网络地址转换 (NAT) 和端口地址转换 (PAT) 已被广泛部署。将 NAT/PAT 描述为黑客攻击可能会产生误导。

恢复端到端连接是 IPv6 的一个设计目标,其中不常部署 NAT ¹

防火墙和当前的下一代防火墙是基于网络的专用设备,可以执行 NAT/PAT 角色之外的深度数据包检测。