我正在考虑在 Cisco ASA 后面设置一个 DMZ,它将包含大量 HTTP 前端负载均衡器和 SSL 卸载服务 - 超过 100 个 IP,集中在较少数量的主机上。
过去,我将所有主机都保留在 RFC1918 私有 IP 上,并为通常在 DMZ 中公开的每项服务添加静态映射(IP 到 IP)。这变得很烦人,因为我们开始以足够快的速度添加额外的 DMZ IP,以至于单独设置每个 IP 变得很烦人。我想改变它,以便设置整个 DMZ 子网以允许来自外部的 HTTP 和 HTTPS --> dmz,这样负载平衡器就可以根据需要获取新 IP,而无需每次都更新 ASA 配置。
我现在想知道的是,将 DMZ 放在 RFC1918 子网上并在整个子网中使用静态 NAT 是否有意义,或者我是否应该让 DMZ 直接成为我的外部 IP 分配,并仅依赖访问列表和身份 NAT/NAT 豁免。
一些粗糙的 ASCII 艺术品:
使用直接外部 IP 地址的示例: 互联网---> ASA---> 内部(10.1.0.0/16) | +-----> DMZ(1.2.3.0/24) 使用 NATed IP 地址的示例: 互联网---> ASA---> 内部(10.1.0.0/16) | (1.2.3.0/24)+-----> DMZ(10.99.0.0/24)
我认为使用 NATed 地址的优点是可移植性 - 如果上游提供商和分配发生变化,我不需要重新编号我的内部 DMZ。缺点是复杂性 - 现在我必须处理我自己网络内的内部和外部 IP 地址等。根据您的经验,哪种设置效果更好?
答案1
您和其他人提到的任何一个方向都有其理由。
以静态 1:1 NAT 的形式拥有一层抽象层(有点双关语)是件好事,因为如果您的 WAN IP 块发生变化,您可能不必重新编号内部主机。但是,与简单的路由和 ACL 检查相比,NAT 为通过 ASA 的数据包流引入的复杂性和细微差别可能会带来问题。
我个人的观点是,NAT 将继续与 IPv4 一起存在。对于主机上的 IPv4 堆栈,我对上游防火墙上的静态 NAT 没有任何疑虑。但是对于主机上的 IPv6 堆栈,没有 NAT。在 ASA 上,IPv4 和 IPv6 可以并行运行,NAT 用于 IPv4,传统路由用于 IPv6。
您可能希望采用静态 NAT 的另一个原因是它与增长有关。 ASA 不支持 secondary
接口上的 IP 地址假设您的上游为您分配了一个 /26,直接路由到您的 ASA 的外部接口。您使用 IP 子网中的第一个主机 IP 配置 ASA 的 dmz 接口,这样子网中就有 64 - 2 - 1 = 61 个有效主机 IP 可供您的服务器使用。
如果您使用了所有剩余的 61 个主机 IP 并且需要更多,您可以转到上游并说嘿我需要另一个 /26。他们会将其提供给您并再次路由,直接路由到您的 ASA 的外部 IP。您不能将第二个块中的第一个主机 IP 分配给 ASA 的 dmz 接口,作为secondary
IP 地址,就像使用 IOS 一样。这给你留下了一些选择——
- 在 ASA 上创建另一个接口 dmz2(不可取)
- 归还 /26,请求 /25,并在内部重新编号(不可取)
- 执行静态 NAT(我们在这个例子中反对这样做)
接下来采用相同的范例——这次从头开始使用 1:1 静态 NAT 外部 <-> dmz。我们在 1:1 静态 NAT 中使用第一个 /26 中的所有可用 IP。我们请求第二个 /26——
- 您可以请求上游路由直接到您的 ASA 外部接口 IP --保存你几个地址,因为上游将不必在块中分配一个地址作为
secondary
IP 地址他们的即使您不需要它,也可以将设备用作网关。请注意,大多数提供商将前 3 个主机 IP 地址作为 VRRP/HSRP 的一部分,从而减少了您的可用性。 - 如果您不请求直接路由该块,则上游通常会执行前一个选项的后半部分。然后,ASA 为外部接口所属的广播域中的 IP 代理 ARP(它可能对您的第一个块执行此操作,具体取决于其设置方式),以获取本地传送的流量。
课:如果您的外部接口上已经有公共 IP 块,请始终请求将后续块直接路由到您的外部接口 IP。这将为您提供额外的可用 IP,并且您仍然可以正常进行静态 NAT。
无论是直接路由还是 ASA 代理 arp - 使用 1:1 静态 NAT,您可以开始使用第二个 /26,而不必在 dmz 子网中乱搞。一旦您的 dmz 子网超出您的能力范围,您将不得不做出一些调整 - 但同样存在一个抽象层,您不必在 WAN 端乱搞。
最终答案:这取决于情况,但是对于 IPv4,在您的情况下我倾向于使用 NAT。
答案2
我不会使用 NAT。它没有真正的价值。重新编号的烦人工作不是添加/删除地址,而是处理与之相关的所有垃圾,例如转换 DNS。