其實更想寫一篇隨筆,並不是一篇很嚴謹的科普文章,DoH 的全名叫做 DNS over HTTPS,DoT 的全名是 DNS over TLS,這些工具主要用於加密 DNS 查詢,防止 DNS 被劫持篡改。
為什麼會想到寫這個呢,先簡單介紹一下家裡的網路。
目前我用的網路基本模型就是主路由網關 iKuai + 旁路由 Openwrt 的形式,再在家裡跑上一些服務設備之類的。
主路由負責 PPPoe 撥號 DDNS DMZ DHCP 等,負責上網的事情都是用它來做的,ikuai 是一個很不錯的,功能相對全面又比較容易上手的路由系統。
旁路由用 Openwrt,跑用來回家的 ss server 和 openclash,wireguard 對等節點等。
主路由下發的 DHCP 配置,由於家裡的各種設備比較多,並不是所有設備都需要用到的,大多物聯網設備等的,都用默認設置就可以了,所以 DHCP 拿到的就是默認設置。
全局代理通過修改 手機 / 電腦 / 遊戲機上的 HTTP 代理到 openwrt 上的 clash port 就可以實現,到這裡都沒有什麼問題。
直到有一天我發現家裡的 DNS 似乎被污染了,Clash 走的解析 114.114.114.114 端口 53 timeout 了,隨後我把 dns 換成 8.8.8.8 和 1.1.1.1。
It works, but not for long. 裝了 clash 的設備仍然會有一些問題,並且意外的發現家裡的好些設備, 監控攝像頭 自動貓砂盆 掃地機器人等 2.4G 的設備都連不上網了。
最開始我還是以為是家裡的 mesh 網路覆蓋不到位的問題。經過 debug 發現,用的米家 mesh 確實有一些小問題,後來決定直接換了一批 ASUS AiMesh 的設備,有用…… 但不完全有用。有用的是,我確實能更精確定位設備的問題,畢竟華碩的設備做的確實還可以。沒用指的是,沒有解決根本問題。
直到最後我發現是不是我之前改了 DNS 導致的,我把 DNS 切回運營商默認的之後,似乎設備都正常了。
故事到這裡還沒有結束,平靜的過去了大概很久,前幾天發現如上的有些設備又連不上網了,由於購買的時候還有多的 mesh 節點,嘗試把網路覆蓋到死角發現還是沒有用,距離上次重啟路由器大概已經過了五十多天了,正好路由器有新的軟件更新了,於是我嘗試更新了 ikuai 的系統版本,在 DNS 的界面發現了一個重大的更新 —— DoH !
隨後我應用了一個對於我而言的相對最優 dns query,五秒鐘之後,手機 app 已經就收到了各種設備在線的消息了。
總結#
可能是因為流量比較容易被識別,或者運營商故意的污染 DNS,導致我家或者可能是這邊物理地區的 DNS 整體都有被劫持的可能。
並且各種物聯網設備的運營商,比如我用的追覓 Dreame 小佩 petkit 等,都沒有特別大的互聯網基建。特別的,複盤的時候發現米家的設備就沒有遇到這個問題,大概是因為 米家的體量使得它的平台接入點比較多,即使 DNS 被污染,對於 mi.com 這種域名應該不會做處理。而碰巧這些設備又以 2.4G 設備居多,所以誤認為是 2.4G 信號的問題。