因為本身 AWS 環境需要解析在 On-Premises 的 DNS record,所以在 AWS 上自架了 DNS resolver 來解析,而不是用 AWS 本身的 DNS Server。
目前的環境是在各個 Link Account 建立自己的 DNS Resolver,去跟內部的 DNS Slave / Master 問 record。
在這種情境下 Internet / On-Premises 的 DNS record 都沒問題,但是 AWS Only 的 record 就需要特別處置 …,最直接遇到的例子就是 Route 53 提供的 Private DNS for VPC,這種只有在 VPC 內才解的到的 DNS record 就沒辦法透過 DNS Slave / Master 取得。
AWS 的 DNS 我採用 Unbound 來當 resolver,詳細設定可以參考「Unbound 取代 Bind 拿來當 DNS resolver」
在這篇遇到的問題是 Unbound 在 forwarded AWS Private DNS 的時候都會問不到,但問其他 DNS record 都正常回應。
將 verbosity 條到 5 後查看 debug log,發現正常的 query 和 Private DNS 的 query 差在 Private DNS 有使用 DNSSEC。
在查了一些文件後發現 Unbound 預設並不支援 DNSSEC,文件中提到可以使用 module-config 來打開對 DNSSEC 的支援。
Setting this to “validator iterator” will turn on DNSSEC validation.
實際設定:
server: access-control: 0.0.0.0/0 allow interface: 0.0.0.0 interface: ::0 module-config: "iterator"
之後就可以對有 DNSSEC 的 domain 進行 forwarded !!
Ref:Set up private, internal DNS for your VPC using Route 53 and unbound