【发布时间】:2019-11-14 23:39:42
【问题描述】:
在我们公司,我们有三个 AWS 账户,主要的一个,用作 IAM 的“根”账户并托管一个 OpenVPN 访问服务器。另外两个帐户是pro 和stg。每个都有自己的 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.com 和my-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