Fake-IP是什么意思?

一句话结论

内核对域名查询立刻返回的一个虚拟地址,真实解析推迟到出口端进行。

程序拿到的是内核临时分配的地址,内核再按记录还原出域名交给节点。它省去了本地等待上游解析的一步,代价是个别需要真实地址的程序会表现异常,常见于 TUN 场景。

Fake-IP 是 Clash 系内核 DNS 模块的一种工作方式。程序问“这个域名是多少”,内核不去问上游,而是从一段预留地址里随手发一个,并记下“这个地址对应这个域名”。程序随后连向这个地址,内核再翻记录,把请求交给节点去访问真正的域名。

它解决什么问题

走代理的域名,真实地址其实用不着在本机知道,节点那一端会自己解析。Fake-IP 利用了这一点:本机不必等待解析结果,也就不会因为本地解析器给出错误答案而被带偏。

在哪里会看到它

  • 在命令行里查询域名,得到一个以 198.18 开头的地址,这是 Mihomo 默认的虚拟地址段,具体以所用内核文档为准。
  • 配置的 dns 段里出现 enhanced-mode 一项,取值写成 fake-ip。
  • 同一段里的 fake-ip-filter,用来列出“不要发虚拟地址”的域名。

常见误解

说法 实际情况
这个地址就是网站的 IP 它只在你的电脑与内核之间有意义,拿去封禁或记录没有价值
开了它所有程序都正常 局域网设备发现、时间同步、联机类程序可能需要真实地址
它能挡住所有 DNS 泄露 只覆盖被内核接管的查询,直连域名仍会在本机解析

遇到异常程序,思路是把相关域名加入过滤列表,让它们拿到真实地址,一次只加一类。完整写法见 Clash DNS 设置详解,与它相对的另一种做法见 redir-host。

怎么判断它在不在起作用

查一个走代理的域名,看到的是上面那段虚拟地址,说明内核已经接管了这次查询。如果只用系统代理,命令行工具走的是系统自己的解析,看不到虚拟地址并不奇怪。想确认查询有没有绕开内核,去 DNS 泄露 条目里看检查思路。国内网站变慢时,也可以先排除这里,参见 开了梯子后国内网站变慢。

哪些文章讲到了Fake-IP

想对照具体机场的记录?

机场榜单和机场目录里,价格、线路、协议、节点地区都是逐家列着的;不确定该装哪个客户端,试试客户端筛选器。