组织的计算机网络具有 192.168/16 IP 地址范围的 NAT。有一个部门,其服务器的 IP 地址为 192.168.xy,该服务器使用另一个 IP 地址范围为 172.16/16 的 NAT 处理该部门的主机。
因此有 2 层 NAT。为什么他们没有子网划分。这将允许轻松路由。
我觉得多层 NAT 会导致性能损失。你能帮我比较一下这两种设计策略吗?
更新:
@Jon 一些更多信息
在和朋友讨论时,我们意识到子网划分会导致以下问题。计算机的 ARP 请求会淹没整个组织的网络。如果路由器不转发这些请求,那么一个部门的 PC 将无法连接到其他部门的 PC,如果它们位于不同的 NAT 后面,则无论如何都无法连接。通过数据包嗅探器,我们看到有大量 ARP 请求,因为部门中的大多数计算机都启用了 Windows 上的文件共享。
如何解决这个问题呢?
此外,如果两台计算机位于不同的 NAT 之后,则它们无法相互连接。
多级 NAT 的问题与单层 NAT 的问题本质上是一样的,但是是复杂的。如:
由于在数据包生命周期中完成额外工作而导致的延迟(尽管在大多数情况下这不太可能很重要)
知道任何东西来自哪里。如果您试图追踪某些请求的来源(也许您的传出防火墙记录了看起来像是试图发送垃圾邮件或搜索其他感染目标的受感染机器),NAT 会使此类诊断变得更加困难。
传入连接端口转发,如果您需要传入连接,则更容易设置和维护。
端口数量有限。NAT 的工作原理是在不同端口上将源地址转换为自身,例如:
这一切都很好,直到您有许多传出连接 - 即大型网络或具有建立许多连接的机器的较小网络(P2P 应用程序,如实现 bittorrent 协议的那些应用程序可以创建许多并发连接)。IP 协议中只有 65536 个端口,减去保留的 1024 个。虽然 60,000 可能听起来很多,但它可以很快消耗掉,然后 NAT 盒需要决定可以删除哪些旧映射,这通常不像“删除最旧的”那样简单。这可能导致奇怪的错误(随机连接因难以诊断的原因而丢失)或机器在一段时间内无法建立新连接。
加载到 NAT 盒上。如果您使用小型低功耗设备(例如,现成的支持 NAT 的路由器,而不是带有大块 CPU 的完整 PC)来执行 NAT 额外的转换工作(与根据基本路由表简单地转发数据包相比) ) 可能会减慢通过它们的传输速度。对于 Internet 访问,这不太可能成为问题(您的“网络连接将成为瓶颈”),但是当您在本地网段之间进行 NAT 时,它可能会变得非常明显。
性能损失/速度实际上取决于您使用的路由器的质量。
至于好/坏主意,当可以简单地使用路由时,我反对它,但是,这实际上取决于环境和您要完成的任务。
如果机器只需要运行一些通过标准端口共享的东西,你可以进入路由器/nat-giving 设备并设置一个规则来允许你想要的东西 (1) 。但是,如果您要执行大量设备到设备的任务,那么在每台机器都有自己唯一的 IP (2) 的情况下拥有正确的路由会容易得多。
(1) 例如,一对多 - 一台机器有一个 web 服务器,你想分享给其他人 - 你可以在路由器中设置一个规则到机器的 80 端口,然后来自外部网络(或内部网络)的任何机器如果启用了 nat-loopback)可以简单地转到http://router.ip并可以访问。
(2) 然而,如果每台机器都将有一个 Web 服务器,或者您将使用大量服务,那么您将面临设置所有规则的噩梦(但这并非不可能)。
至于您的情况 - 如果一个部门使用 192.168.xx 和另一个 192.168.yx,我会检查设备,如果没有重叠,可能只需将子网从 /24 更改为 /16(或反过来),然后用交换机/或类似设备替换路由器,并且不会丢失服务。
如果不了解更多关于您的网络的信息,真的很难提供帮助,只要设置正确,双 NAT 就没有什么“错误”。但是,除非你真的需要它,或者有一个很好的理由,如果可以的话,我会考虑迁移(个人意见)
@iamrohitbanga - 回答您的问题(太多评论)。
比较很难 - 路由适用于每台机器都可以访问每台机器的专用网络。Nat 运行良好,但它主要用于不需要路由的网络,因为您通常必须手动设置传入规则/路由。
例如,如果您有互联网连接并禁用 NAT,则手动设置路由或桥接模式 - 您的机器将直接在互联网上 - 所有端口均可访问,任何机器都可以做它想做的事情。
另一方面,如果您有一个带有 NAT 的路由器,它将使用外部 IP 并提供“Nat-ed?” (不确定术语......)互联网 - 所有内部机器都有一个无法从互联网访问的 IP,但是,您可以设置手动规则 - 例如端口 80 到一台机器......它适用于传出连接(防火墙规则允许),但如果您托管许多服务,则设置传入规则可能是一场噩梦……如果您做任何需要动态端口(ftp、Windows AD 等)的事情,这可能是一场噩梦。
希望对您有所帮助,如果您想了解其他任何信息,请随时提问。
执行多层 NAT 的唯一真正问题是它会使您的网络拓扑混乱。如果您使用多层 NAT,那么您将放弃组织中所有主机之间的对称路由,并且您还可能会遇到网络内部私有地址空间重叠的可能性。想象一下,如果您在 n+1 NAT 层中使用了在 n NAT 层中使用的地址范围。这些网络永远无法相互路由,但 n+1 层中的主机可能与 n 层具有相同的地址,从而使服务器的身份变得混乱。
如果我要布置大型网络的拓扑结构,我将只使用 10.* 或 172.16-24.* 地址作为我们任何子网上的主机。然后,如果某个部门或个人想要将 NAT 加倍,他们可以(使用 192.168.* 网络),并理解他们对 NAT 主机后面的网络负责。我也更倾向于创建更多的子网,而不是让这些双 NAT 网络中的任何一个变得太大。