最近弱电箱圈子里多了一种新玩法:一台小主机跑 PVE,影音、密码库、下载器、智能家居每个服务塞进一个独立 LXC,路由单独交给 RouterOS 虚拟机,“网络交给 MikroTik,服务交给 PVE,备份兜底”——10 月 5 日这条小红书方案帖就是当下缩影。 往前翻,B 站从 7 月初到 8 月底,ESXi 装 CHR、PVE 9.2 装 RouterOS 的教程视频排成了一个系列。 9 月 30 日,一个做 keelOS(基于 FreeBSD/bhyve 的轻量虚拟化系统)的开发团队在知乎发了篇长测:把 9 个主流路由系统往自己平台上一台台塞,8 个直接能用,顺手把"RouterOS 装虚拟机"这件事里几个从来没被讲透的坑拆了个干净。小红书哔哩哔哩知乎
要不要拆虚拟机、CHR 许可怎么收费、单点故障这笔账,前人都算过了。这篇只服务一类人:已经决定把 RouterOS 塞进虚拟机、这周末就要动手的人。上手之前,四个检查点按顺序过。

检查点一:镜像只认传统 BIOS——"bhyve 跑不了 ROS"是个误会
keelOS 团队一开始也信了"RouterOS 官方 CHR 文档没把 bhyve 列为支持平台"这个说法:UEFI 启动,固件找不到引导项,转头去网络启动,死循环。拆开镜像才发现原因朴素得离谱——这个镜像只带 MBR 引导代码,根本没有 EFI 分区。知乎
这解释了一个圈内怪现象:同样的镜像,PVE 上从来没人抱怨过起不来(KVM 默认就是 SeaBIOS 传统引导),换成 bhyve、或者在 ESXi 这类默认给你 EFI/OVMF 选项的平台上就"玄学"。keelOS 把 SeaBIOS 补进 bhyve 固件列表后,原装镜像不用任何修改直接启动,RouterOS 里报告的主板名是"CHR Bochs Bochs"。OPNsense 的 nano 镜像是同一情况。
动手时怎么做:建虚拟机时把 BIOS 类型选成传统/SeaBIOS,别用默认 EFI。如果症状是"固件找不到启动项、转去 PXE 网络启动",九成是这个原因,先别折腾驱动。
检查点二:网卡驱动——千兆够用,万兆看清单
虚拟网卡走 virtio-net 要经过主机虚拟交换机,keelOS 团队的结论是千兆够用、万兆吃力。要跑线速就得上直通:整口直通,或者 SR-IOV 把一个物理口切成多个 VF 交给虚拟机。
和买硬件直接相关的信息在这:keelOS 没有猜,驱动清单是从 RouterOS 7.24.4 镜像里直接列出来的——家里常见的 Intel I226、Realtek 8125 这类 2.5G 网卡,整口直通给 CHR 是有驱动的;Intel X710 的 VF 在 8 个受测系统里实测跑通了 5 个。 要留意证据边界:这是开发方自测,逐系统支持名单和吞吐数字都没公开,测吞吐还卡在"等万兆交换机就位"。知乎
动手时怎么做:打算万兆直通或者买新网卡的人,先对照 RouterOS 官方支持列表下单,而不是装好了再找驱动。
检查点三:第一个网口不是"同一个第一个网口"
各家路由系统对第一个口的约定不一样:OpenWrt、OPNsense 第一口是 LAN(带 DHCP),pfSense、iStoreOS 第一口是 WAN。接反了的后果,keelOS 用一次真实事故演示了:测 iStoreOS 时,办公室网络异常持续了 19 分钟——guest 里除第一口外全被默认桥进 LAN,而他们插的两个口恰好一条走主机虚拟交换机、一条走 VF 通向同一个办公网交换机,等于把两条路短接成了环,主机日志里同一个 MAC 在两个口之间每分钟跳 4 次。知乎
动手时怎么做:路由器虚拟机第一次通电,只接 WAN 口和管理口;登进系统核对默认配置里的桥都包含了哪些端口,再逐口放开。顺带认清 RouterOS 里另一个"批量改客户端"的入口——IP→DHCP Server→Options:知乎那篇"切换旁路由网关"的教程就是在这里加了一条 Code 3(sec-gw,网关)指向旁路由,用 DHCP 给指定设备下发网关,而不是逐台终端改静态 IP。端口、桥、option,这三样都在 WinBox 的同一套树里,第一次开控制台就把它们过一遍。知乎

检查点四:MAC 防伪造是路由器虚拟机的保命绳
那次办公网事故没有升级成广播风暴,纯属运气:X710 的 VF 自带 MAC 防伪,guest 借 VF 发不出别人的源 MAC,环只通了一个方向;换成正面撞上的 virtio-net,什么限制都没有。
成熟平台早就把这根绳拉上了:Hyper-V 默认不许虚拟网卡冒用别人的 MAC,VMware 虚拟交换机拒绝伪造源 MAC,Proxmox 防火墙有 MAC 过滤。keelOS 这次把同样的逻辑补进了 bhyve——每块虚拟网卡只放行源 MAC 是自己的帧,其余丢弃并记日志;确需虚拟 MAC 的场景(VRRP/CARP)可按网卡关闭过滤,且关掉过滤的网卡若与另一个口通向同一网络,系统会主动提醒。知乎
动手时怎么做:PVE 用户去防火墙选项里确认 MAC 过滤是开的;给路由器虚拟机加第二块直通网卡前,先想清楚这两个口会不会通到同一层网络。
这四道检查之外:谁真的适合让 ROS 住进虚拟机
适合的人:homelab 服务党——每台 LXC 一个服务、PVE 配置好自动备份、容器崩了几分钟恢复的那批人(那篇小红书方案帖里就是密码库、Jellyfin、网盘、下载器各占一个容器),路由器只是这盘棋里的一个 guest,省一台设备、一份电费。

再想一想的人:手里已经有 RB5009、4011 这类成品机的,没必要为了"少一台设备"把主路由虚拟化,单点故障那笔账另有其人算过;

把爱快当备胎的,先别指望虚拟化——keelOS 9 个系统里唯一没跑通的就是爱快,系统能启动但安装界面收不到键盘,开发方自查了按键中断和扫描码都正常,暂时放下了。
继续观察什么
这份 9 月末的实测目前还是孤本:没有吞吐数据、没有第三方复现,keelOS 承诺的 virtio/VF/整口直通万兆对比还没测。但四个检查点里,第一个已经够便宜——改一个 BIOS 选项的事。这周末准备动手的人,先把启动模式改成 SeaBIOS,再谈别的。