現在101.101.101.101 DNS也開始支援DNS over TLS了

什麼是 DNS over TLS,請參考 RFC7858。簡單來說就是將原本client到cache DNS間的DNS查詢封包作加密的動作。

那我要如何啟用DNS over TLS?

這個問題比較複雜一點,因為client端的解析功能大都是由作業系統來提供的,如果作業系統沒有提供這項功能的話,一般使用者很難去啟用它。如果你的電腦是Linux作業系統且你有管理者權限的話,那你可以安裝stubby ( https://github.com/getdnsapi/stubby )來啟用DNS over TLS。

如果你只是想要測試一下的話,你可以使用knot DNS的工具程式kdig,幸運的是在新版的ubuntu作業系統中已將knot放進其套件中,因此你可使用apt-get install knot-dnsutils 指令來安裝kdig。kdig指令和BIND的工具程式dig很像,使用的參數都大同小異,例如你要透過DNS over TLS來查詢twnic.net.tw的IP,可以使用下列指令:

$ kdig +tls-host=101.101.101.101 @101.101.101.101 twnic.net.tw. a
;; TLS session (TLS1.2)-(ECDHE-RSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 59758
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 512 B; ext-rcode: NOERROR

;; QUESTION SECTION:
;; twnic.net.tw.                IN      A

;; ANSWER SECTION:
twnic.net.tw.           3599    IN      A       124.9.9.9

;; Received 57 B
;; Time 2018-06-29 13:22:24 CST
;; From 101.101.101.101@853(TCP) in 26.7 ms

$

只是多了一個+tls-host=101.101.101.101這個參數就可讓client的cache DNS間的傳輸加密。