本文目錄
路由器本身的網域查詢出錯,與家中某台裝置無法連網,需要查看的證據不同。這裡要檢查的是原本應由公用解析器提供的回答,是否變成代理的虛擬位址。查詢結果與防火牆計數必須相符,才能進行外掛升級或暫時避開問題,而不是將所有相關功能一起關閉。
查詢公用網路 IPv6 DNS,卻收到 198.18.x
核對 OpenClash 的 IPv6、路由器本機代理、本機 DNS 攔截和 Fake-IP 狀態。上述功能開啟時,再檢查路由器上 SmartDNS 等解析器向公用 IPv6 DNS 查詢是否收到 198.18.x,以及使用網域作為伺服器位址的代理節點是否同時無法連線。
一般終端打不開網頁、LAN 裝置拿不到 IPv6、訂閱下載失敗或 DNS 連接埠被 AdGuard Home 佔用,並不能直接證明是同一問題。先確認故障發生在路由器本機發往公用網路 IPv6 DNS 的查詢,不要一看到 IPv6 就關閉整個網路功能。
只有同時滿足這些條件才繼續
- OpenClash 版本低於已收錄修復的 v0.47.156,或升級後尚未重啟服務
- 系統使用 fw4/nftables 或 legacy ip6tables,並開啟路由器本機代理
- 本機 DNS 劫持和 Fake-IP 已啟用,路由器本機還有 SmartDNS 等解析器
- 該解析器設定了公用網路 IPv6 DNS 上游,節點伺服器位址使用網域
儲存外掛程式包、DNS 設定與管理入口
記錄外掛程式和核心版本、執行模式及 SmartDNS 上游;按下面步驟儲存設定、設定檔和安裝套件,便於升級失敗時恢復。
測試期間不要同時改訂閱、規則、DNS 上游和執行模式。一次只動一項,並保留修改前後的查詢結果;否則節點恢復後也無法判斷是哪一步起作用。
準備還原材料
匯出外掛程式設定
在設定檔管理中備份設定和目前使用的設定檔,下載到路由器之外的裝置儲存。
保留原安裝套件
儲存目前版本對應的官方 IPK 或 APK,並記下系統使用 opkg 還是 apk。
記錄觸發開關
抄下 IPv6、路由器本機代理、本機 DNS 劫持、Fake-IP 與 SmartDNS IPv6 上游狀態。
準備直連入口
確認能透過 LAN 管理路由器;遠端維護時不要在沒有備用連線的情況下修改 DNS 和防火牆。
在路由器上對照 DNS 回答與規則計數
在路由器終端直接指定一個目前可達的公用網路 IPv6 DNS 查詢實際網域。正常結果應是網域的公開 A 或 AAAA 記錄;如果回傳 198.18.0.0/16,並且執行前後對應的 IPv6 OUTPUT DNS Hijack 規則計數增加,查詢就被錯誤送回了本機 Clash DNS。
OpenClash issue #5251 的復現使用 2400:3200::1。這個位址是否適合你的網路仍要先確認;若 IPv6 路由本身不可達,超時只能說明上游不可用,不能證明發生了劫持。查詢網域也可換成你明確知道有公開記錄的普通網域。
在路由器 SSH 終端讀取計數,依本機實際使用的防火牆選擇下方一條命令:fw4/nftables 用第一條,legacy ip6tables 用第二條。不要只因兩種命令都存在就混用;查詢前後各執行一次,不歸零、不刪除規則。
nft list chain inet fw4 nat_outputip6tables -t nat -nvxL OUTPUT --line-numbers在 fw4 輸出中,找到 IPv6、UDP 的 53 連接埠、redirect 和 OpenClash DNS Hijack 標記同時對應的規則,比較同一行 counter 的 packets 與 bytes。規則也可能合併 TCP/UDP;不要把整個 OUTPUT 的總量當成查詢證據。
在 legacy 輸出中,對照帶 OpenClash DNS Hijack 標記的 IPv6 UDP/53 REDIRECT 規則,讀取同一行的 pkts 與 bytes。舊規則的目的位址範圍為 ::/0;修復後的規則只比對 ::1,公網查詢不應增加這條規則的計數。
找不到對應規則或無法讀取計數時,保存版本和查詢結果,停止按這個故障進行升級;只有 198.18.x 回應還不足以證明是同一問題。規則輸出可能含網路資訊,對外求助前先遮蔽敏感內容。
nslookup www.nic.ad.jp 2400:3200::1按結果決定下一步
| 查詢結果 | 規則計數 | 結論 |
|---|---|---|
| 回傳 198.18.x | IPv6 OUTPUT 計數增加 | 符合已確認的路由本機 IPv6 DNS 劫持 |
| 回傳實際 A 或 AAAA | 計數不增加 | 該路徑正常,轉查訂閱中的節點解析 DNS |
| 查詢超時 | 計數不增加 | 先檢查 IPv6 路由和所選 DNS 是否可達 |
| LAN 裝置異常但路由器查詢正常 | 無對應變化 | 轉查 RA、DHCPv6、RDNSS 或瀏覽器安全 DNS |
只有 SmartDNS 查詢異常,Mihomo 上游正常
核對程序所屬使用者群組和查詢去向;Mihomo 通常使用被規則排除的 GID(使用者群組編號),其他本機解析器的查詢則可能命中 OUTPUT 規則。
所有 DNS 都回傳 connection refused
檢查本機監聽連接埠和上游設定,不要套用本文的 IPv6 規則修復。
指定 IPv4 DNS 正常,指定 IPv6 DNS 回傳 198.18.x
保留這組對照和計數變化,進入版本升級。
- SmartDNS 等本機解析器向公用網路 IPv6 位址傳送 53 連接埠查詢
- OpenClash OUTPUT 規則舊版用 ::/0 誤匹配所有 IPv6 DNS 目的位址
- 本機 Clash DNS被重新導向的查詢在 Fake-IP 模式下回傳 198.18.x
- 代理節點網域錯誤結果使使用網域的節點無法完成撥號
修復把路由本機的 IPv6 DNS 劫持範圍從所有位址收窄到回環位址 ::1;LAN 裝置的 DNS 接管規則沒有被這次修改移除。
為什麼公用網路 IPv6 DNS 會被當成本機查詢
舊規則原本只應接管路由器本機發往回環位址的 DNS,卻把 IPv6 目的範圍寫成 ::/0。這個範圍包含全部 IPv6 位址,所以 SmartDNS 存取公用網路 IPv6 DNS 的 TCP 或 UDP 53 連接埠時,也會被重新導向到本機 DNS。
問題不是 PR #5209 新增了 ::/0。該提交分開識別 IPv4 與 IPv6 規則後,讓原本被提前跳過的舊分支穩定執行,才使缺陷從 v0.47.117 起更容易暴露。PR #5252 把 nftables 兩處和 legacy ip6tables 四處都改為 ::1,並保留 LAN 側 DNS 接管。
升級到包含修復的 v0.47.156
OpenClash v0.47.156 的官方發布記錄已確認包含 #5252。以下以這個固定版本說明升級;已執行較新版本時,先確認是否仍有相同的查詢與計數證據,不為照抄步驟而降級。
舊的 ::/0 規則可能仍在防火牆中生效。只有重新產生規則,原始碼中的 ::1 才會真正生效。
一次可還原的升級
核對系統套件格式
opkg 系統選擇官方 IPK,apk 系統選擇官方 APK,並確認下載來源是 v0.47.156 Release。不要混用開發分支檔案或不同包格式。
暫停額外改動
保留原核心、訂閱、執行模式和 DNS 設定,只升級 OpenClash 外掛程式。
安裝並重啟服務
完成安裝後重啟 OpenClash,等待防火牆與 DNS 規則重新產生。
先查日誌再聯網
確認設定測試、核心啟動和 DNS 監聽成功;失敗時恢復原包與備份。
對外查詢、本機回環與節點連線的再次檢查
用升級前同一台路由器、同一個網域和同一個公用網路 IPv6 DNS 再查一次。修復生效後應回傳實際 A 或 AAAA,公用網路查詢不再增加 IPv6 OUTPUT DNS Hijack 計數;向本機回環 ::1 發出的查詢仍可被 OpenClash 接管。
修復驗收清單
- OpenClash 版本包含 v0.47.156 的修復,服務已在安裝後重新啟動
- 指定公用網路 IPv6 DNS 回傳實際 A 或 AAAA,不再回傳 198.18.x
- 公用網路 IPv6 DNS 查詢不再增加路由本機 IPv6 劫持規則計數
- 查詢 ::1 時本機 DNS 接管仍正常,LAN 裝置解析沒有被破壞
- 至少一個原節點完成網域解析、撥號與實際頁面存取,並有對應連線記錄
暫時不能升級時怎麼規避和還原
暫時無法升級時,可先從 SmartDNS 移除公用網路 IPv6 DNS 上游,改用已經驗證可達的 IPv4 上游;也可以臨時關閉路由器本機代理或本機 DNS 劫持中的一個觸發項。每種方式都會改變路由器自身流量或 DNS 接管,必須逐項測試,不能當成長期修復。
如果升級後異常擴大,先在管理頁面停用 OpenClash;若 DNS 仍指向已停止的服務,恢復可連線的上游。確認 LAN 管理入口可用後,還原原外掛套件與設定備份並重新啟動服務,再用升級前的 IPv4/IPv6 查詢對照原狀態。
公用網路 IPv6 DNS 已回傳實際結果但節點仍失敗時,轉查 proxy-server-nameserver、訂閱內容、TLS 和節點伺服器,不再繼續改 OUTPUT 規則。
臨時方案的影響
| 操作 | 適合情況 | 必須復查 |
|---|---|---|
| SmartDNS 改用可達的 IPv4 上游 | 無法立即升級但需要恢復節點解析 | 本機網域、快取和節點網域都能正常解析 |
| 暫時關閉路由器本機代理 | 只有路由器自身 DNS 受影響 | 路由器更新、訂閱與外掛程式下載的出站路徑 |
| 暫時關閉本機 DNS 劫持 | 可接受終端按 DHCP 傳送 DNS | LAN 裝置是否繞過預期分流和 DNS 策略 |
| 恢復原包與設定 | 升級後服務無法啟動或 LAN 斷網 | 版本、DNS 監聽、防火牆規則和實際存取 |
