SukkaW / Koolshare-Clash

:cat: Run Clash Tunnel on Koolshare OpenWrt
https://koolclash.js.org
GNU General Public License v3.0
1.33k stars 241 forks source link

能否增加类似koolss的内置默认白名单规则 #7

Closed cnzgray closed 5 years ago

cnzgray commented 5 years ago

首先感谢作者做了一个这么棒的插件!

我看了TODO List里面有访问控制的内容,但是可能各种因素不一定那么快就会支持。但是在最近一段时间的使用过程中发现一个问题,也就是作者在文档中的已知问题:

iptables 操作也有可能存在问题,因此你在使用 Clash 时有可能被锁在路由器外面。

我分析了下出现该问题的主要原因是:对路由网段的请求也被一起转发到clash中,当clash出现故障的时候就会导致“被拦”。

其实对于一些特殊网段(比如192.168.0.0/16)可以不必将请求转发到clash中,直接使用iptables直接通过白名单跳过clash处理,即可解决该问题。

即对于特殊网段,不将请求转发到clash中。 因此在不增加访问控制的前提下,可以优先使用一个内置的默认白名单解决该问题。

huxim commented 5 years ago

我建议增加支持gfwlist,国内白名单不太适合在路由器上运行,毕竟局域网内有p2p下载还有ddns什么都会被影响

SukkaW commented 5 years ago

@huxim Clash 本身就支持根据域名规则和 GeoIP 实现分流,只需要自己编写配置文件,不需要再专门引入 gfwlist。

huxim commented 5 years ago

自己编写肯定没有订阅一个gfwlist来得方便,而且我说的效果是直接在dns请求阶段就只对gfwlist中的域名使用clash解析,其他所有域名都还是使用dnsmsq

SukkaW commented 5 years ago

@huxim KoolClash 本来就是 Clash 的一个客户端,Clash 已经支持分流了就没必要去重复造轮子。你如果有这样的需求建议去用 Koolss。

huxim commented 5 years ago

我现在用的就是koolss,但是我这不是提建议嘛,路由器上只能最小化翻墙范围,才能避免带来干扰,要考虑平台不同的限制嘛

cnzgray commented 5 years ago

我比较赞同 @SukkaW 的观点,本身clash就是一个客户端,和koolss的差别其实就在于流量在客户端前分流还是客户端中分流。

huxim commented 5 years ago

你们讲的是原理,我讲的是效果,只要能实现gfwlist的订阅分流,怎么都行,但明显把gfwlist推给dnsmasq而clash直接全局代理更方便实现

SukkaW commented 5 years ago

@huxim @cnzgray

Clash 的 DNS 正如我一直在说的(在 Telegram 里我重新说了一遍),面对特殊的污染——被污染到国内 IP 或者保留 IP ( https://github.com/Dreamacro/clash/issues/95 )——是无能为力的。但是如果需要 Clash 解析域名规则(这个规则不仅会用来代理国外网站、还有可能用来拦截广告等),就必须要让 DNS 解析请求“路过” Clash 的 DNS Client,与此同时 Clash 的 DNS 实现了并强制使用自己的分流。

我自己认为应对这种特殊污染的解决方案是让 Clash 引入 Surge 的 force-remote-dns,这样 Clash 配置文件本身就可以充当 gfwlist,不需要额外引入 gfwlist 文件。

KoolClash 现在使用 dnsmasq 是为了简化用户操作、避免一些 DHCP 时会导致的问题,没有别的任何意图;dnsmasq 最终会把所有 DNS 请求转发给 Clash;KoolClash 旧版本直接要求用户停止使用 dnsmasq、让 Clash 直接接管 53 端口。

如果你目前急切地坚持需要 gfwlist 来分流,KoolClash 无能为力;你应该自行重新启动一个运行在非 53 5353 23453 端口的独立 dnsmasq 实例,并设置分流;并让 Clash 的 nameserverfallback 都使用这个实现了分流的独立 dnsmasq 实例。 只有 Clash 执意不修改 DNS 实现、执意不解决 Clash 的污染问题,KoolClash 才会考虑引入基于 dnsmasq 或者 overtrue 的分流方案。