RouterOS 安装 Mihomo 教程

在 RouterOS 系统上通过 Container 容器部署 Mihomo,实现全局透明代理。

1

安装 Container 组件

  • - 下载组件包 container.npk
  • - 官方下载链接:https://mikrotik.com/download
  • - 通过 Winbox 上传 container.npk 文件
  • - 重启 RouterOS
  • - 确认安装:/container/print
  • Container 安装确认
  • - 启用 Container:/system/device-mode/update container=yes
  • - 注意:需要断电重启或按 RESET 按钮才能生效
2

创建 veth 网络

  • - 创建虚拟网络接口:/interface veth add name=veth1 address=192.168.88.2/24 gateway=192.168.88.1
  • 创建 veth 网络
  • - veth1 将作为容器的网络接口
  • - IP 地址 192.168.88.2 为容器分配的地址
  • - 网关 192.168.88.1 为 RouterOS 的地址
3

创建 docker bridge

  • - 如果已有 LAN 桥接口可跳过此步骤
  • - 创建桥接口:/interface bridge add name=LAN
  • 创建 docker bridge
  • - LAN 桥用于连接容器和物理网络
4

桥接 veth

  • - 将 veth1 添加到 LAN 桥:/interface bridge port add bridge=LAN interface=veth1
  • 桥接 veth
  • - 这样容器就可以与局域网通信
5

添加路由表

  • - 添加 Fake-IP 路由:/ip route add dst-address=198.18.0.0/16 gateway=192.168.88.2
  • 添加路由表
  • - 198.18.0.0/16 是 Mihomo Fake-IP 使用的地址段
  • - 所有访问该段的流量将转发到容器
6

修改路由器 DNS

  • - 设置 DNS 服务器:/ip dns set allow-remote-requests=yes servers=192.168.88.2
  • 修改路由器 DNS
  • - 将 DNS 请求转发到 Mihomo 容器
  • - Mihomo 将处理 DNS 查询并进行分流
7

添加 NAT 防火墙

  • - 添加 NAT 规则:/ip firewall nat add chain=srcnat src-address=192.168.88.0/24 dst-address=198.18.0.0/16 action=accept
  • 添加 NAT 防火墙
  • - 允许局域网设备访问 Fake-IP 地址段
  • - 确保代理流量正常通过
8

修改 DHCP DNS 分配(可选)

  • - 修改 DHCP 分配的 DNS:/ip dhcp-server network set 0 dns-server=192.168.88.1,192.168.88.2
  • 修改 DHCP DNS
  • - 可以设置为路由器网关或 Mihomo IP
  • - 客户端将自动使用指定的 DNS 服务器
9

准备 Container 存储

  • - 建议使用 SSD 或 USB3.0 U盘,不要长期写入 NAND
  • - U盘模式创建目录:
  • - /disk format usb1 file-system=ext4
  • - /file add name=usb1/docker type=directory
  • - /file add name=usb1/docker/mihomo type=directory
  • - /file add name=usb1/docker/mihomo/root type=directory
  • - /file add name=usb1/docker/mihomo/config type=directory
  • - SSD硬盘模式创建目录:
  • - /file add name=docker type=directory
  • - /file add name=docker/mihomo type=directory
  • - /file add name=docker/mihomo/root type=directory
  • - /file add name=docker/mihomo/config type=directory
10

上传 Mihomo 镜像

  • - 通过 Winbox 拖拽文件到 Files 目录
  • - 上传镜像文件:mihomo-routeros-arm64.tar
  • 上传镜像文件
  • - 上传配置文件到 config 目录:config.yaml, ui, geoip.dat, geoip.metadb
  • 上传配置文件
  • - 确保文件上传完整无损坏
11

导入 Mihomo 镜像

  • - 必须使用命令创建容器,或使用新版 Winbox 操作
  • - 7.20.x 以上版本(U盘):/container/add file=usb1/docker/mihomo/mihomo-routeros-arm64.tar name=mihomo root-dir=usb1/docker/mihomo/root interface=veth1 mount=usb1/docker/mihomo/config:/root/.config/mihomo:rw start-on-boot=yes
  • - 7.20.x 以上版本(SSD):/container/add file=docker/mihomo/mihomo-routeros-arm64.tar name=mihomo root-dir=docker/mihomo/root interface=veth1 mount=docker/mihomo/config:/root/.config/mihomo:rw start-on-boot=yes
  • - 7.20 以前老版本 - 先创建挂载:/container/mounts/add name=mihomo-config src=docker/mihomo/config dst=/root/.config/mihomo
  • - 7.20 以前老版本 - 再添加容器:/container/add file=docker/mihomo/mihomo-routeros-amd64.tar name=mihomo root-dir=docker/mihomo/root interface=veth1 mounts=mihomo-config start-on-boot=yes
  • 导入镜像
  • - 容器将自动挂载配置目录
12

查看容器状态

  • - 查看容器列表:/container/print
  • - 正常状态应显示:STATUS: stopped
  • - 或:STATUS: running
  • - 如果显示错误:download/extract error
  • - 出现错误需要检查镜像文件和存储路径
13

启动 Mihomo 容器

  • - 启动容器:/container/start 0
  • - 0 是容器编号,根据实际情况调整
  • - 再次查看状态:/container/print
  • 容器运行状态
  • - 确认状态变为 running
14

进入容器测试

  • - 进入容器 Shell:/container/shell 0
  • - 查看 Mihomo 版本:mihomo -v
  • - 确认 Mihomo 正常运行
  • - 输入 exit 退出容器
15

登录 UI 控制面板

  • - 浏览器访问:http://192.168.88.2:9090/ui
  • - 默认密码:frxxz
  • UI 登录界面
  • - 登录后可以查看连接状态、切换节点、查看日志
  • UI 控制面板
  • 节点选择
  • - 建议修改默认密码以提高安全性
16

RouterOS 透明代理

  • - 局域网设备将自动通过 Mihomo 代理上网
  • - 支持功能:HTTP代理 ✅、SOCKS5 ✅、API ✅、规则分流 ✅、Fake-IP ✅、TUN ✅
  • - TProxy 支持不完整,建议使用 Fake-IP 模式
17

GEOIP 配置说明

  • - DAT 模式:geodata-mode: true
  • - DAT 模式需要 geoip.dat 和 geosite.dat 文件
  • - MMDB 模式:geodata-mode: false
  • - MMDB 模式需要 Country.mmdb 或 geoip.metadb 文件
  • - 根据配置文件选择对应的 GEOIP 文件上传
18

常见问题

  • - 内存不足:RouterOS Container 需要较多内存,建议设备至少 256MB RAM
  • - 架构匹配:ARM 设备用 arm64v8 或 arm32v7 标签,x86 用 amd64
  • - hEX Refresh (EN7562CT):仅支持 arm32v5,镜像选择有限
  • - 权限问题:确保挂载目录有正确权限
  • - 容器无法启动:检查存储空间是否充足,镜像文件是否完整