Clash: 据说clash很好,但是不知道配置文件长啥样子,该怎么配置!

Created on 5 May 2019  ·  20Comments  ·  Source: Dreamacro/clash

Most helpful comment

@zxlhhyccc 我不喜欢 SSR,所以不会增加 SSR 的支持。vmess 的问题找到你要的那个配置格式,填上你的 server 信息,删掉其他不需要的配置就行了。

All 20 comments

这里很多条代码,请问是用哪个直接修改哪个对吗?比如我的是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,所以没法上网

@lisaacredir-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

Was this page helpful?
0 / 5 - 0 ratings