我無法使用我的 Elastic Compute Cloud (Amazon EC2) 執行個體解析 Amazon Route 53 私有託管區域記錄。
簡短描述
使用 systemd-resolved 服務的 Linux 作業系統發行版使用 Stub 解析程式處理 DNS 查詢。Stub 解析程式 IP 位於 /etc/resolv.conf。本機 DNS Stub接聽程式不會為字尾為 ".local" 的網域名稱轉發 DNS 請求。DNS 請求失敗,且具有類似以下輸出的回應代碼 "ServFail":
### failed ###
ubuntu@ip-172-31-2-3:~$ dig example.local.
; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> example.local.
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 29563 ### status: SERVFAIL ###
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;example.local. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ### 127.0.0.53 is systemd-resolved ###
;; WHEN: Thu Jun 30 12:34:56 UTC 2022
;; MSG SIZE rcvd: 42
### success ###
ubuntu@ip-172-31-2-3:~$ dig example.local. @172.31.0.2 ### dig to @172.31.0.2 AmazonProvidedDNS / Route 53 Resolver ###
; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> example.local. @172.31.0.2
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29352 ### status: NOERROR ###
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.local. IN A
;; ANSWER SECTION:
example.local. 300 IN A 192.0.2.1
;; Query time: 4 msec
;; SERVER: 172.31.0.2#53(172.31.0.2) (UDP) ### 172.31.0.2 is AmazonProvidedDNS / Route 53 Resolver ###
;; WHEN: Thu Jun 30 12:34:56 UTC 2022
;; MSG SIZE rcvd: 58
解決方案
若要解析字尾為 ".local” 的網域名稱,請使用外部解析程式,而非本機 DNS Stub 接聽程式。
**注意:**最佳實務為避免使用字尾為 ".local" 的網域名稱,因為 RFC 6762 會保留此網域名稱供專屬多點傳送 DNS 使用。
1. 將 DNS 解析程式從本機 DNS Stub 接聽程式變更為外部 DNS 解析程式 (AmazonProvidedDNS)。
cd /etc/
sudo ln -sf ../run/systemd/resolve/resolv.conf
2. 變更 .conf 以停止本機 DNS Stub 接聽程式。
cd /etc/systemd/
sudo cp -ip resolved.conf resolved.conf.org
sudo sed -i -e 's/#DNSStubListener=yes/DNSStubListener=no/' resolved.conf
3. 重新啟動 systemd-resolved。
sudo systemctl restart systemd-resolved
相關資訊
Amazon Route 53 DNS 最佳實務
如何對我的 Route 53 私有託管區域的 DNS 解析問題進行疑難排解?