Replies: 2 comments 7 replies
-
1、这本身就是fake-ip + final=proxy的用法。 比较合适的做法,是把规则以外的域名发给支持ECS的DNS服务器做一次本地解析,然后判断是否直连。 |
Beta Was this translation helpful? Give feedback.
-
虽然fake-ip代理省掉了不少DNS解析的时间,但是会污染DNS缓存池,代理如果突然中断,会导致不在geosite内的国内网站也无法连接。
skipFallback、disableFallbackIfMatch、IPIfNonMatch这几个参数的含义你对照配置文档理解一下,就能明白我这么写的逻辑了。 另外提醒一下,谷歌仍有一些域名在国内是有服务器的,这些域名都囊括在 geosite:google@cn 里面,有些地区可以直连,而有些地区存在SNI阻断; 于是配置可以调整成这样:
按照这个逻辑你可以自己调整配置。xray现在可以给每个路由规则添加 ruleTag( https://xtls.github.io/config/routing.html#ruleobject ),将日志级别设为"debug",能够在 error.log 里看到每一条DNS请求和每一条域名请求是否按照你的分流规则出站,方便你判断自己的配置是否有问题 |
Beta Was this translation helpful? Give feedback.
-
功能描述
支持在服务端配置客户端的路由规则,当满足一定条件时(主要是匹配IP)向客户端发送响应,指示客户端通过指定出站发起连接。
为什么这个功能很重要
预定义的域名黑/白名单是不可能完美的
我相信绝大多数人在使用绕过中国大陆的域名分流策略,因为这可以防止DNS泄露。但这也会导致另一个问题,有很多不在预定义域名列表上,但仍然位于中国的域名将会通过代理连接。这不仅增加了至少1 RTT(某些域名的连接会非常慢,甚至无法访问),还增加了服务器IP暴露的风险(一个不太优雅的解决方法是服务端再套一层WARP)。
DNS缓存机制的低效性
为了防止服务器的IP因为访问了中国大陆的地址而暴露,一个较为稳妥的方法是在域名分流的基础上再加一层IP分流,把所有不确定的域名都发送至服务端进行解析。这样也有一个缺点,就是访问所有被墙的地址,因为额外的DNS解析又会增加1 RTT(使用预定义的域名列表进行分流可以缓解一部分)。理想状态下,通过DNS缓存,只在第一次查询时会有较大延迟。但是客户端的工作环境并不稳定,很多情况下都会主动或被动地重启,例如设备重启、切换节点等,这会导致DNS缓存失效。
最佳的解决方法?
在域名列表上的中国大陆域名,通过直连进行DNS解析和连接。
不在域名列表上的域名,发送至服务端进行解析。如果解析结果为中国大陆IP(或未解析到IP),则告知客户端直连解析和访问(这样只会增加1 RTT),反之则直接在服务端连接。
既解决了延迟的问题,又解决了服务端的安全性问题,还省得套WARP。
Beta Was this translation helpful? Give feedback.
All reactions