TWNIC 發佈的新聞說,Cloudflare(1.1.1.1)、Google(8.8.8.8)、IBM(9.9.9.9) 等大型公共 DNS[RFC 7873] 業者 公布預計將於2019年2月1日當天嚴格執行 EDNS 的符合性驗證,若 DNS 軟體 或 網路設備不支援 EDNS協定 將造成 DNS 無法順利解析 或 解析反應變慢。
馬上就有幾個問題:
- EDNS 是什麼?
- 如何確認自己的 DNS Server 有支援 EDNS?
- 若發現自己的 DNS Server 不支援,要怎麼設定來支援 EDNS?
註:TWNIC 新聞說這個情況比較容易發生在外部 DNS Server,若使用 TWNIC 101.101.101.101、101.102.103.104 就不會有此問題。
DNSSEC DNS 數位簽章 與 EDNS0 檢查
EDNS 相關資料:
- EDNS Compliance
- Alexa Top 1000 EDNS Compliance Report - Alexa Top 1000 EDNS 測試結果
- ISC Open Source Projects / DNS-Compliance-Testing · GitLab
TWNIC 的新聞詳見:
EDNS 是什麼?
下述整理自此篇: 詳見此篇:DNSSEC─數位簽章與 EDNS0
- DNSSEC、EDNS0:
- 傳統 DNS 傳輸是透過 UDP port 53 的封包,UDP 封包本身的限制大小是 512 bytes,在傳統的 DNS 是足夠使用的。
- DNSSEC 因為納入了數位簽章的功能,變成原本 UDP 的封包要包含數位簽章的資料,不敷使用。
- EDNS0 可以將 UDP 封包擴展到 4,096 bytes 的大小,這樣的大小才能容納 DNSSEC 的資料傳輸。
- EDNS0:
- EDNS0 的流程是由 DNS 用戶端發起的
- 當解析器可以接受 EDNS0 的封包時,就會在封包的 Additional 區段放入一個 『opt』 資訊傳遞給 Server,表示自己支援 EDNS0
- DNS Server 收到 DNS 封包後看到 Additional 區段有『opt』 資訊,就會知道用戶端有支援 EDNS0 封包
- Server 產生回應封包後也會在 Additional 區段加入『opt』資訊表示這是 EDNS0 封包,所以如果你有觀察 DNSSEC 的 Additional 區段,你發現回應數目會 + 1,這表示是 EDNS0 封包喔!
- 註:雖然是 EDNS0 封包,可是不代表這是 DNSSEC 封包,在 EDNS0 中有一個 bit: DO 被設定為 1 的時候,才代表這是 DNSSEC 封包
如何確認自己的 DNS Server 有支援 EDNS?
- 到下述網站來檢測
- 或者 dig +dnssec example.com ns # 看到有下述回應內容就是有支援
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096
註:Extension mechanisms for DNS - Wikipedia
若發現自己的 DNS Server 不支援,要怎麼設定來支援 EDNS?
這點現在還遇不到(或許是我看的方法不對,還在驗證中),目前手上所有 DNS Server 都嘗試過,都看不到沒有上述資訊的,所以還找不到不支援的案例,若真的遇到的話,可能直接把 DNS Server 升級就能解決~