分享一个自己写的 Clash 网关 docker

2023-08-23 11:26:34 +08:00
 bjzhou1990

Github 链接: https://github.com/bjzhou/clash_meta_gateway

以下所有功能都由 Clash Meta 内核实现:

实际上 docker 里只做了一件事,就是启动 clash meta

这里贴几段我觉得有意思的配置

rules:
  - GEOIP,private,DIRECT  
  - GEOSITE,private,DIRECT
  - GEOSITE,apple,DIRECT
  - GEOSITE,microsoft@cn,DIRECT
  - GEOSITE,category-games@cn,DIRECT

  - GEOSITE,CN,DIRECT
  - GEOIP,CN,DIRECT

这里创建了一个 direct.yaml 文件

然后在主配置文件里引入

rule-providers:
  direct:
    type: file
    behavior: classical
    path: "./direct.yaml"

配置 DNS ,默认走海外 DNS ,匹配 direct 规则的走国内 DNS

dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: false
  enhanced-mode: redir-host 
  prefer-h3: true
  nameserver:
   - https://dns.cloudflare.com/dns-query
   - tls://8.8.8.8:853
   - tls://1.1.1.1:853
  nameserver-policy:
    "rule-set:direct":
      - https://dns.alidns.com/dns-query
      - 119.29.29.29
      - 223.5.5.5
  default-nameserver:
   - 223.5.5.5

主配置文件规则匹配

rules:
  - RULE-SET,direct,DIRECT
  - GEOSITE,netflix,NETFLIX
  - GEOSITE,openai,AI 服务
  - GEOSITE,anthropic,AI 服务
  - NOT,((DST-PORT,80/8080/443/8443)),非常用端口

  - MATCH,默认

这样做保证了 DNS 分流和规则分流的统一

另外这配置里有个非常用端口,部分机场或者中转流量会导致非常用端口无法连接,可以在这里选择直连或自建机场

另外再分享一个给自己用的 VPS 一键部署脚本: https://github.com/bjzhou/xray-server-setup

脚本功能:

4454 次点击
所在节点    宽带症候群
22 条回复
bao3
2023-08-23 12:16:06 +08:00
牛啊,实现了我一直想要的。
emtry
2023-08-23 13:01:26 +08:00
请问国内 dns 可以设置走自建 ADG 吗
bbbb
2023-08-23 13:20:40 +08:00
学习一下
customsshen
2023-08-23 13:28:32 +08:00
docker 启动后再关闭会导致宿主机无法上网,重启可解决
请问是重启宿主机还是 docker 镜像?
bjzhou1990
2023-08-23 13:45:39 +08:00
@customsshen 重启宿主机
bjzhou1990
2023-08-23 13:46:52 +08:00
@emtry 可以在/data/config.yaml 里自己修改
emtry
2023-08-23 23:57:25 +08:00
bug1:网卡默认 eth0 ,不是自动匹配,其他网卡直接起不来
emtry
2023-08-23 23:58:30 +08:00
bug2:订阅地址出现&,替换错误,订阅不了
bjzhou1990
2023-08-24 09:39:26 +08:00
@emtry #8 好的
msn1983aa
2023-08-24 13:09:06 +08:00
还需要楼主打磨一下,bug 少一点了来试试,目前都是用虚拟机跑 openwrt
EvineDeng
2023-08-24 13:48:14 +08:00
你要不用 ADD ,这镜像压缩后体积还能再减小至少 18MiB 。
ylsf
2023-08-24 14:05:14 +08:00
mark ,有空试试
bjzhou1990
2023-08-24 21:57:33 +08:00
@emtry #8 两个问题都更新了,但是未做测试
bjzhou1990
2023-08-24 21:58:42 +08:00
@EvineDeng 用不用 ADD 文件都会拷到镜像里去的,我把 clash 二进制文件和其他需要的文件打成一个压缩包了,体积减少了一点
emtry
2023-08-24 23:06:35 +08:00
eth0 还是没自动换到 ens
mikewang
2023-08-25 00:28:58 +08:00
这种情况使用 Docker 可能会有一些问题:
比如 alpine 的 iptables 其实是 iptables-legacy ,如果主机系统使用的是 iptables-nft ( nftables ),docker 内的 iptables 会打乱主机的网络。

另外一个建议是 shell 脚本可以 trap 一下 SIGTERM ,这样 docker stop 的时候就可以自动执行清理工作。
Navee
2023-08-25 17:19:29 +08:00
宿主机网卡不需要开混杂模式吗
8675bc86
2023-08-25 19:46:25 +08:00
感觉简单的问题复杂化,clash 哪需要 docker 跑。
bjzhou1990
2023-08-26 18:31:40 +08:00
更新改用 TUN 模式,DNS 默认开启 fake ip, 不再依赖 iptables, 顺便写了个不使用 docker 的一键部署脚本
BaseException
2023-09-12 14:49:56 +08:00
有技术有实践,感谢楼主的项目,回去试试看。我最近使用 OpenWRT 中的 Sha.dow.socksR Plus+ 总是遇到 ERR_NAME_NOT_RESOLVED 的问题,有一天晚上过后,第二天早上起来手机断开了 wifi 无法连上 wifi 。登录进路由器发现有网 但是是 ssr plus+导致的 wifi 无法连接,最终把这货关掉了……

OP 可以帮我分析一下吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967592

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX