根據網路環境自動變更 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

在 GCP 安裝 AdGuard Home 並開啟 DoH 全攻略

前面寫過可以透過免費一年的 GCP 安裝 MTProxy 讓 Telegram 瞬間順滑起來 如果是單人使用的話 CPU 佔用極低,其實還蠻浪費的 所以為了不要浪費這虛擬機,今天就繼續來給 GCP 虛擬機加一點工作 🤣 其實 AdGuard Home 還蠻適合安裝一套到 GCP 虛擬機裡面的,主要給手機或者平板外出時使用 在家或者辦公室的話,已經有實體機的伺服器安裝 AdGuard Home 了,在家就用自家內網的伺服器即可~ 以下是我們這篇文章想要達成的目標: 在 GCP 的 Debian 10 虛擬機中安裝 AdGuard Home 使用 Let’s Encrypt 自簽證書並自動續期 AdGuard Home 設定開啟 DNS over Https(DoH)功能 在 iOS 上使用 DNSCloak 設定 On demand 自動切換 使用 gcloud 批次建立白名單防火牆規則 ​ 在 GCP 的 Debian 10 虛擬機中安裝 AdGuard Home 如果你還沒有 GCP 的話,請先參考之前文章申請 GCP 到安裝 Debian 系統 ...

December 9, 2019 · 3 min · jkgtw

用 Docker 快速搭建 iOS / macOS 按需連線的 IKEv2 VPN Server

​ 之前寫過兩篇介紹在樹莓派搭 IKEv2 VPN Server,以及按需連線(On Demand)的文章 當時很多人跟我說步驟太多太複雜,其中一個步驟搞錯就搭不起來 最近我新入手一台 Intel i5 mini PC,主要想把群暉 NAS 上面很多在跑的軟體都移轉過去,順手整理一下內部網路環境 因為我發現我給群暉 NAS 太多工作,他有點不是很開心,速度越來越慢了。。。 ​ 然後我看了一看之前文章,我自己也覺得很繁瑣,就乾脆重新用 Docker 來搭建 VPN Server 🤣 當初會用原生來搭建是因為擔心樹莓派用 Docker 模擬的方法效能不足。。 ​ 搜尋一下 Docker Hub 相關資源,找到一個不錯的版本 只要兩行指令就能搭好 IKEv2 VPN Server 與 On Demand 的 iOS / macOS 描述檔,非常方便! 原始程式網站在這: https://github.com/billimek/ikev2-vpn-server ​ 不過在開始前,要先製作一個 strongswan.conf 的設定檔 因為作者 Docker 映像檔裡面塞了一個國外的 DNS Server,我們在台灣使用的話速度超慢 所以我們要另外做一個設定檔,把它換成 CloudFlare 跟 Google 的 DNS 速度就會快上許多 ​ 當然你也可以改成你自己的,甚至是你自己搭的 AdGuard Home or PiHole 廣告阻擋器 ​ # SSH 登入到你要安裝的主機中 $ ssh username@IP # 建立一個設定檔 $ nano ~/strongswan.conf ​ ...

November 4, 2019 · 1 min · jkgtw