如何使用 NAT 或 haproxy 重新路由某个主机名?

如何使用 NAT 或 haproxy 重新路由某个主机名?

我有一个基础设施,其中内部子网发出的所有请求都必须通过“向世界开放”子网中的服务器,我的 NAT 实例就在那里(我正在使用 AWS)。

我想要创建一个供内部使用的主机名,也就是说,内部实例对 example.com 发出的任何请求都应由 NAT 实例重定向到某个特定的内部实例。

我的 NAT 实例中已经有 haproxy。它将传入到 example.com 的流量转发到某个内部 ip 地址。如果我使用以下命令更改内部实例/etc/hosts

172.31.10.123 example.com(其中 172.31.10.123 是 NAT 实例的 IP 地址)

来自此类内部实例的请求被正确重定向。问题是我必须/etc/hosts针对每个实例修改文件,而我并不想这样。

因此,由于所有到 Web 的流量都应通过 NAT 实例,是否可以检查主机目的地是否为 example.com 并将其重定向到我的特定内部实例的 IP 地址?

答案1

您需要使用内部 DNS 并让实例使用此 DNS。您可以通过不同的方式做到这一点:

  1. 设置 BIND 或其他 DNS 服务器
  2. 从 AWS 使用 Route53
  3. 使用内部主机名进行连接

最好的想法是设置您自己的 BIND 服务器,但您需要研究它的 DNS。

在您拥有内部 DNS(BIND 或 Route53)之后,您必须修改 /etc/resolv.conf 或 VPC 的 DHCPOption 以反映这一点,并让您的实例了解您的内部 DNS。

答案2

我不认为我误解了这个问题,但是在你的 haproxy 实例上添加一个 itpables 规则来检查源以及如果它源自你的内部网络,则 NAT 到 172.31.10.123 怎么样?

Haproxy 也具有 acl,您可以使用它根据源 IP 进行重定向,而 iptables 不是一个选项。

相关内容