公共服务器 NATing?

公共服务器 NATing?

我的问题简而言之是:“哪个更好?将私有 IP 地址分配给公共服务器并进行 NAT,还是将公共 IP 地址分配给它们而无需进行 NAT”?

NATing 可以用于允许许多用户使用一小群公共 IP 地址(可能只有一个 IP)访问互联网。这也被称为 PATing。

我正在讨论对公共服务器(例如 DNS、Web 服务器、电子邮件服务器等)的 IP 地址进行 NAT。公共服务器的 NAT 应使用静态 NAT 进行。因此,有人可能会想到消除 NAT 过程并在服务器上分配公共 IP。以下是两种方案的比较。

使用 NATing:

+ 公共 IP 地址根据需要在网关上进行管理和使用。

+ 公共 IP 得以保留并可尽可能高效地使用。

- 网关路由器/防火墙上会增加一点开销。

- 私有 IP 地址可能会暴露在外部(例如,在电子邮件标题中,或在错误配置中)。

- 我们需要为 DNS 服务器创建两个视图(供内部用户使用的私有视图和供外部用户使用的公共视图)。

不使用 NATing:

- 应在服务器本身上为服务器分配多个 IP 地址。应用程序/服务应知道使用所有 IP 进行传出流量。

- 公网 IP 地址直接分配给服务器。因此,某些 IP 可能会被浪费(未使用),例如集群和 VIP 的情况。

+ 由于我们不进行 NATing(开销较少),因此路由/转发将会更快一些。

+ 所有通信都将使用公共 IP 完成。

+ 由于我们使用相同的内部和外部 IP,因此一个 DNS 视图就足够了。

还有其他想法/建议吗?

答案1

我强烈支持 NAT 方法。正如您所说,它可以更有效地节省公共 IP 地址,此外,除非您有意这样做,否则您不会向外界公开任何服务 — 您可以将分配公共地址与批准给定服务器的防火墙规则集的过程联系起来。

对于我们使用的 Cisco 路由器,至少与使用防火墙模块的开销相比,NAT 的开销可以忽略不计根本,而且由于我们已经在使用它,所以性能问题并不是什么大问题。它还有一个可选的自动重写规则,这样从内部网络对外部地址的访问就会通过“魔法”重写为内部地址,从而避免了拆分 DNS 的需要。(我们对内部地址使用 .int 子域10.x)。

答案2

好的,这个问题是几天前问的,并且已经有一个可以接受的答案。

保持简单先生。一般来说,一个公共互联网服务器应该有一个公共 IP 地址。

通过 NATing:公共 IP 得以保留,并可尽可能高效地使用。

在我看来,这有点儿太过分了。好吧,这是真的,但是 v4 IP 不是稀缺,而且,解决互联网“地址短缺”问题并不是你唯一的责任。

无需 NATing:应在服务器本身上为服务器分配多个 IP 地址。应用程序/服务应知道使用所有 IP 进行传出流量。

为什么要分配多个 IP 地址?如果您有多个服务,请使用 DNS CNAMES 和 IP 端口范围来拆分。如果您在执行浮动 IP(VIP)时需要保留 IP,您通常可以将私有 IP 用于特定于机器的 IP,而将公共 IP 用于您在其上公开 Internet 应用程序的实际 VIP。

我认为,主要可以归结为:

  • 使用 NAT,您可以通过隐蔽性获得一点安全性。但这没什么价值。

  • 如果没有 NAT,您就遵循了 Internet 的设计意图。常见的故障排除工具(如 Ping 等)可按预期工作。其他站点和上游 ISP 的系统管理员可以更好地与您合作解决问题。

我明确倾向于每个服务器一个公共 IP,除非有一些本地限制迫使我另行做。

答案3

@mattdm:在没有防火墙的情况下使用 NAT 并不是很聪明的做法(也就是通过模糊性来实现“安全”)。

当使用 NAT 时,如果您使用 NAT 反射(或发夹 NAT),则不需要 DNS 的内部视图。

至于您的问题,我认为这是一个偏好问题。

  • 您对要保存的 IP 地址有什么计划吗?

  • 您是否有多台机器提供相同的服务,并且需要使用标准端口从外部访问?

  • 您希望路由器作为网关发挥多大作用?

我认为回答这些问题将帮助您确定要走哪条路。只需记住,无论哪种方式都无关紧要,也不会阻止您以后使用其他策略。

答案4

我对“无 Natting”场景存在一些问题。

您的内部客户端最终可能会尝试使用其公共 IP 连接到内部服务器。这可能会导致流量从内部网络路由到路由器,然后再返回到网络 - 或者可能完全失败,具体取决于您的路由配置方式。

您需要注意内部客户端始终获取内部 IP,否则您将失去“路由/转发会更快一些”的好处。

编辑 我可能对上述内容解释得不太清楚。内部局域网有私有 IP。当决定将某些服务器公开时,它们被分配了私有和公共 IP,并且路由器/防火墙设置为允许这些公共 IP 的流量通过。

问题发生在使用私有 IP 的内部客户端尝试通过公共 IP 访问内部服务器时。那是几年前的事了,我认为 DNS 和/或路由配置错误 - 因此对于此网络,内部客户端开始访问内部 IP 上的一台服务器。

当第一台服务器尝试将用户引导至另一台服务器时,内部/外部名称和 IP 会出现一些混淆。通常,服务器会将内部客户端指向公共 IP,而客户端会认为这是通过路由器传出去的。从私有 IP 到公共 IP 的路由设置不正确,因此这样做很尴尬。

或者,服务器将通过其内部名称/IP 将客户端指向另一台服务器,并且内部客户端可以正常工作 - 但外部客户端则不能。

有可能的要使这个设置正常工作 - 但需要仔细考虑或如何布置内部网络。

IIRC 这些问题已得到解决,方法是确保公共服务器具有私有 IP,没有与内部客户端分开的内部子网,并确保客户端默认网关处的路由配置正确。

我并不是说不要这样做,只是补充一些需要考虑的事情。

相关内容