設定 Shadowrocket(小火箭)的 DNS,應先考量目前網路是否可用:網路正常時,先沿用系統 DNS;需要指定解析入口時,再使用已有的自訂 DNS;需要保護查詢傳輸時,則確認 DNS over HTTPS。本文適合已備妥服務商、訂閱與可用連線的使用者,說明解析、路由與連線的差異,並介紹單項修改、檢查記錄及還原原設定的方法。
先分清 DNS 解析與 Global Routing 的流量去向
DNS(網域名稱系統)負責將網域名稱轉換為可連線的位址。開啟網頁時,解析成功只是前提,後續還包括規則比對、建立連線、TLS 交握與傳輸回應。網頁無法開啟,不代表問題一定出在 DNS;更換解析器也無法修復所有連線逾時。
這個流程是用來區分排查階段,並不表示所有請求都嚴格依照相同順序處理。快取、提前比對網域規則、遠端解析,以及應用程式內建的解析機制,都可能改變實際流程。尤其是網域規則可能在本機取得 IP 位址前就完成比對。
Home → Global Routing(全域路由)決定流量採用哪種路由模式,與 DNS 伺服器的選擇不同。Config(設定檔)模式會依目前設定檔中的規則分流;Proxy(代理)與Direct(直連)則用來選擇相應的全域流量出口。Scene(情境)用於選擇情境;排查時應記錄目前使用的情境及其實際套用的設定檔,不要將它視為一種解析協定。Settings → On Demand(隨選連線)控制何時啟動連線。測試期間若網路條件改變,連線狀態也可能隨之變動,應一併記錄。
如果已有訂閱,更新訂閱通常是更新其中的連線項目,不代表目前 Config 中的 DNS 設定也已更新。排查前請分別記錄所選連線、目前啟用的設定檔與 Global Routing 模式,避免混淆這三種不同狀態。
如何選擇系統 DNS、自訂 DNS 與 DoH
系統 DNS 使用目前系統網路環境提供的解析設定,Wi-Fi 與行動網路可能不同。自訂 DNS 則指定解析入口;若填入一般 DNS 伺服器位址,通常會使用傳統 DNS 傳輸。DNS over HTTPS(透過 HTTPS 傳輸 DNS,簡稱 DoH)改變的是查詢的傳輸方式,不保證回傳的位址速度更快或更適合目前網路。
| 設定方式 | 必要條件 | 適合檢查的情境 | 主要限制 |
|---|---|---|---|
| 系統 DNS | 目前網路已提供可用的解析服務 | 建立基準、存取區域網路名稱、完成網路登入 | 切換網路後,解析入口可能改變 |
| 自訂一般 DNS | 已有伺服器位址,且目前網路可以連線 | 固定解析入口、比較不同網路的解析差異 | 一般查詢本身不提供傳輸加密 |
| DNS over HTTPS | 已有完整端點、有效憑證及可用的 HTTPS 路徑 | 需要保護到解析端點之間的查詢傳輸 | 取決於端點連線能力、網域引導解析及 TLS 交握 |
DoH 端點可能使用明確指定的其他連接埠;「可以瀏覽某個 HTTPS 網站」也無法證明某個 DoH 端點可連線。伺服器網域、連接埠、請求路徑與憑證都必須相符。查詢傳輸加密後,解析端點仍可處理並看到查詢,不能因此推論所有流量都已隱藏。
結論:先保留可用的基準設定,再更換解析入口
如果系統 DNS 已能穩定存取目標,先記錄結果;不要為了追求單次較短的耗時,同時更換解析器與流量出口。確實遇到解析失敗時,每次只修改一項 DNS 設定,再用相同網域重新測試。
先從目前的 Config 檢查 DNS,再逐項修改
先前往 Config(設定檔),確認目前啟用的檔案,再查看其中的 [General](一般設定)與 dns-server(DNS 伺服器)項目。也可以從應用程式內的 Settings → DNS(DNS 設定)檢查相關選項;不要只修改未啟用的設定檔,之後卻誤以為解析器沒有生效。
- 保留原始值。複製目前的設定檔作為還原副本,並記錄 DNS 欄位、Global Routing 模式及目前網路。若設定檔包含憑證,請妥善保管副本。
- 確認測試目標。選擇一個已知可正常存取的公開網域,以及一個確實有問題的網域。區域網路名稱應另外測試,不要與公開網域混在一起。
- 只修改解析設定。在啟用中的設定檔檢查
dns-server,或到相應的 DNS 設定頁面查看既有值。不要同時修改流量出口、規則、IPv6 與 On Demand。 - 儲存後重新連線。結束目前連線再重新啟用,接著送出新的請求。已開啟的頁面、既有連線與快取命中都不適合作為唯一的驗證依據。
- 比對失敗階段。確認問題是解析逾時、連線逾時還是憑證錯誤;若結果變差,請還原原設定並重新連線。
以下兩段只示範同一欄位的兩種寫法,不能將兩段重複加到同一個設定檔中。保留實際檔案中的其他必要設定;不要為了套用範例,就用幾行文字覆蓋整份設定檔。
[General]
dns-server = system
[General]
dns-server = https://resolver.example.com/dns-query
若現有設定由遠端更新管理,請先確認更新是否會覆蓋本機修改。測試時應保留副本;更新後重新檢查啟用檔案中的實際值,不要依照上次輸入的內容判斷目前狀態。
如何填寫與核對 DoH 位址及一般 DNS 位址
一般 DNS 位址與 DoH URL 的格式不能任意互換。前者表示伺服器位址,後者還包含協定、主機名稱與請求路徑。在一般 DNS 位址前加上 https://,不會讓該伺服器自動支援 DoH。
核對一般 DNS 位址
- 位址範例
192.0.2.53- 常用連接埠
53,檢查 UDP 與 TCP 路徑- 填寫位置
- 目前設定檔中的
dns-server項目 - 必要條件
- 已有可用伺服器,且具備網路存取權限
192.0.2.53 是文件示例位址,不能直接用於測試。
核對 DoH 端點
- 協定
https://- 主機名稱範例
resolver.example.com- 路徑範例
/dns-query,實際路徑以端點文件為準- 憑證要求
- 憑證有效,且與端點主機名稱相符
DoH 必須使用完整 URL;範例僅說明格式,不提供解析服務。
以網域名稱表示的 DoH 端點需要引導解析:建立 HTTPS 連線前,必須先取得端點本身的位址。如果無法進行引導解析,就可能遇到「要查詢 DNS,卻得先解析 DNS 伺服器網域」的依賴問題。此時應檢查目前網路的基礎解析與端點連線路徑,不要繼續加入同樣無法建立連線的其他端點。
- 位址可連線,不代表協定可用:能連上某個 IP,不代表其指定連接埠提供 DoH 服務。
- 收到 HTTP 回應,不代表查詢成功:在瀏覽器開啟端點時出現錯誤頁,不能單憑此點判定 DoH 服務失效;以瀏覽器一般方式瀏覽,不等同於符合規格的 DNS 查詢。
- 憑證驗證失敗時應查明原因:檢查裝置時間、主機名稱與網路登入狀態,不要將關閉憑證驗證當作解決方法。
規則、IPv6 與區域網路解析如何影響結果
DNS 回傳位址後,流量仍須經過相應的路由判斷。DOMAIN-SUFFIX(網域後綴比對)依據網域名稱;IP-CIDR(IPv4 位址範圍比對)與 GEOIP(IP 地理位置比對)則依據位址資訊。更換解析器後,回傳的位址可能改變,命中的位址規則也可能因此不同。
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
上例只說明語法與比對關係,不是完整設定檔。DIRECT 表示直連,PROXY 表示代理流量出口;實際使用時,請確認策略名稱符合目前設定檔。規則依序由上往下比對,FINAL(最終規則)則處理前面未比對到的流量。位址範圍為文件示例,不應直接套用為日常分流設定。
no-resolve表示不為了該位址規則主動進行網域解析;它不是「關閉所有 DNS」,也不會清除既有解析結果。- 同一網域的
A與AAAA記錄可能指向不同位址。取得 AAAA 記錄只代表解析結果包含 IPv6 位址,不代表目前的 IPv6 連線路徑可用。 - 公司或住家的內部網域可能仰賴本機解析器。改用外部解析器後,公開網站正常、內部網域卻無法解析,是需要另外檢查的情況。
- 部分應用程式會使用自身的加密解析或快取機制。不能因為某個應用程式的行為沒有改變,就認定 Shadowrocket 的 DNS 設定未儲存。
連線到需要網頁登入的 Wi-Fi 時,應先完成網路驗證,再評估是否使用自訂解析。若尚未完成驗證,HTTPS 端點無法連線、憑證異常或所有外部請求逾時,通常是網路存取權限問題,而非 DNS 欄位格式錯誤。
修改後如何驗證:記錄失敗階段,不只確認能否開啟
請在相同網路、相同流量出口及相同路由模式下進行驗證。先用原設定建立基準,再換成候選設定。每次記錄請求時間、目標網域、是否取得位址,以及後續連線結果;不要直接比較快取命中的即時回應與首次建立 DoH 連線所需的時間。
| 觀察到的狀況 | 優先檢查項目 | 下一步 |
|---|---|---|
| 記錄中未取得位址,接著發生逾時 | 解析器是否可連線、端點格式及引導解析 | 還原為系統 DNS,其他設定保持不變後重新測試 |
| 已取得位址,但建立連線時逾時 | 命中的規則、流量出口路徑與目標連接埠 | 確認實際套用的策略,不要先反覆更換 DNS |
| 公開網域正常,內部名稱無法使用 | 是否需要依賴本機網路解析 | 還原原本的網路與解析設定進行比對測試 |
| Wi-Fi 正常,行動網路失敗 | 兩種網路下的端點連線能力與連線狀態 | 分別重新連線並記錄,檢查 On Demand 條件 |
| 重新連線後仍顯示先前的位址 | DNS 快取、應用程式快取與既有連線 | 重新送出請求,區分快取結果與新查詢 |
應用程式內的記錄有助於定位問題,但不同請求顯示的欄位不一定相同。記錄中沒有新的 DNS 項目,可能是命中快取,也可能是解析發生在其他位置。應搭配實際請求時間與路由記錄判斷,不能只因為缺少一行記錄就下結論。
- 針對可重現問題的網域,分別記錄原設定與新設定的結果。
- 檢查是否取得 A 或 AAAA 記錄,再查看連線最後採用的位址及策略。
- 若要驗證隱私,請使用自己管理的測試網域與伺服器記錄;不同的解析出口位址不一定代表異常。
- 完成比對後,只保留已驗證的修改,移除測試值並保留還原副本。
結論:已取得位址時,改查連線與規則
如果記錄顯示已回傳位址,而問題發生在後續連線階段,應先檢查命中的策略與目標路徑。繼續更換 DNS 會增加新的位址變數,讓原本的故障更難定位。
常見問題:設定儲存後仍未生效,該怎麼辦?
修改 DNS 後,為什麼結果還是沒變?
先在 Config 確認修改的是目前啟用中的檔案,再儲存並重新連線。接著關閉舊頁面並送出新請求,再比對記錄時間。也請確認設定更新是否覆蓋了修改,以及目標應用程式是否保留快取或使用自己的解析機制。
使用 DoH 後,所有請求都一定會經過代理嗎?
不會。DoH 描述的是查詢透過 HTTPS 傳輸的方式,與代理策略不同。先確認 Home → Global Routing,再檢查目前設定檔如何處理端點連線與目標流量;解析請求與網頁請求的路徑應分開驗證。
節點延遲正常,但網域一直無法開啟,要先更換 DNS 嗎?
先確認記錄中是否已回傳位址。延遲測試只能反映該次測試過程,不能證明目標網域解析與網頁連線都正常。確認問題發生在解析階段後,再維持流量出口不變,與系統 DNS 進行比對。
設定後完全無法連線,如何還原?
切換回修改前保留的設定檔,確認 dns-server 原值並重新連線。如果目前網路需要登入,請先完成網路驗證;若每次切換網路都會重新啟動連線,再檢查 Settings → On Demand 的現有條件。