这里很多条代码,请问是用哪个直接修改哪个对吗?比如我的是SSR和v2ray(ws+tls),是不是直接修改我需要的相应代码,其他的都不要,保留一些必须的,如:谷歌测试连接。
还有就是,我看了一下这个规则模板,好像不支持SSR协议,而是支持SS协议!
@zxlhhyccc 是的,不支持ssr
我不喜欢SS,什么时候可以加SSR支持,还有就是如果我只配置v2ray,可是配置模板代码那么多,请问配置文件改怎么做修改?
@zxlhhyccc 我不喜欢 SSR,所以不会增加 SSR 的支持。vmess 的问题找到你要的那个配置格式,填上你的 server 信息,删掉其他不需要的配置就行了。
@Dreamacro 借地问一下,关于 DNS 段中的 ipv6 选项
dns:
enable: true # set true to enable dns (default is false)
ipv6: false # default is false
...
不知道此选项的作用是什么? 是否是屏蔽返回的AAAA记录?
我测试了一下,好像不是这个作用。
@lisaac 不会改变 dns server 的行为,只是让 clash dns client 不发出 ipv6 的 dns 请求
@Dreamacro 原来如此
在双栈网络环境下针对 blocked 的域名,如果同时返回 AAAA 和 A 记录,目前大多数客户端是 ipv6 优先的,可能会存在先连接 ipv6 地址再连接 ipv4 地址的情况
没有更好的解决方案的情况下,此前 ipset + dnsmasq 方案时,粗暴的使用 iptables 对gfwlist 列表中的 AAAA 记录进行过滤
不知道 clash 中是否可能实现?或者有更好的方案?
如果请求的是 A 记录的话,理论上不会返回 AAAA 记录的吧?不太清楚目前 real-world 的 dns server 的行为是怎么样的,如果不返回的话,从 clash 发起的 dns 请求应该是没问题的。
@Dreamacro
双栈网络下应该会请求 A 记录和 AAAA 记录:
# curl -v google.com
* STATE: INIT => CONNECT handle 0x600055098; line 1445 (connection #-5000)
* Added connection 0. The cache now contains 1 members
* STATE: CONNECT => WAITRESOLVE handle 0x600055098; line 1481 (connection #0)
* Trying 2607:f8b0:4007:80e::200e...
* TCP_NODELAY set
* STATE: WAITRESOLVE => WAITCONNECT handle 0x600055098; line 1562 (connection #0)
* Trying 172.217.14.110...
* TCP_NODELAY set
* Connected to google.com (172.217.14.110) port 80 (#0)
....
而且客户端一般是 ipv6 优先的
@lisaac
$ curl -x 127.1:7890 -v google.com
试试这个
@Dreamacro
使用代理好像看不到更多的信息:
# curl -x 10.1.1.244:7890 -v google.com
* STATE: INIT => CONNECT handle 0x600055098; line 1445 (connection #-5000)
* Added connection 0. The cache now contains 1 members
* Trying 10.1.1.244...
* TCP_NODELAY set
* STATE: CONNECT => WAITCONNECT handle 0x600055098; line 1497 (connection #0)
* Connected to 10.1.1.244 (10.1.1.244) port 7890 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600055098; line 1616 (connection #0)
* Marked for [keep alive]: HTTP default
* STATE: SENDPROTOCONNECT => DO handle 0x600055098; line 1634 (connection #0)
@Dreamacro
环境是:将 clash 跑在一个容器中,并将内网 DNS服务器 及网关指向容器,实现的透明代理。
目前透明代理的话应该没办法,因为先解析了一遍,你可以试试 dev 分支的 fake-ip ?
@Dreamacro
刚刚测试了一下
针对非 DIRECT 域名:查询还是会返回 A 记录及 AAAA 记录,用还是一样,会优先连接 ipv6
针对 DIRECT 域名: 查询则会返回 fake ip,由于没法获得正确的 ip,所以没法上网
@lisaac 和 redir-host 一样,这是一个透明代理的方案,通过 clash 内部会反推出域名,再进行请求。所以经过 clash 的流量不会产生没法上网的情况。
@Dreamacro
这个方案(反推域名)貌似有点另辟蹊径的意思,自带 DNS 服务器就充当了 fake ip 与域名的一一对应的关系,以便能够反推到正确的域名。
对于DIRECT部分的域名,其实也是经过 clash 的(iptables 中将所有流量都转发至 clash),是否也应该处理相应的 DNS 请求;
或者干脆在第一次请求 DNS 的时候就判定规则,将DIRECT进行正常解析;
又或者,干脆在第一次解析的时候就判定规则,将代理部分域名通过代理服务器解析,直连部分正常解析。
另外,关于 ipv6 这个问题始终存在,能否考虑加入选项,匹配指定规则的域名只返回 ipv4 地址。
@lisaac
这个方案不算另辟蹊径,而是解决在路由器端使用 redir 模式无法获取到域名,以及实现类似 surge "增强" 模式的无奈之举罢了。
redir-host 模式下,先是经过 clash dns server 解析过一次 ip 后,再通过 redir 转发进行请求,clash 反推域名并用 ip 进行 ip 规则的匹配,实际发送给代理节点的是域名 (为了 cdn 友好)。fake-ip 模式下,clash dns server 直接返回 fake ip,通过之后的 TUN/TAP 或者 redir 进行转发后,反推域名并进行 dns 解析(一样仅做匹配规则用)另外,关于 ipv6 这个问题始终存在,能否考虑加入选项,匹配指定规则的域名只返回 ipv4 地址。
这个问题只要不是直接对 clash 提供的 dns server 发起 AAAA 请求,clash 本身去发起的请求都会是 ipv4 的请求。
close because of no more feedback
Most helpful comment
@zxlhhyccc 我不喜欢 SSR,所以不会增加 SSR 的支持。vmess 的问题找到你要的那个配置格式,填上你的 server 信息,删掉其他不需要的配置就行了。