利用 Surge for iOS 根據網路環境自動切換 DNS 服務

​ 關於 Surge 自動切換 DNS 的文章,這篇已經是第三篇,沒意外應該也是最後一篇關於此功能的文章 😂 因為之前寫的 DNS 腳本,我發現還有人在繼續使用 現在開發者已經把這個功能內建到 Surge app 裡面,無需另外在靠腳本來實作,所以就另外寫一篇來更新一下 ​ Surge 在幾個月前的版本更新後,新增 Subnet Settings(子網設定覆蓋)的相關設定 所以很輕鬆就能做到之前需要依靠 DNS 腳本才能做到的事情 💪 ​ 我的需求跟之前一樣 在家以及在辦公室使用熟悉 WiFi 時候切換到內網 DHCP Server 指定的 DNS Server(自建的 AdGuard Home) 其餘情況(使用行動網路以及連上不認識的 WiFi 等等)都使用 NextDNS 的加密 DNS 服務 ​ 首先我們先把預設要用的 NextDNS 加密 DNS 設定好,打開 Surge 以後找到「DNS 設定」 先把預設的 DNS 改成 NextDNS 加密服務,如下圖 ​ ​ 接著如下圖,到更多設定裡面找到子網設定覆蓋的選項 ​ ​ 最後如下圖,把你家中 WiFi SSID 設定好,以及「覆蓋 DNS 設定」跟「覆蓋加密 DNS 設定」改成下圖那樣即可 ​ ​ 如上圖那樣設定後,只要 Surge 連到你設定的 WiFi SSID,就會覆蓋掉你原本的設定 當然你要指定成 system 以外的也可以,自己依照自己需求填寫 如果你有一個以上 SSID 需要修改,那就重複上面步驟來新增設定即可 ...

February 6, 2023 · 1 min · jkgtw

使用 Surge 在網路變化時,自動切換 AdGuard Home 與 NextDNS

​ 注意 此方法已經過時,Surge 新版已經內建此功能,可以到這邊看如何使用 👌 之前有寫到一篇介紹 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 #!name=NextDNS #!desc=啟用 DoH 加密解析 [General] doh-server = https://apple.dns.nextdns.io/######## 以上第 5 行 ## 部分請自己改成自己的 NextDNS ID,如果你不是用 NextDNS 也可以改成其他 DoH 網址 ...

April 12, 2021 · 2 min · jkgtw

強制指定 NextDNS 解析伺服器,讓你上網速度更快更穩!

​ 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(響應修改),點一下「新響應修改」的按鈕 ​ 總共要新增四條進去,網域分別是 ipv4.dns1.nextdns.io ipv4.dns2.nextdns.io ipv6.dns1.nextdns.io ipv6.dns2.nextdns.io 2021/01/07 update 網域變更 NextDNS 改變了網域,如果你發現上面的用不了 請換成以下這四組 ipv4-anycast.dns1.nextdns.io ipv4-anycast.dns2.nextdns.io ipv6-anycast.dns1.nextdns.io ipv6-anycast.dns2.nextdns.io 上述的 dns1 就是第一個會先去查詢的伺服器,dns2 是備用的 ...

January 5, 2021 · 1 min · jkgtw

根據網路環境自動變更 DNS 設定的 DNS On Demand

​ 上一篇介紹使用 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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>DNSSettings</key> <dict> <key>DNSProtocol</key> <string>HTTPS</string> <key>ServerURL</key> <string>https://dns.nextdns.io/xxxxx</string> </dict> <key>OnDemandRules</key> <array> <dict> <key>Action</key> <string>Disconnect</string> <key>SSIDMatch</key> <array> <string>MySSID1</string> <string>MySSID2</string> <string>MySSID3</string> </array> </dict> <dict> <key>Action</key> <string>Connect</string> </dict> </array> <key>Name</key> <string>DoH OnDemand</string> <key>PayloadDescription</key> <string>Configures device to use DoH OnDemand.</string> <key>PayloadDisplayName</key> <string>DoH OnDemand</string> <key>PayloadIdentifier</key> <string>com.apple.dnsSettings.managed.8F2760B2-23C1-4735-B5BE-D64A0ADBEC09</string> <key>PayloadType</key> <string>com.apple.dnsSettings.managed</string> <key>PayloadUUID</key> <string>8F2760B2-23C1-4735-B5BE-D64A0ADBEC09</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </array> <key>PayloadDescription</key> <string>Adds DoH OnDemand to Big Sur and iOS 14 or newer systems</string> <key>PayloadDisplayName</key> <string>DoH OnDemand</string> <key>PayloadIdentifier</key> <string>14737786-645C-42BF-9B13-6B339B2D81C1</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>51851357-7736-4A33-90E6-45FB8C3BEC59</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist> 上述內容,有幾行需要自行修改後才能使用 ...

September 27, 2020 · 2 min · jkgtw

使用 Surge DNS Script 自動切換本地 DNS

​ 注意 此方法已經過時,Surge 新版已經內建此功能,可以到這邊看如何使用 👌 最近在 iPhone 跟 iPad 上都是使用 Surge 來最佳化設備上的網路與調整線路 而因為在家中跟辦公室都有搭建自己本地的 AdGuard Home,外出時想要連到 NextDNS DoH 自己每次動手切換實在太煩了,也不可能每次都記得 Surge 目前版本還沒有內建提供自動根據網路環境切換 DNS Server 的功能 所以昨天在推特上亂入問了作者,作者回覆可以使用 Surge DNS Script 來完成這個功能 ​ 於是就自己動手寫一段簡單 Script 來完成 下面就記錄一下設定過程,有需要的人可以照著設定即可 ​ 首先先設定一下會在外出時要連線的 DoH,推薦 NextDNS 或者 FutaDNS,也可以同時設定兩組互相備援 ​ ​ 接下來新增一個 DNS Script 進去,請先拷貝下面的 Script 其中第一行的「SSID1」跟「SSID2」請根據你的實際的 SSID 來修改 寫在這裡的 SSID,Surge 會直接使用該網路內 DHCP Server 分發下來的 DNS Server 來解 不會連到你上面設定的 DoH Server,如此即可做到根據 SSID 來自動切換 DNS Server 的簡易功能 ​ if ($network.wifi.ssid === 'SSID1' || $network.wifi.ssid === 'SSID2') { $done({servers:$network.dns}) } else { $done({}) } ​ 拷貝以上內容後,接著回到 Surge 準備新增一個本機腳本 ​ ​ 繼續如下圖步驟設定 ​ ​ 如上圖,看著數字步驟設定即可,再次提醒:步驟 4 貼上的 Script SSID 請記得修改成你自己的 ...

August 15, 2020 · 1 min · jkgtw

量身打造、100% 客製化抗廣告的 NextDNS

​ 之前介紹過很多 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 的伺服器 另外如果你設備無法使用 DoT / DoH 或者安裝他們 app 的話,他們也有提供純 IP 的設定方式 ...

July 29, 2020 · 2 min · jkgtw