我们在数据中心运行了 4 台服务器,分配了内部 IP:192.168.3.*。硬件(FORTIGATE)防火墙配置了 NAT,它将流量引导为:外部 IP:
111.222.333.10 -> 192.168.3.10 www.server1.com
111.222.333.11 -> 192.168.3.11 www.server2.com
111.222.333.12 -> 192.168.3.12 www.server3.com
在 DNS 中,我们有 www.server1.com A 111.222.333.10
现在,如果我从 www.server2.com 向 www.server1.com 发送大量数据,数据将通过 111.222.333.10(外部 IP)发送,这会导致我们的带宽使用量巨大(昂贵!)。
我的解决方法是向 server2 添加本地主机映射:
192.168.3.10 www.server1.com.
这样,当从 server2 向 www.server1.com 发送文件时,它将是内部的。
然而,我们的服务器越来越多,手动为每个服务器添加映射会很困难。
我只是想知道我们还有其他解决方案吗?我们可以在 FORTIGATE 防火墙中做些什么吗?
ps. 使用的DNS服务器是公共的,例如opendns,Google dns等。
答案1
192.168.3.10
不会,与进行通信不会影响您的外部带宽www.server2.com
。
流量将从服务器 1 路由到 Fortigate,然后 Fortigate 会将其发送到服务器 2。它永远不会穿越 Fortigate 上的外部网络。
每台服务器上的静态主机文件是最好的方法。只需编写一次,然后使用简单的脚本将其推送到每台主机。您的替代方案是运行自己的 DNS 服务器,并创建一个拆分 DNS,其中内部主机获取本地 IP,但其他主机则不获取。
答案2
您使用什么 DNS 服务器?您是否依赖某些可以控制的东西?
如果您可以控制所有机器的 DNS 服务器,则可以设置裂脑 DNS。如果您只为 LAN 运行 DNS 服务器,这实际上会更容易。您只需将其配置为对 server1.com 返回 192.168.3.10,而不是返回公共 IP。
答案3
您可能能够从/etc/hosts
文件中获取内部地址。您需要将其复制到所有服务器。如果您无法将文件配置为优先于 DNS 服务器,您可以在服务器上设置 dnsmasq 并向其提供 hosts 文件。然后配置服务器以引用它。