-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
完整性要求
- 我保证阅读了文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
- 我提供了完整的配置文件和日志,而不是出于自己的判断只给出截取的部分。
- 我搜索了 issues, 没有发现已提出的类似问题。
- 问题在 Release 最新的版本上可以成功复现
描述
一些权威DNS不支持EDNS导致特定情况下DNS分流失效,造成绕路问题
场景:
如果你的Xray用透明代理充当局域网关,并且你有多个节点分布在不同的国家
你希望看奈飞、亚马逊走HK;其它走默认的美国
最好的做法肯定是在DNS和路由都做策略
DNS做域名的rule是为了保证解析出HK的IP
路由做域名的rule确保流量一定从那出去
路由做IP的rule防止漏网之鱼
但许多大厂CDN的权威DNS压根不支持EDNS
所以可能需要改造DNS模块,让DNS支持指定的outbound
希望支持如下配置:
现在目前临时解决办法是:
1.多准备几个不同的递归DNS,在路由规则中指定出口,放弃EDNS
但如果节点特别多,递归DNS明显不够用,而且这个方法不够优雅
2.让Xray节点sniff+routeOnly=false覆盖IP
但显然会造成二次DNS解析,也不够优雅
重现方式
假如你有两个节点,HK和US,8.8.8.8走US
比如下面这个DNS策略,youtube没问题,facebook会解析出美国IP
...省略
{
// 利用EDNS尝试获取节点位置的A/AAAA记录
"address": "8.8.8.8",
"port": 53,
"skipFallback": true,
"domains": ["geosite:youtube", "geosite:meta"],
"clientIp": "110.235.0.0" // 香港的家宽IP
},
...省略客户端配置
N/A
服务端配置
N/A
客户端日志
N/A
服务端日志
N/A
zhangsan946qcind
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
{ "dns": { "servers": [ { "address": "8.8.8.8", "port": 53, "domains": ["geosite:netflix"], "outboundTag": "node-hk" // 新功能:从hk出去,无视routing的IP rule } "8.8.8.8" // 这里没指定,因此将遵守routing模块的IP rule ] } }