「能上網」和「解析沒外洩」是兩回事。代理連著,DNS 卻還在問電信業者,這種情況非常常見。
三分鐘自測
- 瀏覽器開啟 dnsleaktest.com 或 browserleaks.com/dns 跑一次測試。結果裡列出的伺服器如果是你寬頻電信業者的名字,那就是洩漏了。
- Connections 頁面看域名列:顯示的是完整域名而不是一串裸 IP,說明解析發生在 Clash 內部,這是好現象,頁面用法見 Connections 頁面詳解。
- 命令列
nslookup www.example.com查到的是本機網路卡的 DNS,它不經過系統代理,所以這一條只在 TUN 模式下有參考價值。
fake-ip 模式下的正常現象
fake-ip 模式裡瀏覽器拿到的是 198.18.x.x 這類保留位址,真正的解析在建立連線時才由出口那頭完成。所以測試站可能一個「DNS 伺服器」都列不出來,或者列出的是節點所在地的解析器——這都正常,機制見 fake-ip 與 redir-host 模式詳解。
洩漏了怎麼堵
- 只開了系統代理沒開 TUN:瀏覽器以外的程式自己解析,這是設計如此,不是 bug。要全域性接管就得上 TUN。
dns.enable是 false:核心根本沒接管 DNS,把它開啟。- nameserver 裡寫著電信業者的 DNS:換成加密 DNS 或公共 DNS,別用寬頻自動下發的那個。
- 瀏覽器自己開了安全 DNS:Chrome 和 Firefox 的 DoH 會繞過系統設定自行解析。測試站顯示的伺服器是 Cloudflare 或 Google 而你從沒配過,多半就是它。
順帶一提:只是想確認代理本身有沒有生效,有更簡單的辦法,見 開啟系統代理與驗證代理是否生效。