同一个客户端里塞太多规则,时间一长就会互相冲突:上班要连公司内网,回家要连家里 NAS,出差又要连另一套节点。改来改去,最后自己都记不清当前是哪个配置。
多配置文件就是为了解决这个——不同场景各一套,用完切回去,互不干扰。
先分清楚:什么该隔离,什么该共享
| 配置项 | 该隔离吗 | 原因 |
|---|---|---|
| 节点/服务器 | 是 | 不同场景用不同线路 |
| 分流规则 | 是 | 公司内网和家庭 NAS 网段不同 |
| DNS | 看情况 | 公司可能有内网 DNS |
| 本地端口 | 否 | 统一更好记,除非冲突 |
| 开机自启 | 看情况 | 只对常用配置开启 |
三种组织方式
一、按场景分文件
建三个配置文件:home.yaml、work.yaml、travel.yaml。每个文件只写这个场景需要的规则,公共部分用引用。
优点是清晰;缺点是公共规则改了要改三处。
二、按基础+覆盖
一个 base.yaml 放通用规则(局域网直连、常用国内站点),三个场景文件只写差异部分。
优点是不重复;缺点是要客户端支持配置继承,不是所有工具都支持。
三、单文件多分组
所有规则写在一个文件里,用分组标记隔开。这种方式适合规则少的情况,多了会乱。
切换时最容易踩的坑
切换配置后,旧的连接不会自动断开。表现是:明明切到了新配置,某些网站还是走的老线路。
原因:已经建立的 TCP 连接还挂在旧规则上,新配置只影响新连接。
处理办法:
- 切换后手动断开再连接一次
- 或重启客户端(比断开更彻底)
- 浏览器缓存 DNS 时,还要清一下 DNS 缓存
怎么验证切换生效了
# 看出口 IP
curl -s https://api.ipify.org
# 看某个域名走哪条路
curl -s -o /dev/null -w "%{remote_ip}\n" https://example.com
切换前后各跑一次,出口 IP 和 remote_ip 都应该变。只有其中一个变,说明部分流量还走老配置。
一个实用建议
不要在配置文件里写死节点 IP。ISP 和 CDN 经常调整,写死之后某天突然全部超时,排查起来很费劲。
用域名 + 订阅更新,让配置自己跟上变化。多花十秒,省掉一次深夜排障。
💡 备份很重要:多配置文件的价值在于"随时切回去"。切换前把当前配置导出备份,改坏了能一键还原。