【问题标题】:OpenVPN and VPC peering - How to resolve .compute.internal domains in two different accounts with BIND9OpenVPN 和 VPC 对等互连 - 如何使用 BIND9 解析两个不同帐户中的 .compute.internal 域
【发布时间】:2019-11-14 23:39:42
【问题描述】:

在我们公司,我们有三个 AWS 账户,主要的一个,用作 IAM 的“根”账户并托管一个 OpenVPN 访问服务器。另外两个帐户是prostg。每个都有自己的 VPC,具有不同的 IP 范围,我们在 root 和 pro 帐户之间有一个 VPC 对等,在 root 和 stg 之间有另一个。 IP 路由已经设置好,一切都在这方面受到控制。

(对不起,我还不能上传图片,所以这里有链接) VPN+VPC-Peering

问题在于 DNS 解析。设置是这样的:

我在 OpenVPN 服务器中安装了 BIND9,以允许私人托管域的 DNS 转发,使用类似 named.conf.local 中的配置

zone "stg-my-internal-domain.com" IN {
    type forward;
    forward only;
    forwarders { 10.229.1.100;10.229.2.100; };
};


zone "pro-my-internal-domain.com" IN {
    type forward;
    forward only;
    forwarders { 10.228.1.100;10.228.2.100; };
};

还有两个 Route53 入站解析器(每个 VPC 上运行的简单 BIND 服务器也可以)在 10.229.1.100 和 10.229.2.100 中运行 stg 和 10.228.1.100 10.228.2.100 用于 pro 帐户

VPN 客户端具有使用访问服务器作为 DNS 解析器的 OpenVPN 配置文件。

从我的客户那里,我可以完美地解析my-service-1.pro-my-internal-domain.commy-service-2.stg-my-internal-domain.com,但是当我想解析内部域名时,问题就出现了,比如AWS 在每个VPC 中使用my-service-2.eu-west-1.compute.internal 生成的域名

我知道这是一种反模式,我应该始终尽可能多地使用私有域,但是对于 EMR 集群等某些情况,YARN 和 Hadoop 管理器使用引用内部 AWS 名称的链接,从而使无法解决。

所以我的问题是:如果主服务器出现故障,是否有任何方法可以配置 DNS 以将解析委托给辅助地址?

我可以使用所有帐户解析器为eu-west-1.compute.internal 区域设置转发器,但是 DNS 规范规定,仅当第一个域名服务器无法访问时才会使用辅助域名服务器,因此只要它响应空或“未知”响应,它仍然是有效响应,并且不会查询第二个域名服务器。

非常感谢任何帮助!

【问题讨论】:

  • 你考虑过使用route53私域吗?
  • 我们已经像在 my-service-1.pro-my-internal-domain.com 中一样使用它们,但我们的主要问题是 YARN 管理器例如使用 AWS 主机名(具有 .compute.internal 域的那些)作为链接,因此我们需要解决那些问题。
  • 嗯,好的。为什么不直接将内部主机名更改为公共 DNS 名称?这些服务使用分配给它们的主机名。 docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html
  • 你有机会尝试这个吗?

标签: amazon-web-services dns bind amazon-vpc openvpn


【解决方案1】:

为什么不直接将内部主机名更改为公共 dns 名称?这些服务当然使用分配给它们的主机名。你可以改变它。 见https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html

您可能需要(也可能不需要)为每个人分配固定的私有 IP。无论如何,在公共 DNS 区域中发布此私有 IP。然后,您应该能够正确解析这些名称。请注意,您还可以在启动时在每个实例上运行一个脚本,以更新主机名和 dns 记录。

有关公共 DNS 中私有 IP 地址的详细讨论,请参阅 https://serverfault.com/questions/4458/private-ip-address-in-public-dns

作为参考,这里是最好的答案:

有些人会说,任何公共 DNS 记录都不应该泄露私有 IP 地址......他们的想法是,您正在让潜在的攻击者获得利用私有系统可能需要的一些信息。就我个人而言,我认为混淆是一种糟糕的安全形式,尤其是当我们谈论 IP 地址时,因为总的来说它们很容易被猜到,所以我不认为这是一种现实的安全妥协。这里更大的考虑是确保您的公共用户不会将此 DNS 记录作为托管应用程序的正常公共服务的一部分。即:外部 DNS 查找以某种方式开始解析到他们无法到达的地址。除此之外,我认为将私人地址 A 记录放入公共空间是一个问题的根本原因......尤其是当您没有备用 DNS 服务器来托管它们时。如果您决定将此记录放入公共 DNS 空间,您可能会考虑在同一台服务器上创建一个单独的区域来保存所有“私人”记录。这将更清楚地表明它们是私有的....但是对于一个 A 记录,我可能不会打扰。

【讨论】:

    【解决方案2】:

    如果您的 VPN 与 EMR 集群(或任何其他计算资源)位于同一区域,AWS 仅支持这些内部 ipv4 DNS 主机名的 DNS 解析。我已经联系了他们的支持,他们已经确认了这一点。

    例如,我在法兰克福设置了一个 AWS Client VPN 终端节点,在爱尔兰设置了一个 EMR 集群。我正在向我的主机推送 VPC 的私有 DNS 服务器(并且在两个 VPC 中都启用了所有其他相关配置),以便我可以解析私有 Route53 DNS 区域记录。

    当我连接到 VPN 时,

    我无法解决这个问题:

    $ dig +short ip-10-11-x-x.eu-west-1.compute.internal
    $
    

    但我可以解决以下问题,这是一个与 VPN 端点位于同一区域的实例:

    $ dig +short ip-10-10-x-y.eu-central-1.compute.internal
    10.10.x.y
    

    如何解决:

    将您的 EMR 集群移动到与您的 VPN 相同的区域,或者相反。

    但最简单的解决方案可能是只使用 Chrome 插件 (here's an example),它会自动将 ip-x-y-z... URL 重定向到 x.y.z IP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-13
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多