不同人对“泄露”定义不一样,有的人需要不让 DNS 服务商知道客户机的 DNS query log ,有的人只是不想要污染
EvineDeng
71 天前
不是一定要用 fake-ip 才能解决 DNS 泄露,只要你方案能解决就行了。
GotKiCry
71 天前
@K8dcnPEZ6V8b8Z6 国外 DNS 应该也是走代理去请求的,理论上服务商收到的客户机 dns 请求应该也是代理服务器发出而已。如果说需要国内 dns 请求干脆不使用国内 dns 就可以了。
Goooooos
71 天前
fake-ip 不是为了解决泄露的吧?
ZRS
71 天前
fakeip 解决的是在应用程序不支持代理的情况下如何将 IP 请求和域名关联起来用于代理的问题 和 DNS 泄露没关系
mohumohu
71 天前
谁跟你说 fakeip 是用来解决 DNS 泄漏的,这两者之间就没有任何联系。
Earsum
71 天前
dns 防泄漏是把国内的域名扔给国内解析,国外的域名扔给国外解析,这样对于境内 dns 提供商而言,只能看到你境内的 dns 请求。甚至有的人还需要不同的服务走不同的节点,例如 paypal 走美国原生节点,那 paypal 就需要从美国原生节点发起 dns 请求而不能单纯用香港或者新加坡的 IP ,否则可能会被风控,但是这种需求对于个人用户很少见。 fakeip 解决的是 dns 请求速度的问题,因为会立马返回一个假 ip 给用户终端,代价就是可能的内网 dns 污染,不过本来没污染也上不去 gfwlist 网站所以对于境内而言区别不太大。
它的实际作用是让 tun 模式的代理也能像传统 HTTP/SOCKS5 代理一样支持域名连接,减少不必要的 DNS 解析,并且充分利用代理软件的路由规则(分流)功能。
传统的 HTTP 或者 SOCKS5 代理都是可以直接用域名建立连接的(有的地方也称为“远程 DNS 解析”),应用发起请求的时候不需要先通过系统进行 dns 解析得到 ip ,直接用域名向代理发起连接请求,这样的话就可以充分利用代理软件的域名分流规则的功能。
但是 tun 模式不一样,因为 tun 是虚拟网卡的原理,其它程序并不知道自己使用了代理,是像平常一样需要先进行 dns 解析得到 IP ,再用 IP 建立 tcp 或者 udp 连接,这样相比传统代理会带来一些麻烦” 1. 代理软件就得分两步处理其它程序的请求,先是接管 dns 解析,再接管后续的真正的连接建立,比较耗时 2. 第二步建立连接的时候代理软件拿到的是 ip ,域名信息没有了,要实现域名分流规则的功能就很麻烦,现在的 v2ray 等代理内核解决这个问题的方法是“协议嗅探”,就是尝试通过应用层的 http/tls 里面的信息来获取域名,这种方法实现域名分流的准确性和普适性有限
而 fake-ip 就是用来解决这个问题的,fake-ip 模式下 tun 模式的代理软件接管了 dns 解析之后,对于被代理的程序的 dns 请求不会实际进行解析,而是给相应的域名关联一个假 ip ,后续程序拿到假 ip 建立实际连接的时候,代理软件就可以知晓这个请求对应的域名,从而像传统代理一样可以直接用域名建立连接(远程解析),或者进行更准确的域名分流等操作。
好处就是提高 tun 模式代理的效率,并且补全了原本 tun 模式相比传统代理反而不支持的一些功能。
缺点是假 ip 会进入系统 dns 缓存,如果关掉代理之后可能会上不了网,这时候需要清除一下系统的 dns 缓存。
qbqbqbqb
71 天前
是不是用 fake-ip 和 dns 泄露无关。
主要是看代理内核接管 dns 解析后所使用的 dns 分流的工作原理。
例如: 1. clash 的 dns fallback 是会并发对国内国外 dns 发起请求然后过滤国内 dns 的无效结果,只要你用了这个 fallback 的功能实现国内外 dns 分流,就会有 dns 泄露,和用不用 fake-ip 无关。 2. v2ray 的 dns 分流是用 geosite 规则匹配国内国外域名分别用对应的 dns 解析,这样只要配置成没有匹配规则的域名一律走国外 dns ,就不会泄露,同样和用不用 fake-ip 无关。