先了解 Fake-IP:DNS 回應與網域分流如何配合

Fake-IP 是 mihomo 提供的 DNS 增強模式。應用程式查詢網域時,核心會回傳指定保留範圍內的虛擬 IP,並在本機記錄虛擬 IP 與原始網域的對應。應用程式接著連線至這個虛擬 IP,核心便能找回原始網域,依照網域規則選擇代理群組、直連或其他策略。虛擬 IP 不是網站伺服器的真實位址,也不是節點位址。

這種方式有助於保留網域資訊,避免核心只看到目的 IP 而無法套用網域分流規則。不過,設定 enhanced-mode: fake-ip 不會自動讓 Windows 上的所有應用程式都使用核心 DNS。應用程式的 DNS 查詢是否進入 mihomo,還會受到系統代理、TUN、DNS 接管、瀏覽器安全 DNS 和應用程式自身網路設定影響。

項目 作用 常見檢查方向
enhanced-mode: fake-ip 讓核心以虛擬 IP 回應網域查詢,並保留網域對應資訊 確認正在使用的設定檔確實包含此欄位
nameserver 指定一般網域查詢所使用的上游 DNS 檢查伺服器可連線,以及該寫法受目前核心支援
TUN 與 DNS 接管 將符合條件的應用程式流量及 DNS 查詢送入核心處理 確認 TUN 已啟用、Windows 權限允許,且沒有其他 VPN 衝突
fake-ip-filter 讓指定網域不使用 Fake-IP,依解析設定取得實際 DNS 回應 只加入確實需要真實 IP 的網域,避免範圍過大

設定前的 Windows 檢查與備份

開始修改前,先記下 Clash Verge Rev 版本、核心名稱與版本,以及目前使用的設定檔名稱。若系統已有其他 VPN、代理程式或 DNS 篩選工具,先暫停不必要的工具,以免多個程式同時調整路由或 DNS。設定完成並驗證後,再逐一恢復其他工具,較容易辨認衝突來源。

  • 備份設定:使用用戶端提供的複製或匯出功能保存目前設定。若採用檔案編輯,先複製原檔,不要把唯一一份設定直接覆寫。
  • 確認設定檔:確定選取的設定檔是目前啟用的設定,而不是清單中另一份測試設定。更新訂閱後,也要重新確認啟用項目。
  • 檢查 YAML 結構:同一層級不要出現兩個 dns: 區塊。若設定已經有 DNS 欄位,請合併需要的子欄位,不要另加一份互相衝突的區塊。
  • 選擇測試入口:只測試遵循 Windows 系統代理的瀏覽器,與測試未設定代理的應用程式,結果可能不同。若要測試較廣泛的系統 DNS 與流量,通常需要配置 TUN。

Clash Verge Rev 不同版本的頁面名稱或位置可能略有差異。請從設定檔清單找到目前使用的設定,使用該版本實際提供的編輯或覆寫入口;不要把 YAML 貼進節點地址、訂閱網址或一般代理伺服器欄位。若用戶端會根據介面設定產生最終設定,應以核心實際載入的結果為準。

動手設定:在目前設定檔加入 DNS 區塊

以下範例適用於支援相應欄位的 mihomo 核心,示範啟用 Fake-IP、指定本機 DNS 監聽位址,以及配置上游 DNS。這不是完整訂閱,不能取代原有的節點、代理群組與規則。請把內容合併到現有 YAML 的頂層 dns: 區塊;若已有 dns:,只新增缺少的子欄位,並保留原先必要的設定。

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  default-nameserver:
    - 223.5.5.5
  nameserver:
    - https://dns.alidns.com/dns-query
  1. 在 Clash Verge Rev 中選取目前使用的設定檔,先備份,再開啟該版本提供的設定檔編輯或覆寫功能。
  2. 找到頂層 dns:。若原設定沒有該區塊,將範例加入頂層;若已有,合併欄位並刪除重複鍵值。YAML 縮排使用空格,不要混用 Tab。
  3. 按介面提供的儲存或套用操作,重新載入設定檔。若核心拒絕載入,先查看執行記錄中的 YAML 行號或未知欄位,再修正後重新套用。
  4. 確認核心啟動正常,並檢查 DNS 狀態或核心日誌。若使用 TUN,依用戶端提供的方式啟用 TUN;Windows 可能會要求提升權限。只在信任的環境中授予必要權限。
  5. 開啟一個新的瀏覽器視窗或重新啟動測試應用程式,再進行網域解析測試。不要只用已開啟很久的分頁判斷,因為應用程式可能仍使用先前的 DNS 快取與連線。

listen: 127.0.0.1:1053 是核心本機 DNS 監聽位置,不代表所有 Windows DNS 查詢都會自動送到此處。default-nameserver 用於解析上游 DNS 伺服器主機名稱等必要情況;nameserver 則是一般網域查詢使用的上游。若服務提供者要求不同的上游地址或協定,請依可信任的服務文件調整,並確認核心支援相應格式。範例中的 IPv4 上游也不代表所有網路環境都能連通。

系統代理與 TUN:決定 DNS 查詢是否進入核心

Windows 系統代理主要影響有讀取系統代理設定的應用程式,並不會接管所有應用程式的 DNS 或網路流量。瀏覽器可能透過系統代理將網域請求交給核心,但命令列工具、遊戲或使用自訂網路堆疊的程式,未必採用相同路徑。Fake-IP 設定已載入,不等於這些程式的 DNS 查詢已被接管。

若需要讓較多應用程式的流量進入核心,可考慮使用 TUN。TUN 會透過虛擬網路介面與路由處理流量;在 mihomo 設定中,DNS 接管通常會以 dns-hijack 指定符合條件的 DNS 流量,例如 UDP 或 TCP 的目的連接埠 53。各版本與用戶端可能提供圖形化開關,也可能由設定檔控制;請避免同時在介面與 YAML 中重複設定同一欄位。

使用方式 可能涵蓋範圍 需留意事項
Windows 系統代理 遵循系統代理設定的應用程式連線 不保證攔截其他應用程式的獨立 DNS 查詢
TUN 與 DNS 接管 依路由與接管條件處理更多 IP 流量及連接埠 53 的 DNS 查詢 需要相應權限;可能與其他 VPN、虛擬網卡或防火牆規則衝突
應用程式自訂加密 DNS 可能直接使用 HTTPS 或其他加密協定查詢 DNS 單純接管連接埠 53 通常不會攔截所有加密 DNS 流量

排查期間可暫時關閉瀏覽器自行設定的安全 DNS,讓測試使用較一致的解析路徑;確認核心 DNS 正常後,再決定是否恢復。這是用於定位差異的測試,不代表所有情況都必須關閉加密 DNS。若組織網路、家用路由器或安全軟體另有 DNS 管理政策,應先確認政策允許的設定。

驗證 Fake-IP 是否生效

驗證時要分清楚「核心設定已載入」、「查詢進入核心」和「連線按預期分流」三件事。只看到設定檔中的 enhanced-mode: fake-ip,不能證明 Windows 上每個應用程式都使用了 Fake-IP;而查到保留位址,也不代表目標網站一定可以連線。

  1. 確認核心載入:在用戶端執行狀態或日誌中確認目前核心已啟動,沒有 DNS 欄位解析錯誤、連接埠占用或設定檔載入失敗。
  2. 確認 DNS 查詢:在已啟用並正確接管 DNS 的環境中,使用 Windows 命令提示字元執行 nslookup example.com,將 example.com 換成自己有權測試的網域。Fake-IP 配置下可能看到 198.18.0.0/16 範圍內的回應;實際結果會受到 TUN、DNS 快取及應用程式設定影響。
  3. 確認連線規則:在 Clash Verge Rev 的連線或日誌頁面查看該測試網域是否出現,並核對命中的規則與出站策略。若只看到 IP,表示核心當下可用的網域資訊可能不同,應檢查 DNS 接管與網域映射狀態。
  4. 確認實際用途:用新連線測試瀏覽器或目標應用程式。若 DNS 回應正常但網站仍無法開啟,另外檢查代理群組是否選到可用節點、規則是否將網域指向預期策略,以及上游服務是否可達。

Windows 的 DNS 快取可能使測試結果與剛載入的設定不一致。必要時可在命令提示字元執行 ipconfig /flushdns 清除系統快取,再重新查詢;同時關閉並重開測試應用程式,以免它保留自己的 DNS 快取或既有連線。若使用瀏覽器安全 DNS,還要在測試紀錄中註明其狀態,避免將不同解析路徑的結果混在一起。

設定未套用、解析異常與還原方式

現象 優先檢查 處理方向
儲存後沒有變化 目前啟用的設定檔、覆寫層級、核心是否重新載入 確認修改的是生效設定,查看核心日誌並重新套用
設定檔無法載入 重複的 dns:、縮排、欄位拼字及核心版本 依錯誤行號修正 YAML;不支援的欄位不要照搬其他核心範例
查詢逾時或沒有回應 上游 DNS 可達性、防火牆、核心監聽位址及 DNS 接管 先以簡單且可達的上游測試,再逐項恢復其他選項
部分內網服務無法使用 內網網域是否需要真實 IP、內部 DNS 是否可達 依核心支援方式設定 fake-ip-filter 或內網解析,不要將整個內網範圍任意排除
只有特定瀏覽器異常 瀏覽器安全 DNS、代理設定、瀏覽器快取 暫時統一解析路徑測試,清除相關快取後再恢復原設定

若路由器管理頁、印表機、NAS 或公司內部網域依賴內部 DNS,可能需要讓這些網域取得真實解析結果。mihomo 的 fake-ip-filter 可用來指定不使用 Fake-IP 的網域,但應只加入確實需要例外的項目,並依目前核心支援的語法配置。不要直接把整個通用網域後綴加入例外,否則可能意外改變大量網域的解析與分流行為。

需要還原時,先在用戶端停用 TUN 或相關 DNS 接管功能,再將設定檔恢復為備份版本,或移除本次新增且確認不再需要的 DNS 欄位,然後重新套用。若 Windows 系統代理由用戶端啟用,確認停用後系統代理已回復原狀;再執行 ipconfig /flushdns,並重新啟動受影響的應用程式。不要只刪除 DNS 區塊,卻留下 TUN 路由或系統代理仍在作用。