joshfix
(Josh Fix)
1
因为今天看到有人分享clash配置文件,我之前自己也研究过,其实对于dns泄露、污染、劫持等从我睁眼看世界开始,工具们就一直在升级,这也是特色了。
首先声明我的常用的是surge,surge可以作为网关和并且使用fake-ip作为透明代理,我是surge全家桶。但是在macmini上性能较差,我在实验室环境下还是使用了8505的工控机做的软路由,并且选择了openclash,所以有些东西可能与surge记混了。
Clash作为优秀的rule-based proxy软件,以及后面的meta,免费开源,方便了用户架设在任何硬件设备上。
对于dns的问题,没有基础的建议先熟悉这位大佬写的博客:https://blog.skk.moe/post/i-have-my-unique-dns-setup/ ,帮助理解。
现代的代理软件,要先理解规则的存在,rule分为域名规则和ip规则,域名规则无需进行dns解析,因为就直接匹配domain,但是ip规则则不然,如果不配置no-resolve就会强制进行解析,拿解析到的ip来进行匹配,这样做其实无必要,因为大部分我们需要翻墙使用的网站,靠domain就够了。只有少部分直接用ip进行连接的,比如telegram。
强调一下,国外的网址需要走代理服务器的,必须要走代理服务器去进行dns解析,因为这样才能拿到离你代理服务器最近的ip,否则你拿到的是离你最近的ip,这样没用,因为你拿到ip要么没用,因为你走了代理服务器这不就绕回来了;要么拿到的就是无效ip/污染的ip。nameserver是进行第一次解析的默认dns服务器(这边就不考虑链接代理服务器时候解析使用的dns服务器了),比如baidu.com,当然这个太过明显,很有可能在你们的规则的境内网站域名list了,所以换个figma.com,这个直连也能用,但我这边卡一点。那么这个网站进来开始域名匹配,匹配一圈发现没有域名规则符合(此时的ip规则全都加了no-resolve),那么就走到GEOIP (ASN那边先跳过),此时强制进行解析(用的就是nameserver),发现figma的IP不是大陆ip,那么走到下面的final,此时final选择的是走代理,则走代理出去了。数据包会直接发往proxy,远端进行了最后的dns解析。
那从这个流程可以看出,ip规则都写上no-resolve是让匹配规则更快,因为到最后总会需要进行一次dns,no-resolve基本上匹配的是直接用ip访问的,比如telegram的数据中心。这就无需dns解析。
只要规则配置得当,其实无需考虑fallback。那么fallback是什么?clash中,fallback和nameserver是同时并发请求的,然后根据fallback-filter设置的规则选择使用哪个返回的ip。
关于dns泄漏,我也是使用redir-host模式,我是建议使用Meta内核的话,舍弃fallback-filter,直接使用nameserver-policy和nameserver来做dns分流,然后然国外的dns走代理,做好这 2 点,包通过所有 dns 泄漏测试。
实际上,在今天,还是建议用meta内核,以及其带来的nameserver-policy配合nameserver即可。
我实验室的软路由,由于规则维护的得当,基本上没有dns困扰,就是默认这样即可。
国内的dns响应快,配置cdn能进行合理的分配,速度快。如果你当地有严重的劫持等,可以使用DoH/DoT,响应速度也非常够用了。
ipv6: false
dns:
enable: true
ipv6: false
enhanced-mode: redir-host
listen: 0.0.0.0:7874
nameserver:
- 114.114.114.114
- 119.29.29.29
- 223.5.5.5
default-nameserver:
- 114.114.114.114
- 119.29.29.29
- 223.5.5.5
最后,还是要理解配置文件,根据自己当地的情况,切勿盲目使用,盲目复制粘贴不仅会影响代理工具的性能,甚至造成一些bug难以排查。
选择适合自己的,比如当地的运营商的dns。
42 个赞
CN_Free
(Freeforg)
5
电脑端的 clash 支持 nameserver-policy,但 iOS 的stash 还不支持,所以这个规则不够普适,clash 的规则我摸索一圈下来,唯一可以做到电脑端和手机端同时支持并能防止dns泄漏并能不对国内网站造成访问障碍的,只有这个规则:
dns:
enable: true
ipv6: false
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
ipcidr:
- 240.0.0.0/4
### 中间省略亿点点内容 ###
rules:
- GEOIP,CN,DIRECT
- MATCH,PROXY
不过通过你们两个大佬我终于搞明白了,这个配置一律通过国际公共dns进行解析,国内ip一律直连,至少满足了我不泄漏dns且无需进行其他多余规则的增补,更重要的是 stash 也完美支持。我测试下来国内网站访问速度没有任何影响,不再需要担心哪个网站会访问不了要单独增添规则。
5 个赞
resetsix
(一闪一闪亮晶晶)
11
我配置的这段如何
dns:
enable: true
ipv6: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "localhost.ptlogin2.qq.com"
default-nameserver:
- 119.29.29.29
- 114.114.114.114
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fallback:
- https://cloudflare-dns.com/dns-query
- https://dns.google/dns-query
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
1 个赞
Dsdog
(Dsdog)
14
感谢楼主分享经验,根据理解我使用以下配置,使用mihomo内核作为旁路由使用
ipv6: ture
tun:
enable: true
stack: mixed
dns-hijack:
- "any:53"
auto-route: true
auto-redirect: true
auto-detect-interface: true
exclude-interface: null
include-interface: null
exclude-ip:
- '192.168.0.0/16'
- '10.0.0.0/8'
- '172.16.0.0/12'
dns:
enable: true
ipv6: true
# prefer-h3: true # h3是不是不通常建议使用?
enhanced-mode: redir-host
listen: :1053
nameserver:
- 192.168.1.114
fallback:
- 192.168.1.115
# default-nameserver: # 当前配置可不使用
# - 192.168.1.116
nameserver-policy:
"+.cloudflare.182682.xyz": 192.168.1.114
"geosite:cn,private": # 国内域名使用国内服务器解析
- 192.168.1.114
"geosite:geolocation-!cn": # 非国内域名使用国外服务器解析
- 192.168.1.115
proxy-server-nameserver: # 节点使用国内服务器解析
- 192.168.1.114
----省略-----
rules:
- DOMAIN-SUFFIX,ip6-localhost,DIRECT,no-resolve
- DOMAIN-SUFFIX,ip6-loopback,DIRECT,no-resolve
- RULE-SET,private,DIRECT,no-resolve # 私有网络专用域名列表
- RULE-SET,lancidr,DIRECT,no-resolve # 区域网 IP 及保留 IP 地址列表
- RULE-SET,cncidr,DIRECT,no-resolve # 中国大陆 IP 地址列表
- RULE-SET,telegramcidr,📲 电报消息,no-resolve # Telegram 使用的IP 地址列表,无需解析
- GEOIP,CN,DIRECT,no-resolve
- GEOSITE,CN,DIRECT
- MATCH,🐟 漏网之鱼
大概是这样,其中114和115是使用的AdGuard Home分别负责解析国内和国外,先用几天看看
Dsdog
(Dsdog)
15
就是不管我怎么设置,切换什么节点,都不能在Google Play下载更新应用,访问倒是没问题
1 个赞
auqhjjqdo
(auqhjjqdo)
16
个人觉得default-nameserver作用不大,doh.pub一般都是连到1.12.12.12,dns.alidns.com一般连到223.5.5.5,你这样配置相当于每次访问nameserver里的dns服务器时,还要额外用default-nameserver里的dns来解析一遍nameserver的域名,实际上nameserver解析出来的ip基本就是上述的ip,可以去掉default-nameserver,把nameserver里的域名改成1.12.12.12和223.5.5.5,fallback也同理改成1.1.1.1和8.8.8.8就行了
1 个赞
Dsdog
(Dsdog)
17
使用doh的原因是为了加密吧,不是为了速度。。。直接使用udp协议的dns服务器怕被运营商抢答还是什么来着,那样就失去了抗污染的能力了。
当然以上只是我粗浅的理解
auqhjjqdo
(auqhjjqdo)
18
我的意思是改成
https://223.5.5.5/dns-query
这种形式,可以少一层dns解析
其实我更推荐用dot,速度快也有加密
clenhg
(clen)
21
用如下配置:
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- 8.8.8.8
rules:
- GEOSITE,private,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,lan,DIRECT,no-resolve
- GEOIP,cn,DIRECT,no-resolve
- MATCH,PROXY
ipleak.net 测试还是有泄露,怎么会是呢。
看来不得不使出最后手段了:
- DOMAIN-SUFFIX,ipleak.net,REJECT
1 个赞