在能保证被代理连接能得到正确的 DNS 解析时,通过以下设置能够减少DNS解析次数,全程只对域名进行一次解析。
关于设置正确的 DNS 解析,防止DNS污染,可详见:
一、前言
以openwrt中的插件passwall举例,在passwall的高级设置菜单里(配置文件位置/var/etc/passwall/TCP_UDP.json
):
流量嗅探 (V2ray/Xray),默认勾选,即配置文件中SniffingObject设置项的enabled
选项默认为true
流量嗅探只供路由使用 (Xray),默认不勾选,即配置文件中SniffingObject设置项的routeOnly
选项默认为false
关于以上二者的详细解释,请见官方文档入站代理 | Project X
各位表达方式确实一个比一个难懂啊。我用小白一点的语言翻译下,如有错误立刻抽我:
使用xray分流必须开启"嗅探"(sniffing)。疑惑点主要是下面的"流量嗅探只供路由使用"(即routeOnly)选项,开启与否的实际状况和影响:
不勾选 = 向代理服务器继续发送域名准备访问;(缺点:两次转换,理论上过程慢;优点:VPS的DNS得到的目标IP更准更近)
勾选 = 直接把IP发给代理服务器进行访问。(缺点:有可能这个IP不是最优的,优点:理论上转换过程少更快)
**DNS流程:**设备发了一个网址的DNS请求,进入路由器,送到passwall设置的DNS分流,获得网址的IP。
**代理流程:**浏览器对此IP发起连接,进入路由器,送到passwall的xray-core。
二、流量嗅探=true,只供路由=false
①在passwall中IP被嗅探出原网址,经过passwall里设置的xray一系列路由规则匹配,最后走代理
②VPS端无论在配置中是否开启流量嗅探,因为客户端开了流量嗅探,收到的是网址请求,而非客户端DNS得到的IP。
③根据VPS端的xray一系列路由规则匹配,向VPS端DNS获取的IP发起连接请求
三、流量嗅探=true,只供路由=true**
1.VPS端关闭流量嗅探
①在passwall中IP被嗅探出原网址,经过passwall里设置的xray一系列路由规则匹配,最后走代理
②因VPS端在配置中关闭流量嗅探,客户端开了routeOnly,VPS端收到请求是客户端DNS得到的IP
③根据VPS端的xray一系列路由规则匹配,向客户端DNS获取的IP发起连接请求
2.VPS端开启流量嗅探
①在passwall中IP被嗅探出原网址,经过passwall里设置的xray一系列路由规则匹配,最后走代理
②因VPS端在配置中开启流量嗅探,客户端开了routeOnly,VPS端收到请求是客户端DNS得到的IP,但会通过IP嗅探出原网址
③根据VPS端的xray一系列路由规则匹配,向VPS端DNS获取的IP发起连接请求
四、总结
以下仅供参考,如有错误欢迎指出:
(客户端)流量嗅探 | (客户端)只供路由 | (VPS端)流量嗅探 | (VPS端)只供路由 | 最终IP来源 |
---|---|---|---|---|
✔ | ❌ | ✔|❌ | ❌ | VPS端 |
✔ | ✔ | ✔ | ❌ | VPS端 |
✔ | ✔ | ✔ | ✔ | 客户端 |
✔ | ✔ | ❌ | ❌ | 客户端 |
❌ | ❌ | ✔ | ✔ | 客户端 |
❌ | ❌ | ✔ | ❌ | VPS端 |
注意最终IP来源为客户端会产生以下问题:
1.若客户端DNS解析了IPV6,而VPS不支持IPV6,则会无法访问
2.VPS端路由规则的IPV4与IPV6优先级失效
3.VPS端路由规则中的域名匹配可能失效
综上,不建议客户端采用fakeip(虽然减少客户端DNS解析,但影响整个局域网的域名解析),或将VPS设置为DNS解析服务器(利用DNS缓存)
五、测试小技巧
用于判断流量嗅探功能是否生效,即用于判读VPS端最终访问的IP来源的简单方法。
参考内容:
评论区