Bind

將域解析轉發到 AWS 的域名伺服器

  • February 1, 2021

我正在嘗試配置本地bindDNS 伺服器以通過 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,但這似乎有點不對勁。不是嗎?

通過查看這些片段,我假設您已經配置了一個私有託管區域(您有一個用於嘗試解析的伺服器的私有 IP)並且您已經在本地綁定和 AWS(VPN 或 Direct Connect)之間建立了一些網路連接。

基本上,您在更新後處於正確的軌道上。您需要將 BIND 配置為相關託管區域的轉發器。如果託管區域與伺服器所在的 VPC 相關聯,並且如果您有適當的連接,您可以直接轉發到 VPC DNS 伺服器,它的地址通常是 VPC CIDR 範圍的第二個 IP(例如 192.168.0.2)

在這種情況下,您將請求直接轉發到 AWS。

一個稍微不同的版本是在同一 VPC 中執行一個 EC2 實例,該 VPC 充當 Route53 的轉發器,然後在您的本地電腦上將 EC2 實例的 IP 配置為您的 DNS伺服器,實際上與您所做的相同,不同之處在於 BIND 在 VPC 內的 EC2 實例上執行。

現在,AWS 推薦的方法是使用所謂的 Route 53 Resolver 和入站端點。應該滿足上述相同的先決條件 - 您需要在本地和 AWS 之間建立網際網路連接,並且您的 VPC 應該與您的託管區域相關聯。這裡的不同之處在於,您現在不必執行需要保護和管理的專用 EC2 實例,而是擁有 AWS 服務為您執行此操作。除此之外,您還可以獲得一些彈性和 HA,因為您可以在多個子網 (AZ) 中設置 Route53 解析器。除此之外,您還可以創建一個出站端點,這將使您能夠將來自 AWS 的請求轉發到本地 DNS 伺服器,從而以相反的方式解析 DNS 查詢)。您可以在文件中閱讀有關 Route53 解析器的更多資訊。

引用自:https://serverfault.com/questions/1051133