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

259 天前
 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

脚本功能:

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

另外一个建议是 shell 脚本可以 trap 一下 SIGTERM ,这样 docker stop 的时候就可以自动执行清理工作。
Navee
256 天前
宿主机网卡不需要开混杂模式吗
8675bc86
256 天前
感觉简单的问题复杂化,clash 哪需要 docker 跑。
bjzhou1990
255 天前
更新改用 TUN 模式,DNS 默认开启 fake ip, 不再依赖 iptables, 顺便写了个不使用 docker 的一键部署脚本
BaseException
238 天前
有技术有实践,感谢楼主的项目,回去试试看。我最近使用 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