![将域名解析转发到 AWS 的 Namesever](https://linux22.com/image/762738/%E5%B0%86%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E8%BD%AC%E5%8F%91%E5%88%B0%20AWS%20%E7%9A%84%20Namesever.png)
我正在尝试配置本地bind
DNS 服务器以通过 AWS Route 53 解析域。
到目前为止,我已经在 Route 53 中创建了一个托管区域,并获得了该区域的名称服务器:
ns-1474.awsdns-56.org.
ns-189.awsdns-23.com.
ns-2002.awsdns-58.co.uk.
ns-892.awsdns-47.net.
现在到了棘手的部分。在我的本地机器上,我安装bind
并创建了一个区域文件,应该将其转发给 AWS,但是没有。
(免责声明,我已将真实域名替换为ha-test.com
)
;
; BIND data file for ha-test.com
;
$TTL 604800
@ IN SOA ha-test.com. root.ha-test.com. (
10 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
;ha-test.com. IN A 192.168.1.100
ha-test.com. IN NS ns-1474.awsdns-56.org.
ha-test.com. IN NS ns-189.awsdns-23.com.
ha-test.com. IN NS ns-2002.awsdns-58.co.uk.
ha-test.com. IN NS ns-892.awsdns-47.net.
如果我取消注释A
,它会将域解析为 IP,但除此之外,它不起作用。
我希望将 NS 设置为上述内容就足以bind
转发到 DNS,但显然我错了。
这是输出dig
:
dig @127.0.0.1 ha-test.com
; <<>> DiG 9.16.1-Ubuntu <<>> @127.0.0.1 ha-test.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60486
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 99e2f6f74458640b01000000600eed92f545a3c7ada5b428 (good)
;; QUESTION SECTION:
;ha-test.com. IN A
;; AUTHORITY SECTION:
ha-test.com. 604800 IN SOA ha-test.com. root.ha-test.com. 10 604800 86400 2419200 604800
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: пон јан 25 17:10:58 CET 2021
;; MSG SIZE rcvd: 121
如果我做
dig @ns-1474.awsdns-56.org ha-test.com
它可以正确解决。
更新
设法解决了它,但我不确定这是否是正确的方法:
在 中named.conf.local
,我有一个这样的区域:
zone "ha-test.com" IN {
type master;
file "/etc/bind/zones/ha-test.com";
};
替换为转发区域后:
zone "ha-test.com" {
type forward;
forwarders { 205.251.194.241; };
};
上面的 IP 是我从 获得的 IP ns-1474.awsdns-56.org
。我可以从所有 NS 中放入多个 IP,但似乎有点不对。不是吗?
答案1
通过查看代码片段,我假设您已经配置了一个私有托管区域(您有一个用于尝试解析的服务器的私有 IP),并且您已经在本地绑定和 AWS(VPN 或 Direct Connect)之间建立了一些网络连接。
基本上,更新后您就走在了正确的轨道上。您需要配置 BIND 作为相关托管区域的转发器。如果托管区域与服务器所在的 VPC 相关联,并且您具有适当的连接,则可以直接转发到 VPC DNS 服务器,其地址通常是 VPC CIDR 范围的第二个 IP(例如 192.168.0.2)
在这种情况下,您将把请求直接转发给 AWS。
一段时间内相当常见的稍有不同的版本是让 EC2 实例在同一个 VPC 中运行,该实例充当 Route53 的转发器,然后在本地计算机上将 EC2 实例的 IP 配置为您的 DNS 服务器,这实际上与您所做的是相同的,不同之处在于 BIND 在 VPC 内的 EC2 实例上运行。
如今,AWS 推荐的方法是使用带有入站端点的所谓 Route 53 解析器。应满足上述相同的先决条件 - 您需要在本地和 AWS 之间建立互联网连接,并且您的 VPC 应与您的托管区域相关联。这里的区别在于,您不必运行需要保护和管理的专用 EC2 实例,而现在有了 AWS 服务为您执行此操作。除此之外,您还可以获得一些弹性和 HA,因为您可以在多个子网 (AZ) 中设置 Route53 解析器。最重要的是,您还可以创建出站端点,这将使您能够将请求从 AWS 转发到本地 DNS 服务器,从而以相反的方式解析 DNS 查询)。您可以阅读有关 Route53 解析器的更多信息在文档中。