利用 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

在 iOS 14 / Big Sur 啟用中華電信 DoH 服務

​ 蘋果在 iOS 14 / Big Sur 加入系統原生 DNS over Https / DNS over TLS(DoH / DoT)的支援 在之前介紹過的 NextDNS app 早在 iOS 14 測試版時已經率先加入支援 在 iOS 14 正式版上線後 NextDNS app 也正式推出 v2.0: https://apps.apple.com/tw/app/nextdns/id1463342498 ​ 除了 app 可以直接在 iOS 14 系統中寫入 DoH / DoT 的支援以外 蘋果還有提供給企業或者組織快速設定的 mobileconfig 使用方式 像是 AdGuard 也馬上推出自家 DNS 的 mobileconfig 檔案下載,有興趣可以去他們部落格下載安裝 https://adguard.com/en/blog/encrypted-dns-ios-14.html ​ 不過 AdGuard DNS 在台灣的速度真的不怎麼樣,所以還是參考就好~🥺 接著最近在推特上看見台灣中華電信已經在測試自家 DoH 的服務 發現 https://t.co/YspnbjfZ6b 有 bind 443 port 跑 Nginx ,跑了一張圖寫 Hinet DNS,想說不是廢話嗎? 轉念想說該不會是中華電信在測試 DNS over https 吧 把 Firefox 的 DOH 設到 https://t.co/K4ADIsJ3du 還真的可以用 XD pic.twitter.com/8HLIaRJJtX ...

September 26, 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

AdGuard Pro for iOS 簡易使用教學

​ 昨天 AdGuard Pro for iOS 總算是更新了 v4.0.1,距離上次更新都已經快要一年了 ​ ​ 最主要原因是因為開發團隊之前在這款軟體裡面加入了 DNS 過濾,又內建了常見過濾規則 如此的話,使用者購買打開 app 後,就算不做太多設定也能開始有廣告過濾的基本功能 因太強大,蘋果以會影響到其他 app 的理由拒絕上架,後來開發團隊與蘋果長時間來回交涉後 「如果在軟體裡面把內建規則拿掉,讓使用者自行手動新增」這樣就可以勉強繞過審核上架 所以上架是上架了,要發揮到 AdGuard Pro 完整功能就需要麻煩使用者自己動動手設定一下喔~ ​ ​ iOS Safari 系統設定 第一次打開軟體時候,app 就會顯示讓你去系統設定啟用 Safari 過濾器 此時打開 iOS 系統的設定,往下滑一點找到「Safari」(如下圖) ​ ​ 繼續找到「內容阻擋器」,把 AdGuard Pro 所有開關都打開 ​ ​ 如此就完成 Safari 內容阻擋器的設定,接著回到 AdGuard Pro app 繼續 ​ ​ AdGuard Pro for iOS 的 Safari 過濾設定 AdGuard Pro 有分兩種過濾方式,其中一種就是蘋果 iOS 系統原生支援的 Safari 阻擋器 蘋果有開放 API,允許 app 把網頁的阻擋規則加載到 iOS Safari 內 使用者在使用 Safari 或者其他第三方 app 呼叫 Safari 瀏覽器的話都能達到瀏覽網頁過濾廣告的效果 ...

June 18, 2020 · 2 min · jkgtw

如何在 macOS 使用 DNS over Https(DoH)

​ 之前寫到一篇可以在 iOS 上面使用 DoH、DoT 加密 DNS 的方法 發現也有人在問 macOS 應該要怎麼做?這篇就來快速教學一下 2021/02/06 update 如果你使用 macOS 11 Big Sur 以上的版本,系統已經原生支援 推薦可以直接使用 NextDNS or 中華電信的加密 DNS 服務,或者自己改 https://apple.nextdns.io 描述檔 ​ 安裝 HomeBrew HomeBrew 官方推薦一行快速安裝 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" ​ ​ 安裝 cloudflared 用 HomeBrew 簡易快速安裝 cloudflared brew install cloudflare/cloudflare/cloudflared ​ ​ 建立 cloudflared 設定檔 這裡除了上次推薦的 FutaDNS 以外,另外再推薦一個同樣使用 AdGuard Home 搭出來的公共 DNS 服務 伺服器在谷歌 GCP 台灣機房,台灣各地連線過去的速度都很快 公共 DNS 項目的簡介網頁: https://readme.avpclub.gq 來源: https://www.pcdvd.com.tw/showthread.php?t=1157681 ​ # 新建資料夾跟設定檔 mkdir -p /usr/local/etc/cloudflared nano /usr/local/etc/cloudflared/config.yaml ​ 拷貝以下內容貼上 proxy-dns: true proxy-dns-upstream: - https://adh.avpclub.gq/dns-query - https://dns.futa.gg/dns-query 記得保存退出 ...

June 16, 2020 · 1 min · jkgtw

FutaDNS 公共服務之 iOS 設定方法

​ 最近低吸大大建立了 FutaDNS 的 DNS 公共服務,背後跑的是 AdGuard Home 支援 DoT、DoH 加密查詢 ​ 該服務使用了以下廣告黑名單: 毫無反應 解決部分網站異常使用。 FutaFilter (首頁) 本專案負責維護的過濾清單,跟第一個一樣是處理一些網站的異常情況。 NSABlocklist (首頁) 過濾已知 NSA / GCHQ / C.I.A. / F.B.I. 的釣魚伺服器(所以我都叫這清單 USASpy)。 AdGuardSDNS AdGuard 官方的 DNS 過濾清單。 280blocker (首頁) 日本人維護的過濾清單。目標是處理 mobile 的廣告,大部分的過濾域名是 .jp 結尾。 SomeoneWhoCares (首頁) 主要是用來過濾間諜、木馬網站,兼有過濾廣告功能。 NeoDev (首頁) 整合清單型 (包含白名單)。 AdAway (首頁) 應用程式 AdAway 使用的過濾清單。 AdAway (Japan Enhanced) (首頁) 基於 AdAway 並增加一些日本網站的過濾清單。 Malware Domain List (首頁) 故名思義,這個過濾清單是針對惡意域名的。 Malware Domain Blocklist by RiskAnalytics (首頁) 同上。 Phishing Army 基本 延伸 (首頁) 針對釣魚網站的過濾清單。 CoinBlockerLists by ZeroDot1 (首頁) 針對網頁挖礦的過濾清單。 ​ FutaDNS 官網: https://site.futa.gg ​ 因為 iOS 在 DoT、DoH 設定上比較麻煩,所以特別寫一篇教學幫助大家快速用上這個絕佳的擋廣告神器 ...

May 9, 2020 · 2 min · jkgtw