![通过 VPN 将内部 route53 DNS 公开到本地 ActiveDirectory](https://linux22.com/image/710992/%E9%80%9A%E8%BF%87%20VPN%20%E5%B0%86%E5%86%85%E9%83%A8%20route53%20DNS%20%E5%85%AC%E5%BC%80%E5%88%B0%E6%9C%AC%E5%9C%B0%20ActiveDirectory.png)
情况
我们正在将我们的 Web 应用程序迁移到 AWS。为了连接我们的本地网络和 AWS,我们创建了 VPN 连接。这没有任何问题。
在本地,我们有一个 MS AD(2008 R2),它是 ourcompany.tld(不是实际域名;))的权威服务器(除其他外)。
在 AWS 上,我们希望所有内部服务都命名为:*.dev.ourcompany.tld。此 DNS 应由内部路由 53 解析。
在 AWS 上,公共资源被命名为 *.ourcompany.tld。此 DNS 由我们自己的名称服务器解析。(有效)
问题
在我们的本地网络上,我们希望能够解析 someserver.dev.saa.nl。为了实现这一点,我们需要让 MS ActiveDirectory 在 AWS 上查找此域名。
AWS 内部路由 53 仅可从 AWS VPC 内部访问。AD 无法直接访问。
AWS 内部路由 53 只能通过非权威的 VPC DNS 转发器访问。
MS AD 需要存根区域和条件转发器的权威来源。
我们已经做过/尝试过的事情
- 在 VPC 中创建 DNS 转发器。此转发器是非权威的。当您在计算机本身上将 DNS 转发器设置为主 DNS 时,它工作良好。ActiveDirectory 不允许我们创建带有服务器不具有权威性消息的存根区域或条件转发器。
- 在 amazon VPC 中为 dev.ourcompany.tld 创建带有存根区域的 DNS 服务器。创建存根区域时,它将报告为权威,但是由于我们只能通过 VPC DNS 转发器(在 VPC IP + 2 上)解析 DNS,因此它拒绝创建存根,因为其源不具有权威性。与权威主服务器的直接连接将返回 REFUSED 状态。
搜索 AWS 文档。我们发现的唯一合适的解决方案是https://aws.amazon.com/blogs/security/how-to-set-up-dns-resolution-between-on-residential-networks-and-aws-using-aws-directory-service-and-amazon-route-53/但是法兰克福地区(我们受法规约束)没有简单的 AD。AWS 上的完整 MS AD 也可以使用,但我们不准备每月为 DNS 转发器支付 300 欧元以上
联系 AWS 支持。经过一周的漫长等待,他们似乎仍然不明白这个问题。我们正在实施业务支持计划。
有人能指点一下如何使用我们现有的 AD 来解决这个问题吗?
更新: 只需使用条件转发忽略错误即可将另一个域路由到 AWS 内部路由 53。但是对于子域,我们需要进行委托,这反过来会在查询时引发 SERVFAIL。
更新 2: 这似乎是不可能的。AWS 技术支持也放弃了。我们现在为所有服务器和服务注册了另一个域名,并在 AD 中使用固定 DNS 来设置 IT 部门以外的其他人使用的服务,并在 EC2 中使用代理将其转换为 LB DNS 名称。
答案1
如果我理解正确的话,我们有两个限制:
- 这dev.ourcompany.tldRoute53 区域只能从 VPC 解析,而不能通过 VPN 解析,并且
- 本地 AD 希望直接与权威性名称服务器dev.ourcompany.tld而不是发给货运代理。
由于这些限制,我们必须设计一个解决方案:1) 让 AD 认为它直接与 Route53 对话;2) 让 Route53 认为 DNS 请求来自 VPC 中的 IP。
一个可能的答案是NAT——网络地址转换,我会这样做:
使用 Amazon Linux 等启动一个小型 EC2 实例禁用实例的网络设置中的“源/目标检查”。也许还给它一个固定的私有 IP 地址。并在安全组中允许传入 TCP 和 UDP 端口 53。
/etc/sysctl.conf
通过设置允许 IP 转发net.ipv4.ip_forward=1
在实例上配置
iptables
将端口 53 上的所有传入流量重定向到 Route53,即VPC-CIDR+2。 就像是:iptables -t nat -A PREROUTING -p tcp --dport 53 \ -s <on-prem-cidr> -j DNAT --to <VPC-CIDR+2> iptables -t nat -A PREROUTING -p udp --dport 53 \ -s <on-prem-cidr> -j DNAT --to <VPC-CIDR+2>
将 AD 指向此实例的私有 IP。DNS 流量将被 NAT 并转发到 Route53,Route53 会认为它来自 VPC 并会对其进行应答。此外,AD 也会很高兴,因为答案将直接来自权威名称服务器。
希望有帮助:)
答案2
我遇到了同样的情况,尽管我们本地的权威服务器不是 MS AD。为了解决这个问题,我写了CoreDNS 插件它充当使用 Amazon VPC DNS 作为后端的权威名称服务器。它现在在我们的环境中运行。
答案3
您可以按照如下方式进行操作:
- 在 ourcompany.tld 的权威 DNS 服务器上,创建对 dev.ourcompany.tld 的委托
- 在 NS 字段中输入 ourcompany.tld 的相同 DNS 服务器 - 这将为您解除下一步设置条件转发器的障碍
- 为 dev.ourcompany.tld 设置条件转发器并将其指向“带有 DNS 转发器的 EC2 实例”的 IP(如图所示)