
之前有寫到一篇介紹 Surge 根據 WiFi 環境變化來自動選擇使用 DNS Server 的文章
每次域名查詢都要去跑一次 Script,先不論有無額外效能損耗,這樣似乎有點不太優雅
前兩天在 Surge 支援論壇裡面,看到某大神寫的一段範例,剛好可以完美解決這個自動切換 DNS 需求
Surge 只有在網路發生變化的時候才會觸發一次,並根據環境自動將 DoH 啟用或者關閉,非常不錯
所以就稍微拿來改一下,用了幾天沒出現什麼問題,就順便在此篇分享並記錄下來
先說一下我自己的需求,我在家中以及常待的辦公室都有自建 AdGuard Home 在 WiFi 局域網內
所以在認識的 WiFi SSID 下的時候,就用 DHCP Server 指定的 AdGuard Home 即可
只有外出使用行動網路或者不認識 WiFi 時候會需要自動切換啟用 NextDNS DoH 服務
清楚明白自己需求後,就可以開始實作了 😚
👆 Surge 的 DNS 設定改成預設,DoH 留空白不填
接著新建一個本機模組,可以啟用 / 關閉 NextDNS DoH 的模組
Surge App -> 模組 -> 建立本機模組,模組內容如下:
1 2 3 4 5 #!...

2021/02/11 update 官方有回應此修改方法是錯誤的,請停止使用
等待官方釋出新的功能可以解決路由錯亂問題
參考: https://help.nextdns.io/t/60htdz3/guide-how-to-force-nextdns-use-the-fastest-edge-server
有在用 NextDNS 的人應該有個痛點,那就是莫名的路由經常會幫你指到外國解析伺服器上
明明人在台灣而且他們也有提供台灣節點,但就是會讓你出國走一圈? 🤷♂️
👆 人在台灣明明有更快的台北或香港節點不連!?
諸如此類的隨機事件有時還蠻常發生的
在他們的討論版上也時有所聞身在歐洲的使用者,被連到亞洲伺服器的情況發生
跨國就算了,跨過一整個洲就比較過分了 🥸
在官方還沒有提出正式解決方案以前,這個狀態可能會是常態
不過前幾天群裡面的 Cary Yu 大大發現可以透過 NextDNS 官方的 DNS Rewrite 功能強制指定你想要的伺服器
下面就來說說這個強制指定解析伺服器的設定方法
首先請先打開 https://ping.nextdns.io 的網站,他會自動幫你測試你附近的伺服器節點網路延遲並會自動排序
如上面那張圖片,我延遲最低的是 TPE(台北)的節點,其次是 HAN(越南)、HKG(香港)跟 TYO(日本)
如果你網路有 IPv6 的話,就會同時測試 IPv4 跟 IPv6 的節點
比較可惜的是目前他們台北的節點尚未有 IPv6 的連線能力,所以我 IPv6 節點只能切到香港跟日本
找出你網路延遲較低的節點後,記錄一下節點的名稱與 IPv4 or IPv6
接著使用瀏覽器來到 https://my.nextdns.io/ 網頁後台,找到後面一個 Settings(設定)
接著往下滑,找到 DNS Rewrite(響應修改),點一下「新響應修改」的按鈕
總共要新增四條進去,網域分別是...

上一篇介紹使用 mobileconfig 在 iOS 14 和 mscOS 11.0 Big Sur 來達到自定義的 DoT / DoH 服務
但是這個一改就是全域的,不管你在家中、辦公室或者是在咖啡廳使用的 WiFi 甚至是使用行動網路
都會使用你預先設定的 DNS Server 來解析
然而事實上可能不符合進階一點的需求,例如:
在家中或者辦公室有搭自己的 AdGuard Home or Pi-hole,此時連到這些地方的 WiFi 當然使用區網的 DNS Server 來解析,有本地快取以外區網連線速度快延遲又低
出門使用行動網路或者連上其他不認識的 WiFi 就使用 NextDNS 的 DoH 服務
有上述跟我一樣需求的人,蘋果也有提供一個新的 DNS On Demand(DNS 按需連線)的功能
這功能一樣需要 iOS / iPadOS 14+ 以及 Big Sur 以上才有辦法使用
下面就說說這個特殊的 mobileconfig 描述檔怎麼寫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 <?...

最近在 iPhone 跟 iPad 上都是使用 Surge 來最佳化設備上的網路與調整線路
而因為在家中跟辦公室都有搭建自己本地的 AdGuard Home,外出時想要連到 NextDNS DoH
自己每次動手切換實在太煩了,也不可能每次都記得
Surge 目前版本還沒有內建提供自動根據網路環境切換 DNS Server 的功能
所以昨天在推特上亂入問了作者,作者回覆可以使用 Surge DNS Script 來完成這個功能
DNS 脚本可以实现
— Yachen Liu (@Blankwonder) August 14, 2020
於是就自己動手寫一段簡單 Script 來完成
下面就記錄一下設定過程,有需要的人可以照著設定即可
首先先設定一下會在外出時要連線的 DoH,推薦 NextDNS 或者 FutaDNS,也可以同時設定兩組互相備援
接下來新增一個 DNS Script 進去,請先拷貝下面的 Script
其中第一行的「SSID1」跟「SSID2」請根據你的實際的 SSID 來修改
寫在這裡的 SSID,Surge 會直接使用該網路內 DHCP Server 分發下來的 DNS Server 來解
不會連到你上面設定的 DoH Server,如此即可做到根據 SSID 來自動切換 DNS Server 的簡易功能...

之前介紹過很多 DNS 層級的廣告過濾方法,今天來推薦一個優秀的公共 DNS 服務「NextDNS」
使用別人搭建出來的公共 DNS 都有個大問題,就是他們沒辦法完全為你量身定做
有的人想要寬鬆一點的規則?有人想要嚴格一點的規則?或者你有少數一、兩個網站想要走白名單?
類似 AdGuard DNS、CloudFlare Families DNS 這種公共 DNS 都沒辦法幫你實現,你唯一選擇就是臨時關掉它
而今天介紹的 NextDNS 則是可以讓你 100% 客製化的 DNS 服務,同時也有提供加密 DoT 與 DoH 服務
最重要的先來看看價格~
NextDNS 每月提供 30 萬筆查詢次數的免費額度,如果你需要更多的話
價格也不貴 1.99 美金一個月吃到飽,或者是選擇年付有八折優惠
如果你是在一台行動設備上面使用(iPhone、iPad),這個額度來說是足夠使用的
而就算你突然超過 30 萬免費額度,NextDNS 也不會粗暴將你踢掉讓你斷網,只是會失去過濾功能而已
並不會影響你後續日常上網
而他們的伺服器也是相當多且廣的,在全球範圍已經有 47 個節點(還在增加中。。)
東亞區域包含台灣、香港、韓國、東京跟新加坡,所以在台灣反應速度不錯
我們廢話不多說,直接就來註冊帳號
註冊過程異常簡單,只要寫你的 email 跟指定密碼即可完成註冊
之後就會登入到 NextDNS 管理網頁
Setup
首頁就能看到 DoT 跟 DoH 的設定網址,還有支援 IPv6 的伺服器...