希望增加 queryStrategy: "UseIPv4" 针对不同dns分流上游服务器分别设置 #1775
heygo1345678
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
我使用这个参数queryStrategy: "UseIPv4"发现只能是在dns{}块里面设置,而且是全局所有国内国外分流的上游dns都是a解析了,
测试在单独的国外dns分流 dns{ "servers": [ {} ] }设置这个参数,虽然没有报错,但是并没有生效。还是使用了默认的UseIP了
为什么会有这个需求?
我目前宽带是双栈网络,目前ipv4 tproxy+内置dns分流是正常使用,目前是国内双栈网站直连走ipv6,国外双栈网站会出现第一次打开网页无法显示,大约1s内会自动刷新打开,我认为原因是国外被墙网站查询到了ipv6地址,使用ipv6地址优先发起连接,可能我能力问题,参考官方文档,始终没有成功实现ipv6 tproxy,此时因为是被墙网站ipv6+sni直连访问国外,被重置,而ipv4 tproxy透明代理sniffing到了sni,因此大约1s内会自动刷新打开。
在没有成功实现ipv6 tproxy的情况下,为了避免被墙网站ipv6+sni直连泄漏,
于是才有了希望增加 queryStrategy: "UseIPv4" 针对国外dns分流上游服务器 , queryStrategy: "UseIP" 针对国内dns分流上游服务器 这个需求,但是上面开头实验了,xray并不能这样设置,
于是我实验一个配置文件里面两个dns{}块,分别设置
queryStrategy: "UseIPv4" 针对国外dns分流上游服务器 , queryStrategy: "UseIP" 针对国内dns分流上游服务器
但是这个是有问题的,只有被墙网站才能打开,国内网站不通,觉得是xray不支持,所以错乱了;
于是我实验俩个配置文件里面两个dns{}块,分别设置
queryStrategy: "UseIPv4" 针对国外dns分流上游服务器 单独一个配置文件dnsipv4only.conf, queryStrategy: "UseIP" 针对透明代理内置dns默认设置,
只是这个透明代理内置dns国外分流上游使用嵌套的dnsipv4only.conf设置的作为上游,
测试使用/usr/bin/xray -config /etc/xray/config.json -config /etc/xray/dnsipv4only.json 一次执行多个配置文件也是一样dns是坏的,只能访问被墙网站,国内打不开。
于是我单独起个docker xray容器单独执行/usr/bin/xray -config /etc/xray/dnsipv4only.json,这样嵌套的dns ipv4 only服务器才正常使用,国内双栈网站因为 queryStrategy: "UseIP" 针对透明代理内置dns默认设置,因此会ipv6直连,国外被墙网站因为上面嵌套的dnsipv4only.json是只解析ipv4,因此不会发生被墙网站ipv6+sni直连访问国外被重置泄漏sni的问题
由于这样套娃我想一个配置文件搞定,于是国外dns分流决定启用fakedns,国内dns还是正常解析走双栈直连,
但是我发现这个fakedns还是有一些网站不能正常打开的,虽然已经加了代理dns和代理路由规则,上面嵌套dns ipv4 only服务器就没有这个问题,
而我又不想引入第三方dns服务器。
其间还折腾过iptable是drop 国外dns的aaaa:
需要借任意门嵌套dns。也就是xray 内置dns分流国外的上游服务器上游dns设置为任意门搞的内网IP的dns: "address": "tcp://192.168.1.1:55553",
任意门转发到国外某个公共dns,然后将这个公共dns在路由规则里面加入代理列表
"servers": [
{
在嵌套的内网IP dns "address": "tcp://192.168.1.1:55553",上面使用iptables做aaaa请求DROP/REJECT:
iptables -I OUTPUT -p tcp -d 192.168.1.1 --dport 55553 -m string --algo bm --from 40 --hex-string '|001c|' -j DROP
但是Windows上面测试访问被墙双栈网站还是打开需要10秒左右,延迟太大,
后来测试Android上面访问被墙双栈网站还是打开需要10秒左右,延迟太大,
看了一个issue:
IrineSistiana/mosdns#75
我理解的这个issue描述的意思是mosdns不打算实现 AAAA查询过滤,强制返回SOA来模拟实际无AAAA记录,
我使用iptables直接drop aaaa请求,不返回SOA违反了RFC,
因此希望大佬简化我的套娃配置,如果可以的话。
Beta Was this translation helpful? Give feedback.
All reactions