V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
guoguobaba
V2EX  ›  OpenWrt

分享我的一个 openclash 终极优化方案

  •  
  •   guoguobaba · 15 小时 5 分钟前 · 783 次点击

    首先说我的需求,第一当然是科学上网,第二是我的群晖需要用 ipv6 暴露在外网。所以我的网络需要开启 ipv6 ,包括 dns 也需要允许 ipv6.下面是我的优化方案:

    1 、基本的上网配置是 dnsmasq+openclash+smartdns, openclash 劫持 dnsmasq 的 53 端口,然后将 dns 转发到 smartdns 的 5335 端口,smartdns 国内域名向我的上游 dns 解析,国外域名通过 doh/dot 解析。类似于这样的配置:

    domain-set -name chinalist -file /etc/smartdns/domain-set/accelerated-domains.china.domain.smartdns.conf
    domain-rules /domain-set:chinalist/  -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443 -address #4,#6 -dualstack-ip-selection yes -response-mode first-ping
    domain-rules /./  -nameserver gw -speed-check-mode none -address -6 dualstack-ip-selection no -response-mode fastest-response
    

    这里,国内域名可以解析 ipv4 和 ipv6 地址,国外域名就只解析 ipv4 地址。

    2 、openclash 使用 redir-host 模式,之所以不使用 fakeip ,是因为我来需要 ssh 连接外网,用 fakeip 会出各种奇怪的问题。然后选择“自定义上游 DNS 服务器”,所有上游服务器都设置成 smartdns 的 5335 端口。这样把 dns 交给 smartdns 分流,smartdns 如果使用 doh 查询 1.1.1.1 或者 google 的 dns ,又会转到 openclash 翻墙。 之所以不把 smartdns 放最前面,是因为 openclash 通过域名去分流更精准一些。

    3 、openclash 不做 ipv6 的代理,因为上面说了,国外域名只会解析 ipv4 地址。

    4 、在 openclash 开发者选项增加 iptables 规则,这样当国内域名解析 ipv4 后,直接就通过网络出去了,而不走 clash 代理,在插件设置-->开发者选项里增加两行脚本:

    
    LOG_OUT "Tip: Start Add Custom Firewall Rules..."
    iptables -t nat -I openclash -m set --match-set china_ip_route dst -j RETURN
    iptables -t mangle -I openclash_output -m set --match-set china_ip_route dst -j RETURN
    

    利用 openclash 自己同步的 ipset 规则来讲解析到的国内 ip 地址直接跳转而不走 clash 代理通道。第一条是路由规则,第二条是本机规则。

    5 、使用 github cmliu 大神的 edgetunnel 项目,在 cf 上弄了个代理,然后又用 CF-Workers-SUB 项目,将我买的收费机场和 cf 的免费机场做了一个聚合。最后 fork cmliu 大神的 ACL4SSR 项目,定制了我的分流规则,使 openclash 自动订阅我的 https://fgfwsub.xxxx.site/<uuid>即可自动获取机场订阅信息。当我的机场发生改变的时候,只需要去这个网址上去修改机场聚合地址就可以了 。当我需要设置新的分流规则,只需要在我 fork 的 ACL4SSR 项目里,修改对应的分流规则即可。具体可以参照油罐该大神的视频。

    春节以来,零零碎碎折腾了好久,总算折腾得好用了。

    9 条回复    2025-03-06 10:30:19 +08:00
    feelinglucky
        1
    feelinglucky  
       12 小时 12 分钟前
    sing-box + adguard 足够了,国内直连国外走代理,没有那么复杂
    235777178
        2
    235777178  
       11 小时 32 分钟前
    越复杂延迟时间越长。最后发现折腾的意义就是折腾
    badgv
        3
    badgv  
       11 小时 22 分钟前 via Android
    很好奇 fakeip 的 ssh 能有啥奇怪问题?一直用 fake 模式,啥问题都没有,adguard(可有可无)+psw2(自建 sbox)+fakedns ,带 ipv6 环境,基于域名(geodata+自定义维护域名)分流,国内正常解析双栈域名,科学域名直接 fake ,用好久了,啥问题都没有
    SakuraYuki
        4
    SakuraYuki  
       2 小时 35 分钟前
    openclash 以前折腾半天,最后发现不如换成 singbox 或者 surge ,简单省事
    guoguobaba
        5
    guoguobaba  
    OP
       1 小时 34 分钟前
    @SakuraYuki 看需求的,比如我用 singbox ,之前发过,内网的 ipv6 不能被访问,导致 pt 没流量。而且很多网站需要动态调整规则,手动选择机场,比如 openai 就不能用 hk 的机场,不能用 cf 的机场等等,缺省的方案访问馒头会被当成 box 。综合来看,这套方案能满足我这些需求。
    xpn282
        6
    xpn282  
       1 小时 26 分钟前 via iPhone
    搞那么复杂了。
    我也是 IPv6 环境,主路由上 OpenClash 也是 redir-host 模式,OpenClash 设置里:接管 IPv6 流量,并且允许 IPv6 类型 DNS 解析,也就是说 IPv6 全开了。只要做好 geoip:cn 规则,v4 和 v6 流量由 OpenClash 处理(直连或代理),我的节点有 IPv6 的,也有 IPv4 的,混合随机使用,也不需要担心什么国外只返回 v4 不返回 v6 之类的东西,一切正常,没发现过任何因为使用 IPv6 产生的问题。

    还有就是 OpenClash 的 dns 服务本身就可以做分流的,不需要借助其他 dns 工具了。配置 nameserver-policy 和 nameserver 即可实现分流,并且现在可以把国外 dns 代理解析,这几天国外 dns 不是被墙了吗,不好使了,把国外 dns 代理即可解决
    guoguobaba
        7
    guoguobaba  
    OP
       1 小时 20 分钟前
    @xpn282
    为啥我连 v4 先 iptables 转 china ip 呢
    缺省都可以用,不就是优化吗
    xpn282
        8
    xpn282  
       1 小时 4 分钟前 via iPhone
    @guoguobaba #7 不懂这些,太高深的优化我也不懂。
    我现在就是 OpenClash 里的 IPv6 全开。
    1 ,能通过各种 IPv6 网址测试。
    2 ,节点有 v4 节点和 v6 节点,fallback 策略混合使用的,出国没发现任何的问题,也就是说不会因为我的节点是 v4 还是 v6 而产生问题。

    另:如果不想让国内流量走 clash 内核,就把“绕过国内”打开。我一般都不开这个,我有时需要看个别设备访问什么域名。
    guoguobaba
        9
    guoguobaba  
    OP
       55 分钟前
    @xpn282 无他,就是速度问题。另外,免费的 cf 节点时常抽风,这也是我要考虑的问题。我现在大部分流量比如看油管啥的都是走免费的 cf ,少部分走按流量收费的机场。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5560 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 03:25 · PVG 11:25 · LAX 19:25 · JFK 22:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.