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.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
功能描述
支持在服务端配置客户端的路由规则,当满足一定条件时(主要是匹配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