博主此前在群晖 NAS 上部署了 OpenWrt 虚拟机,利用其中的 Passwall 搭建旁路由网关。这种方案的愿景很美好:全屋设备只需指向该网关,即可实现无感知的“科学上网”。
然而在长期使用中,我发现虚拟机占用的系统资源相当可观(约占 1/3 内存),且旁路由模式的实际网络体验往往不及各设备独立的代理客户端。于是,我决定卸载 OpenWrt。
考虑到群晖自身仍有刚性的网络代理需求(例如 Docker 镜像拉取、Jellyfin 媒体刮削),我们需要一个资源占用极低、配置灵活的替代方案。Mihomo(原 Clash.Meta)便是目前的不二之选。
构建核心 (Mihomo)
准备配置文件
这是最关键的一步。
获取订阅:去你的机场后台,复制订阅链接。
转换格式:使用在线转换工具(如 ACL4SSR),客户端选择 Clash.Meta 或 Mihomo,如果都没有就选择 Clash 一般也能兼容。
下载文件:生成并下载文件,重命名为
config.yaml。修改必要参数: 用文本编辑器打开
config.yaml,搜索external-controller,确保它是允许任意 IP 连接的:external-controller: '0.0.0.0:9090' # 如果有 secret (密码),请记下来,后面设置面板要用上传文件:在群晖
File Station中,在docker文件夹下新建文件夹mihomo。将准备好的config.yaml拖进去。最终路径应该是/volume1/docker/mihomo/config.yaml。
部署核心容器
推荐使用群晖自带的 Container Manager (DSM 7.2+) 或 Docker 套件
打开 Container Manager -> 项目 -> 新建。
路径:选择刚才建立的
/docker/mihomo文件夹。来源:创建
docker-compose.yml,然后将下方代码完整复制进去:version: '3' services: mihomo: image: ghcr.io/metacubex/mihomo:latest # 使用 GitHub 官方镜像源以方便拉取 container_name: mihomo restart: always network_mode: "host" # 使用 Host 模式,直接接管 NAS 网络 volumes: - ./config.yaml:/root/.config/mihomo/config.yaml environment: - TZ=Asia/Shanghai构建并启动。点击 下一步 -> 完成。等待几秒钟,状态显示为“运行中”即表示核心成功启动。
部署面板 (Metacubexd)
现在 Mihomo 核心已经在后台跑起来了,但它没有像 PC 端那样的原生可视化面板,所以我们还需部署一个面板来进行节点切换和规则管理。
拉取镜像并启动容器
打开 Container Manager。
在 镜像仓库 搜索
metacubexd并下载(通常选择metacubex/metacubexd)。选中下载好的镜像点击 运行。
网络设置:选择 bridge (默认即可,不要选 Host)。
端口设置:本地端口填写
7888(或者其他未被占用的端口)。容器端口填写80(这是镜像写死的,不要动)。最终映射关系为7888->80。保留此条即可,其余的映射可以删除。完成向导并启动容器。
连接面板与调整配置
浏览器访问前端地址:
http://你NAS的局域网IP:7888(例如http://192.168.31.200:7888)添加后端地址:
http://你NAS的局域网IP:9090。如果在config.yaml中设置了密钥,请填写,否则留空。点击添加,看到流量统计页面,说明我们的前后端都运行正常。
点击上方代理标签页,选择节点,然后再设置标签页选择规则模式,配置便告完成。
接管 NAS 网络
现在车(Mihomo)跑起来了,我们要让乘客(群晖系统)上车。
打开群晖 控制面板 -> 网络 -> 常规。
勾选 通过代理服务器连接。
填写:
地址:
127.0.0.1(代表 NAS 本机)端口:
7890(Mihomo 默认混合端口)
点击 应用。
验证方法:打开 Container Manager 套件的“镜像仓库”标签页,尝试搜索 google 或 mysql。如果能秒出结果,说明 NAS 已经成功通过代理连接网络。
特殊故障修复 (Cloudflare Tunnel)
如果你像我一样在 NAS 上运行着 Cloudflared Tunnel,代理接管流量后可能会出现出现 Error 1033 或 No route to host错误。这意味着 Cloudflared 的流量也被代理到节点去了,导致它和 CDN握手失败,所以我们需要添加强制直连的规则。
在 /docker/mihomo/config.yaml 中,找到 rules: 区域,在规则列表最顶部添加:
rules:
- DOMAIN-SUFFIX,argotunnel.com,DIRECT # 必须是英文 DIRECT
- DOMAIN-SUFFIX,cftunnel.com,DIRECT
# ... 其他规则YAML 格式对缩进非常敏感,请确保新规则与下方原有规则对齐。修改保存后,需重启 Mihomo 容器生效。