【香港專題】📱 iOS VPN 分流教學(Mullvad + Shadowrocket)

【實用教學】📱 iOS VPN 分流教學(Mullvad + Shadowrocket)
為什麼需要分流?
「分流」(Split Tunneling)讓你可以選擇性地讓部分流量通過 VPN,而其他流量則直接連接。
這對於以下場景特別有用:
- 需要美國 IP 存取地區限制服務(如 ChatGPT、Claude、Gemini),但不想全部流量都走 VPN(影響速度)
- 在香港/中國需要存取被限制的服務,同時保持本地服務的正常連接
- 保護特定 App 的隱私,同時讓其他 App 繼續使用本地網路
問題:Mullvad 原生 App 在 iOS 上不支援分流功能。
解決方案:使用 Shadowrocket 或 Surge 配合 Mullvad 的 WireGuard 配置,實現基於域名/App 的分流。
Mullvad 介紹可以參考:https://www.informaltech.dev/mullvad-vpn-intro/
前置準備
必要條件
- iPhone/iPad(iOS 15+)
- Shadowrocket(App Store 價格 $22 HKD)或 Surge(價格較高,In-App Purchase)
- Mullvad 帳號(已充值)
- 穩定的網路連接
支出總計 Mullvad VPN 是 €5/月(約 $42 HKD),Shadowrocket 是 $22 HKD 一次性購買(價錢以 App Store 為準)。
準備部分:先在 iPhone 安裝好 Shadowrocket

第一部分:獲取 Mullvad WireGuard 配置
步驟 1:登入 Mullvad 帳號


前往 mullvad.net/en/account,輸入你的 Account Number。(可以在 Mac App Profile 找到)
步驟 2:生成 WireGuard 配置

- 在帳號頁面,找到「WireGuard configuration」區域
- 點擊「Generate keys」生成新的金鑰對
- 選擇伺服器位置(美國、日本、新加坡,只要是有 AI 服務的地區即可)

- 點擊「Generate QR code」
第二部分:Shadowrocket 設定
步驟 1:打開之前下載的 Shadowrocket
首次開啟時,允許它新增 VPN 配置。
步驟 2:新增 WireGuard 節點
- 開啟 Shadowrocket
- 點擊左上角「」Scan QR Code
之後你會在 Home Page 的 第二個 section - Local Servers 看到多了一組IP address。

這樣就成功新增了 VPN 的節點。(上方圖片我遮住了 IP Address)
然後在 Home Page,你最經常用到的通常只會是最上面的這 2 行:

分別是:
- 開關 VPN
- Network Traffic 如何分流
- Config → 自定義(我們要用這個)
- Proxy → 所有流量都經 VPN
- Direct → 所有流量都不經過 VPN
- Scene → 根據你當前連接的網路環境(如特定的 Wi-Fi 或行動數據),自動切換代理策略
步驟 3:配置分流規則
在 Shadowrocket App 的 Bottom Navigation Bar,點擊「Config」,
你應該可以在 Local Files 的 section 看到有一個 default.conf。

點擊然後選 Edit Plain Text,之後直接複製下方內容:
# Shadowrocket: 2026-01-01 11:02:13
[General]
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local, captive.apple.com
tun-excluded-routes = 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.88.99.0/24, 192.168.0.0/16, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 255.255.255.255/32, 239.255.255.250/32
dns-server = system
fallback-dns-server = system
# Enable full IPv6 support
ipv6 = true
prefer-ipv6 = false
# If a domain uses the direct policy, after enabling this, Shadowrocket will use the system DNS to resolve it.
dns-direct-system = false
# If true, Shadowrocket will automatically reply to ICMP packets.
icmp-auto-reply = true
# If true, Shadowrocket always executes reject urlrewrite rules even though the global routing is not config.
always-reject-url-rewrite = false
# If false, the domain resolution returns a private IP and Shadowrocket assumes that the domain is hijacked and forces the use of a proxy.
private-ip-answer = true
# If a domain uses the direct policy, automatically switch to the proxy rule if direct DNS resolution fails.
dns-direct-fallback-proxy = false
# The fallback behavior when UDP traffic matches a policy that doesn't support the UDP relay. Possible values: DIRECT, REJECT.
udp-policy-not-supported-behaviour = REJECT
# By default, DNS lookup is always performed on the remote server with a proxy policy.
# If true, Shadowrocket will use the mapped address for the proxy connection instead of the host if a local DNS mapping exists.
use-local-host-item-for-proxy = false
[Rule]
# Block HTTP3/QUIC
# AND,((PROTOCOL,UDP),(DEST-PORT,443)),REJECT-NO-DROP
# ChatGPT
DOMAIN,api.statsig.com,PROXY
DOMAIN,browser-intake-datadoghq.com,PROXY
DOMAIN,chat.openai.com.cdn.cloudflare.net,PROXY
DOMAIN,o33249.ingest.sentry.io,PROXY
DOMAIN,openai-api.arkoselabs.com,PROXY
DOMAIN,openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net,PROXY
DOMAIN,openaicomproductionae4b.blob.core.windows.net,PROXY
DOMAIN,production-openaicom-storage.azureedge.net,PROXY
DOMAIN,static.cloudflareinsights.com,PROXY
DOMAIN-KEYWORD,openaicom-api,PROXY
DOMAIN-SUFFIX,chatgpt.livekit.cloud,PROXY
DOMAIN-SUFFIX,client-api.arkoselabs.com,PROXY
DOMAIN-SUFFIX,events.statsigapi.net,PROXY
DOMAIN-SUFFIX,featuregates.org,PROXY
DOMAIN-SUFFIX,host.livekit.cloud,PROXY
DOMAIN-SUFFIX,identrust.com,PROXY
DOMAIN-SUFFIX,intercom.io,PROXY
DOMAIN-SUFFIX,intercomcdn.com,PROXY
DOMAIN-SUFFIX,launchdarkly.com,PROXY
DOMAIN-SUFFIX,oaistatic.com,PROXY
DOMAIN-SUFFIX,oaiusercontent.com,PROXY
DOMAIN-SUFFIX,observeit.net,PROXY
DOMAIN-SUFFIX,openai.com,PROXY
DOMAIN-SUFFIX,openaiapi-site.azureedge.net,PROXY
DOMAIN-SUFFIX,openaicom.imgix.net,PROXY
DOMAIN-SUFFIX,chatgpt.com,PROXY
DOMAIN-SUFFIX,ai.com,PROXY
DOMAIN-SUFFIX,turn.livekit.cloud,PROXY
IP-CIDR,24.199.123.28/32,PROXY,no-resolve
IP-CIDR,45.76.214.191/32,PROXY,no-resolve
IP-CIDR,64.23.132.171/32,PROXY,no-resolve
IP-CIDR,143.198.200.27/32,PROXY,no-resolve
IP-CIDR,159.89.204.203/32,PROXY,no-resolve
# Claude / Anthropic - 完整版
DOMAIN,cdn.usefathom.com,PROXY
DOMAIN-SUFFIX,anthropic.com,PROXY
DOMAIN-SUFFIX,claude.ai,PROXY
DOMAIN-SUFFIX,claudeusercontent.com,PROXY
DOMAIN-SUFFIX,claudeassets.com,PROXY
DOMAIN-KEYWORD,anthropic,PROXY
DOMAIN-KEYWORD,claude,PROXY
# Claude 可能用到的第三方服務
DOMAIN-SUFFIX,statsigapi.net,PROXY
DOMAIN-SUFFIX,statsig.com,PROXY
DOMAIN-SUFFIX,featuregates.org,PROXY
DOMAIN-SUFFIX,intercom.io,PROXY
DOMAIN-SUFFIX,intercomcdn.com,PROXY
DOMAIN-SUFFIX,sentry.io,PROXY
# Google Gemini - 完整版
DOMAIN-SUFFIX,gemini.google.com,PROXY
DOMAIN-SUFFIX,bard.google.com,PROXY
DOMAIN-SUFFIX,aistudio.google.com,PROXY
DOMAIN-SUFFIX,generativelanguage.googleapis.com,PROXY
DOMAIN-SUFFIX,proactivebackend-pa.googleapis.com,PROXY
DOMAIN-SUFFIX,alkalimakersuite-pa.clients6.google.com,PROXY
DOMAIN-SUFFIX,makersuite.google.com,PROXY
DOMAIN-SUFFIX,deepmind.com,PROXY
DOMAIN-SUFFIX,deepmind.google,PROXY
DOMAIN-SUFFIX,notebooklm.google.com,PROXY
DOMAIN-SUFFIX,notebooklm.google,PROXY
DOMAIN-SUFFIX,ai.google.dev,PROXY
DOMAIN-SUFFIX,notebooklm-pa.googleapis.com,PROXY
DOMAIN-SUFFIX,oauth2.googleapis.com,PROXY
# Google 通用服務(Gemini 會用到)
DOMAIN-SUFFIX,oauthaccountmanager.googleapis.com,PROXY
DOMAIN-SUFFIX,people-pa.googleapis.com,PROXY
DOMAIN-SUFFIX,lh3.googleusercontent.com,PROXY
DOMAIN-KEYWORD,gemini,PROXY
# DNS Leak
DOMAIN-SUFFIX,dnsleaktest.com,PROXY
DOMAIN-SUFFIX,dnsleak.com,PROXY
DOMAIN-SUFFIX,expressvpn.com,PROXY
DOMAIN-SUFFIX,nordvpn.com,PROXY
DOMAIN-SUFFIX,surfshark.com,PROXY
DOMAIN-SUFFIX,ipleak.net,PROXY
DOMAIN-SUFFIX,perfect-privacy.com,PROXY
DOMAIN-SUFFIX,browserleaks.com,PROXY
DOMAIN-SUFFIX,browserleaks.org,PROXY
DOMAIN-SUFFIX,vpnunlimited.com,PROXY
DOMAIN-SUFFIX,whoer.net,PROXY
DOMAIN-SUFFIX,whrq.net,PROXY
# 本地網路直連
IP-CIDR,192.168.0.0/16,DIRECT
IP-CIDR,10.0.0.0/8,DIRECT
IP-CIDR,172.16.0.0/12,DIRECT
IP-CIDR,127.0.0.0/8,DIRECT
IP-CIDR,169.254.0.0/16,DIRECT
IP-CIDR,224.0.0.0/4,DIRECT
IP-CIDR,FE80::/10,DIRECT
DOMAIN-SUFFIX,local,DIRECT
# Final
FINAL,DIRECT
[Host]
localhost = 127.0.0.1
[URL Rewrite]然後貼到 Shadowrocket 的 config file 裡面。
記得要 replace 上去,也就是在 config file 先 Select All 之後再 Paste
步驟 4:啟用並測試
- 返回 Shadowrocket 主頁
- 選擇你剛創建的 Mullvad 節點
- 確認你已經打開 VPN,而且 Global Rules 選擇為 Config
測試方法:
- 打開瀏覽器搜尋 "my ip address",看看是不是還在香港,是的話就 OK 沒問題(因為沒有經過 VPN)
- 之後再去 ChatGPT、Gemini,應該可以正常使用

恭喜!到了這一步,你已經成功了 🥳🤩👏
快速步驟總結
1️⃣ 購買 Shadowrocket($22)
2️⃣ 從 Mullvad 網站生成 WireGuard 配置
3️⃣ 在 Shadowrocket 新增 WireGuard 節點
4️⃣ 新增分流規則(複製上面的規則列表)
5️⃣ 啟用並測試連接
6️⃣ 根據需要調整規則