10.3 Mihomo 配置
Mihomo 是 Clash 系列的衍生版本,已在 FreeBSD 的 Ports 中提供。本节介绍 Mihomo 的安装与配置方法。
安装 Mihomo
使用 pkg 安装:
# pkg install net/mihomo或者使用 Ports 安装:
# cd /usr/ports/net/mihomo/
# make install clean文件结构:
/usr/
├── ports/
│ └── net/
│ └── mihomo/ # Mihomo Ports 目录
├── local/
│ ├── bin/
│ │ └── mihomo # Mihomo 可执行文件
│ └── etc/
│ └── rc.d/
│ └── mihomo # Mihomo RC 服务脚本
└── etc/
└── rc.conf # 系统服务配置文件如果觉得配置较为麻烦,也可以在 Linux 兼容层中使用,FreeBSD 的网络同样可以受其控制,这得益于 FreeBSD 强大的 Linux 二进制兼容能力。
RC 脚本
已向 Ports 维护者发出请求合并(Bug 291295 - net/mihomo: Add rc.conf and some Post-installation),该请求旨在为 Mihomo 添加系统服务管理支持,但目前尚未收到回应。在官方集成完成前,可使用下文提供的自定义 RC 脚本实现服务化管理。
RC 脚本
为了方便管理 Mihomo 服务,可以使用以下脚本。将以下脚本保存为名为 mihomo 的文件,并放置到路径 /usr/local/etc/rc.d/ 下。最后使用 root 账户为该文件赋予可执行权限:chmod +x /usr/local/etc/rc.d/mihomo。
可用参数及选项
RC 脚本提供了多个命令行参数和配置选项,以下是一些常用参数。这些命令会直接将配置写入 /etc/rc.conf,如配置有误,可直接修改对应行,/etc/rc.conf 是 FreeBSD 系统配置的核心文件。
启用 Mihomo 服务项及开机自启,将服务注册到系统启动流程中:
立刻启用 Mihomo,启动服务进程:
立刻停用 Mihomo,终止服务进程:
查看 Mihomo 状态,检查服务运行状态:
在此指定你的订阅链接地址(示例地址仅用于演示,需自行替换为有效链接),订阅链接是获取代理节点配置的标准方式:
用于地理位置判断的 GeoIP 数据,主要用于根据 IP 地址的地理归属进行流量分流或规则匹配,这是实现智能分流的基础数据:
指定其他 Mihomo 参数,用于传递额外的自定义选项:
-m:指定 Mihomo 的 geoip.dat 文件路径,具体说明参见 rc 脚本,该参数启用 GeoIP 数据文件的使用。指定调用 Mihomo 的用户,用于控制服务运行的身份,这是安全实践的重要组成部分:
指定 Mihomo 的数据路径,配置服务运行时数据的存储位置:
相关文件结构:
初始化(创建)Mihomo 的数据目录,准备服务运行环境:
更新订阅。
start前先更新即可使用最新的订阅信息,确保配置文件是最新版本:
更新 regeoip,更新地理位置数据库:
最小 RC 示例
以下是一个最简配置示例,可在理解其含义并按需修改后写入 /etc/rc.conf 文件,这个示例展示了最小化的可用配置:
读者可根据自身需求自行调整配置,通过组合上述参数实现个性化设置。
未竟事项
以下是一些有待探索的问题,读者可自行研究解决方案,这些问题代表了该领域进一步探索的方向:
如何实现“直连”、“代理”、“全局”的分流?这三种模式是代理系统的基础功能模式。
如何实现 TUN 虚拟网卡代理(是否可能)?TUN 模式可以实现更底层的网络流量拦截。
如何根据订阅链接进行测速?测速功能对于选择最优代理节点具有重要意义。
如何指定订阅链接中的代理组中的某个代理?(比如仅使用位于美国的某个代理 A)这涉及代理节点的精细化选择。
Clash for FreeBSD
除了 Mihomo 之外,还有 Clash for FreeBSD 项目可以使用,这为用户提供了另一种代理解决方案。
警告
目前该项目尚不支持某些订阅类型,这是当前的局限性。
遇到此类问题时,程序会输出以下错误信息,这是订阅格式不兼容的典型表现:
如果读者遇到类似问题,建议使用其他解决方案,如上述 Mihomo 方案。
下载项目
首先,克隆 Clash for FreeBSD 仓库到本地,通过 Git 版本控制系统获取项目代码:
启动程序
仓库克隆完成后,可直接运行脚本文件 start.sh 启动程序,这些脚本封装了复杂的启动流程。
进入项目目录:
编辑
.env文件,修改变量CLASH_URL的值(即把你的 Clash 订阅链接放进去),.env文件是环境变量配置的常用方式。
注意
.env文件中的变量CLASH_SECRET为自定义 Clash 的 Secret,当值为空时,脚本将自动生成随机字符串,Secret 用于 Web 管理界面的身份验证。
安装 bash,并将其设置为 root 用户及当前登录用户的 Shell,具体步骤请参见相关文档,这是当前脚本的依赖限制。
运行启动脚本:
加载环境变量并启用系统代理:
列出本地监听的端口中包含 9090 或 789 的套接字,通过 sockstat 工具检查网络端口监听状态,这是 FreeBSD 中查看网络套接字的标准方法:
查看环境中设置的 HTTP 和 HTTPS 代理变量,验证环境变量配置是否正确:
如果以上步骤的输出结果类似,且能够正常访问 https://Google.com,则说明 Clash 程序已成功启动,这是验证代理工作状态的有效方法。
重启程序
如果需要对 Clash 配置进行修改,请修改 conf/config.yaml 文件。然后运行 restart.sh 脚本进行重启,使新配置生效。
注意
重启脚本
restart.sh不会更新订阅信息,仅重启服务进程。
访问 Web 端
程序启动后,可以通过 Web 界面进行管理,这提供了直观的图形化管理方式。访问 http://127.0.0.1:9090/ui 在网页中输入上面输出的 Secret 值即可。
停止程序
如果需要停止 Clash for FreeBSD 服务,请按以下步骤操作,确保服务和系统代理都正确关闭:
进入项目目录:
关闭服务:
随后检查程序端口、进程以及环境变量 http_proxy|https_proxy,若均不存在,则说明服务已正常关闭,这是确保清理工作的完整性检查。
参考资料
wenyinos. clash-for-freebsd: freebsd command-line proxy tool[EB/OL]. [2026-03-25]. https://github.com/wenyinos/clash-for-freebsd. 提供了 FreeBSD 下 Clash 代理的完整部署方案,支持订阅链接管理。
未竟事宜
以下是 Clash for FreeBSD 项目有待改进的地方,这些改进方向有助于提高项目的通用性和易用性:
需要更新以支持所有类型的订阅链接,扩大项目的适用范围。
与 bash 解耦合,支持默认的 sh,使其更符合 FreeBSD 的默认环境。
课后习题
安装并配置 Mihomo,使用自定义 RC 脚本实现系统服务,配置完整的分流规则(直连、代理、全局),验证不同模式下的网络流量走向。
重构 Mihomo RC 脚本,将其与 bash 解耦合并移植到 FreeBSD 默认的 sh 环境,验证功能完整性并对比与原脚本的差异。
修改 Clash for FreeBSD 项目,使其支持多种订阅链接格式,或实现 TUN 虚拟网卡代理功能,验证修改后的系统行为。
最后更新于