实战分享:用Clash搭建私有分流网关的完整指南
大家好,我是33blog的技术博主。今天想和大家分享一个我最近折腾成功的项目——用Clash搭建私有分流网关。这个方案特别适合需要精细化控制网络流量的开发者,我自己在公司内网和家庭网络都部署过,效果相当不错。
为什么选择Clash?
最开始我用的是传统的SS/SSR方案,但随着设备增多和规则复杂化,维护起来特别头疼。后来尝试了Clash,发现它的规则系统简直是为分流场景量身定制的。记得有一次我需要临时让测试服务器走特定出口,用Clash只需要在配置里加一行规则就搞定了,这在以前要改一堆iptables规则。
基础环境准备
我的部署环境是一台Ubuntu 20.04的云服务器(1核2G配置就够用),如果你用树莓派之类的设备也完全没问题。首先确保安装了Docker:
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker
这里有个小坑:某些VPS厂商的Ubuntu镜像默认的docker版本比较老,建议用官方脚本安装最新版,不然可能会遇到奇怪的兼容性问题。
配置文件的那些坑
Clash的配置文件是YAML格式的,我第一次写的时候因为缩进问题折腾了好久。这里分享我的基础模板(敏感信息已替换):
# clash-config.yaml
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
proxies:
- name: "我的代理节点"
type: ss
server: server.example.com
port: 443
cipher: aes-256-gcm
password: "your_password"
proxy-groups:
- name: "自动选择"
type: url-test
proxies: ["我的代理节点"]
url: "http://www.gstatic.com/generate_204"
interval: 300
rules:
- DOMAIN-SUFFIX,google.com,自动选择
- DOMAIN-SUFFIX,github.com,自动选择
- GEOIP,CN,DIRECT
- MATCH,自动选择
特别注意:YAML对缩进极其敏感,建议用专业的编辑器(比如VSCode)来编辑,避免用Tab键。
Docker化部署实战
我最推荐用Docker部署,管理起来特别方便。这是我最常用的启动命令:
docker run -d --name=clash
-v $(pwd)/clash-config.yaml:/root/.config/clash/config.yaml
-p 7890:7890
-p 7891:7891
--restart=always
dreamacro/clash
这里有个实用技巧:如果修改了配置文件,不需要重启容器,执行docker exec clash wget -O - http://localhost:9090/reload
就能热加载配置。
客户端配置技巧
在客户端使用方面,我强烈推荐搭配SwitchyOmega插件(Chrome/Firefox都可用)。这样可以根据需要灵活切换代理模式。我的常用配置是:
- 开发时:所有*.test.com域名走直连
- 查资料时:自动匹配规则
- 视频会议时:全局代理保证稳定性
最近发现Clash for Windows的TUN模式特别香,可以实现真正的全局代理,连UDP流量都能处理,打游戏的时候特别有用。
监控与维护
我习惯用Prometheus+Grafana监控Clash的运行状态。Clash内置了metrics接口(默认在9090端口),配置起来很简单:
# prometheus.yml 片段
scrape_configs:
- job_name: 'clash'
static_configs:
- targets: ['clash-server:9090']
通过监控我发现,高峰时段某些节点延迟会明显上升,后来就加了自动切换策略,现在稳定多了。
总结与建议
经过几个月的实际使用,Clash作为私有分流网关确实很给力。给新手的几点建议:
- 先从简单配置开始,逐步增加规则复杂度
- 善用
log-level: debug
排查问题 - 定期备份配置文件(我吃过亏…)
- 规则不要写得太绝对,留个
MATCH
兜底
如果大家遇到什么问题,欢迎在评论区交流。下次我可能会分享如何用Clash实现更复杂的多租户分流方案,有兴趣的话可以关注我的更新!
博主写得很详细啊,正准备在公司内网搭一个类似的,正好参考了 👍
我之前也是被yaml缩进坑过,建议新手直接用vscode的yaml插件,有自动格式化
想问下这个方案在树莓派4B上跑得动吗?性能大概损耗多少?🤔
太感谢了!正好要把家里几台设备统一管理,这篇简直就是及时雨
docker那段太有用了,之前一直手动启动,结果服务器重启就gg
其实wireguard隧道方案也不错,不过Clash的规则系统确实灵活
期待博主的多租户方案!公司正好需要为不同部门配置不同路由策略
看到yaml缩进就头疼…为啥不用json配置啊