FakeIP是什么?原理、缺点和什么时候该关掉

约 5 分钟读完 2 次阅读

FakeIP是什么?它是代理客户端处理 DNS 的一种方式:程序查询一个域名时,客户端不去真的解析,直接返回一个保留网段里的假地址(通常是 198.18 开头),等程序拿这个假地址发起连接,客户端再按映射表认出它原本是哪个域名,把域名交给节点去连。

好处是连接建立得快、要走代理的域名不会在本地 DNS 留下记录;代价是有些程序会被假地址坑到,比如断开代理后上不了网、局域网域名访问异常。这篇讲清它的原理、怎么确认自己在不在用、什么时候该关,以及 Clash 里 fake-ip 和 redir-host 两种模式怎么选。

FakeIP 的工作过程

以访问 google.com 为例:

步骤返回真实地址返回假地址
1. 程序查询 google.com客户端去 DNS 服务器查真实地址,要等一个来回客户端立刻返回 198.18.0.5 这类假地址,不用等
2. 程序连接拿到的地址连接真实 IP,客户端再按 IP 判断走不走代理连接 198.18.0.5,被客户端截住
3. 客户端处理已经只剩 IP,按域名分流的规则可能对不上查映射表认出是 google.com,按域名规则分流,把域名交给节点

第 3 步是它真正的价值:客户端拿到的始终是域名,按域名写的分流规则都能准确生效,而且域名由节点那边解析,本地 DNS 被污染也不受影响。

FakeIP 只在 TUN 模式下才起作用

这一点很多文章没讲:用系统代理时,浏览器是直接把域名交给代理客户端的,压根不走本机 DNS,假地址无从谈起。只有在 TUN 模式或路由器透明代理下,程序发出的 DNS 查询被客户端截住,FakeIP 才派得上用场。

所以「要不要开」这个问题,只有开了 TUN 的人才需要考虑。TUN 和系统代理的区别见 TUN模式是什么。

怎么确认自己在用 FakeIP

连上代理、开着 TUN 时,在命令行里查一个国外域名:

nslookup www.google.com

返回的地址是 198.18 或 198.19 开头,就说明在用假地址模式。这个网段是专门保留给网络测试的,公网上不会有真实网站用它,所以客户端拿它当假地址。返回的是真实的公网 IP,就是没用 FakeIP。

看到 198.18 不是出错,这正是它在正常工作。

FakeIP 的好处和坑

说明
好处:首次连接更快不用等真实 DNS 解析就能发起连接
好处:按域名分流更准客户端始终知道连接对应的域名
好处:不怕本地 DNS 污染走代理的域名由节点那边解析
坑:断开代理后部分程序上不了网程序还缓存着假地址,代理一停假地址就不通了,要重启那个程序
坑:局域网和 DDNS 域名访问异常家里 NAS、路由器这类内网域名也被分到假地址,连不上
坑:需要真实 IP 的程序出问题有的程序拿到地址后自己做判断或直接交给别人用,假地址对它没意义

后面两个坑,客户端一般用「过滤名单」解决:名单里的域名照常返回真实 IP。Clash(mihomo)里对应 fake-ip-filter,常见的写法是把 *.lan 这类局域网域名、你的 DDNS 域名加进去。

什么时候该关掉 FakeIP

你的情况建议
只用系统代理、没开 TUN不用管,这个设置对你不起作用
开了 TUN,日常上网可以开,速度和分流准确度更好
经常断开再连代理,断开后总有程序上不了网关掉,或者断开后重启那几个程序
要访问家里 NAS、路由器后台、DDNS 域名把这些域名加进过滤名单;加了还不行就关掉
打游戏、语音通话联机异常先关掉对比一下

Clash 的 fake-ip 和 redir-host 怎么选

Clash(mihomo 内核)的 DNS 增强模式就是在这两者之间选:

模式返回给程序的地址特点
fake-ip假地址(官方示例用 198.18.0.1/16)快,按域名分流准,有上面那些坑
redir-host真实地址兼容性好,首次连接要等 DNS

mihomo 官方文档里 enhanced-mode 的默认值是 redir-host,fake-ip 需要在配置里写明。你在用 fake-ip,通常是因为客户端或配置模板替你选了它,内核本身的默认不是它。OpenClash 等路由器插件也是在这两种运行模式之间选,取舍相同。

我们两个客户端的做法不一样

我们的电脑端不用 FakeIP:国内域名交给本地 DNS 解析,其余域名经代理用加密 DNS 解析,程序拿到的都是真实地址。这样兼容性最好,代价是第一次访问一个国外网站要多等一次解析。

我们的安卓端默认开启 FakeIP:走代理的域名返回 198.18.0.0/15 网段里的假地址,直连的域名照常用真实 DNS。它继承自 NekoBox 的默认设置,在「高级菜单 → 设置 → DNS 设置 → 启用 FakeDNS」里可以关掉。

说一句对我们不利的实话:安卓端开着 FakeIP,代理停止后,有的 App 可能需要重启才能重新联网,设置项下面的说明也写着这一点。如果你遇到「关掉代理后某个 App 一直转圈」,先把那个 App 彻底关掉重开;经常遇到的话,按上面的路径关掉 FakeDNS。

它能防的是「走代理的域名」在本地 DNS 上留下记录,其它 DNS 泄漏途径的检查见 IP泄漏性能测试;命令行里想达到同样效果,用 socks5h 写法即可,见 SOCKS5代理设置方法。

常见问题

FakeIP 是什么意思?

它是代理客户端返回给程序的假 IP 地址,通常在 198.18.0.0/15 网段。程序连接这个假地址时,客户端认出它对应的域名,再把域名交给节点去连,这样不用等真实的 DNS 解析。

FakeIP 有什么缺点?

断开代理后部分程序因为缓存了假地址而上不了网,局域网和 DDNS 域名可能访问异常,个别需要真实 IP 的程序会出问题。多数可以用过滤名单解决。

fake-ip 和 redir-host 哪个好?

日常上网 fake-ip 更快、分流更准;对兼容性要求高、或者要访问很多局域网服务,选 redir-host。mihomo 内核的默认是 redir-host。

fake-ip-filter 是干什么的?

它是假地址模式的过滤名单,名单里的域名照常返回真实 IP。局域网域名、DDNS 域名,以及某些需要真实地址的服务应该加进去。

FakeIP 和 TUN 模式是什么关系?

它要在 TUN 模式或透明代理下才起作用,因为只有这时程序的 DNS 查询才会被代理客户端截住。只用系统代理时,FakeIP 设置开不开都一样。

在线客服
正在加载...