vernesong / OpenClash

A Clash Client For OpenWrt
MIT License
16.79k stars 3.09k forks source link

OpenClash cpu占用高达40--90 #86

Closed wclmgcd closed 4 years ago

wclmgcd commented 4 years ago

问题在最后一条规则- MATCH,Others, Others这个规则组的规则首先是proxy,然后DIRECT,这个先代理,然后直连,这就造成了所有没有匹配规则的网站全部使用代理,主要是外国网站,但gfw屏蔽的只有那些网站,自己的vps流量小,如果访问未被屏蔽的网站也使用proxy,长时间大量使用proxy,会不会增加gfw被识别的机率? 于是对于Others,我设置成先DIRECT,后proxy,对于没有匹配规则的网站,先直连,不通后再proxy, 这就造成了cpu占用高达40--90,日志如下 time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]" time="2019-12-11T00:41:53Z" level=info msg="192.168.1.1 --> 198.18.3.94 match Match using Domestic[DIRECT]"

,Others设置成先proxy后DIRECT没有这个现象,是不能这样设置还是设置错误?

vernesong commented 4 years ago

这是映射丢失的问题,在反复访问198.18.3.94这个已经不通的地址,属于内核故障,建议你other设置直连。 proxy放在第二个不是直连不通再代理的意思,只有你手动选择后才会代理,顺序不同只是在重启时默认第一个策略的区别。

wclmgcd commented 4 years ago

感谢大佬解答,我把luci-app-clash生成的规则用到OpenClash上,没有这种现象了。详细比对clash和OpenClash的规则,发现差不多,也搞不明白为什么。

proxy放在第二个不是直连不通再代理的意思,只有你手动选择后才会代理,顺序不同只是在重启时默认第一个策略的区别。。。。在问一下这个策略组的问题,比如用模板生成的规则中

  • name: GlobalTV type: select proxies:
  • Proxy
  • DIRECT
  • "netflix"
  • "gcp"
  • "banana"

GlobalTV这个组,排在第一是Proxy,第二是 DIRECT,什么情况下(比如Proxy的服务器不通?),GlobalTV才能跳到的第二个选择? 如果不能,像你说的(只有你手动选择后才会代理),只有把第1个设置成才可以。那每个策略组只要设置一个策略就好了,下面的没有意义。 可以达到我说的那种先直连,直连不通再代理的效果吗?

另外,感谢大佬的软件,用fake-ip模式+KoolProxyR plus+居然可以过滤优酷和YouTube的广告, 我提的这个问题https://github.com/vernesong/OpenClash/issues/76,原来是和KoolProxyR有冲突,KoolProxyR白名单加入 video.iqiyi.com pcw-api.iqiyi.com static.iqiyi.com 67.198.55.0/24 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 149.154.160.0/20 205.172.60.0/22 就可以了

wclmgcd commented 4 years ago

又出现了,other设置直连也无效,只有设置成proxy了

wclmgcd commented 4 years ago

设置成proxy后出现 time="2019-12-12T11:38:01Z" level=info msg="192.168.10.227 --> 198.18.2.27 match Match using Others[gcp]" time="2019-12-12T11:38:01Z" level=info msg="192.168.10.227 --> 198.18.2.27 match Match using Others[gcp]" time="2019-12-12T11:38:01Z" level=info msg="192.168.10.227 --> d.skk.moe match Match using Others[gcp]" time="2019-12-12T11:38:02Z" level=info msg="192.168.10.227 --> 198.18.2.27 match Match using Others[gcp]" time="2019-12-12T11:38:02Z" level=info msg="192.168.10.227 --> 198.18.2.27 match Match using Others[gcp]" time="2019-12-12T11:38:02Z" level=info msg="192.168.10.227 --> 198.18.2.27 match Match using Others[gcp]" ,但这种日志出现不像原来的多,占用也正常

vernesong commented 4 years ago

策略组指定的模式是select,所以只有你手动在控制面板选择了才会进行代理或者直连,内核重启时会默认加载第一个。 广告过滤我没用,无法保证兼容。你可以去wiki查看关于fakeip高级设置的黑名单功能自己摸索。

wclmgcd commented 4 years ago

我详细测试了一下,设置成直连时,如果重新启动路由器,不会出现占用高,更改配置后,点应用配置马上就会出现,而先关闭OpenClash,在启动OpenClash,过大概1分钟左右出现,当占用高的时候,重启防火墙,cpu占用一下就下来了,怀疑是不是应用/关闭OpenClash时,OpenClash的防火墙规则链没有删除干净,或者用fakeip时,重启要新建IP映射,但原来的没有删除干净,

Septrum101 commented 4 years ago

应该是iptables output的锅。没做来源处理。路由器本身的访问继续redir了,导致死循环。可以考虑试用redir-host模式看下能不能正常。