外观
网桥:给虚拟机和容器用
做完这一篇,NAS 上多了一个 br0:物理网卡成了它的一个端口,NAS 自己的 IP 改由 br0 提供,虚拟机可以接到 br0 上,直接拿到和 NAS 同一个局域网的地址。网桥可以理解成 NAS 里的一台虚拟交换机。
你不一定需要它。 只跑 Docker Compose 应用时不需要:Docker 自己管理 docker0 和 br- 开头的桥,不用在 OMV 里建。网桥主要是给 KVM 插件的虚拟机用的。
建网桥要替换 NAS 正在用的网卡配置
- 影响范围:NAS 当前使用的网卡会变成网桥的端口,原来的地址、网关、DNS 要写到网桥上。应用瞬间 Web、SSH、SMB 连接会中断;填错就失联。所有绑定在旧网卡名上的设置(例如某个插件里选了
enp3s0)都要改成br0。 - 前置条件:有本机控制台;记下网卡现有的全部设置;在同一批待应用的变更里完成「删除旧配置、创建网桥」,中途不要点 应用。
- 回退:点 应用 之前,用黄色提示条上的 撤销,网卡配置恢复,网桥消失;已应用并失联,用控制台的
omv-firstaid重置网卡(它会删掉网桥,把地址直接配回网卡),见改坏网络后怎么救。
虚拟机的几种上网方式
下表来自 omv-extras wiki 的 KVM 插件页(OMV 7 版本;OMV 8 版本的页面目前只有占位说明)。OMV 8 的 KVM 插件源码里同样有这几种网络的入口(添加网络、添加 macvtap 网络、添加桥接网络):
| 方式 | 虚拟机能访问 NAS 本机 | 虚拟机有局域网地址 |
|---|---|---|
| KVM 默认网络 | 能 | 不能,在独立子网里 |
| macvtap | 不能 | 能 |
OMV 网桥 br0 | 能 | 能 |
| 单独一块物理网卡专给虚拟机 | 能 | 能 |
macvtap 在插件里就能建,不用动 OMV 的网络,代价是虚拟机和 NAS 本机互相访问不了。想要两者都满足,就用网桥。
容器想直接拥有局域网地址,可以用 Docker 的 macvlan 网络,不需要 OMV 网桥。注意宿主机默认访问不到自己的 macvlan 容器,这是内核的限制,详见 Docker 文档。
表单字段
网络 → 接口 → 创建 → 桥接(Network → Interfaces → Create → Bridge):
| 字段 | 默认值 | 说明 |
|---|---|---|
| 设备 | 自动命名 | 创建时不显示,系统自动取 br0、br1……;编辑时显示且只读 |
| 接口(Interfaces) | 空 | 作为端口的网卡,可多选。候选里没有 Wi-Fi 和别的桥;已被 Bond、桥接、VLAN 占用,或还有自己的以太网配置的网卡也不会出现 |
| 标签 | 空 | 备注 |
| IPv4、IPv6 | 禁用 | 同以太网口,见网络接口。NAS 的地址要填在这里 |
| 高级设置 | 空 | MAC 地址、DNS 服务器、搜索域名、MTU。没有 WOL,也没有 STP 等桥接参数 |
OMV 生成的 netplan 配置里,成员网卡会被写成不带任何地址(addresses: [],关闭 DHCP),地址由网桥承担。成员可以是以太网口,也可以是 Bond。
创建网桥:在同一批变更里切换
这是 omv-extras wiki 的做法:先删旧配置,再建网桥,最后只应用一次,旧接口的删除和网桥的创建同时生效。顺序一句话:在本机控制台旁操作 → 记下旧配置 → 删除旧网卡配置(先不应用)→ 新建网桥并把这块物理口挂进去 → 把旧网卡上的 IP、网关、DNS 转填到网桥上 → 一次应用 → 连接短暂中断后用原地址重连。中途出错,就用黄色提示条上的撤销;已经应用并失联,用本机控制台的 omv-firstaid 恢复。
- 打开
网络 → 接口,选中 NAS 正在用的网卡那一行,点 编辑,把方式、地址、子网掩码、网关、DNS 服务器、MTU 全部记下或截图,然后点 取消。 - 选中这一行,点 删除,确认框里点 是。黄色提示条会出现。先不要点 应用。
- 点 创建 → 桥接。在 接口 里选刚才那块网卡(因为它的以太网配置已经删除,现在可以选了)。
- 把 IPv4 设置填回去:方式选 静态,地址、子网掩码、网关照第 1 步记下的填;DNS 服务器别漏,否则更新会失败。原来用 DHCP 的,方式选 DHCP。
- 点 保存。
- 点黄色提示条上的 应用,确认框里点 是。连接会中断一小会儿,用原来的地址重新打开 Web 界面。
- 到
网络 → 接口,设备列已经是br0,原来的网卡不再单独出现。
omv-extras wiki 还提到,个别情况下切换后要重启一次 NAS,网络才稳定。这条来自 OMV 7 的页面,没有在 OMV 8 上验证。
DHCP 地址可能会变
网桥在路由器眼里可能是另一个 MAC 地址。做过 DHCP 预留的,应用后要核对路由器里 NAS 的地址是否还是预留的那个。想保持不变,可以在网桥的 MAC 地址(MAC address)里填原来网卡的 MAC,这个字段的作用就是强制接口使用指定 MAC。
让 KVM 用上它
KVM 插件会列出系统里名字以 br 开头的网桥供虚拟机选择,Docker 自己建的 br- 加 12 位十六进制名字的桥会被排除。建好 br0 之后,创建虚拟机时在 网络 一栏把 型号(Model)选为 bridge,再在 桥(Bridge)里选 br0(插件表单里这一栏的默认值就是 br0)。完整步骤见 KVM 插件。
检查结果
网络 → 接口里有br0这一行,地址是你设置的;选中它点 显示详情,状态正常。在 OMV 的 shell(root)里确认:
sh# 在 OMV 的 shell 里执行,只读 ip -br addr # br0 有地址,原来的网卡没有地址 bridge link # 原来的网卡应显示 master br0 和 state forwarding ip route # 默认路由经过 br0在客户端电脑上
ping <NAS 的 IP>,Web 界面和共享都能正常访问。虚拟机启动后能从路由器拿到局域网地址,并且能 ping 通 NAS(用网桥时应该通)。
常见问题
创建网桥时「接口」下拉框里没有网卡。 这块网卡还有自己的以太网配置,或者已被别的 Bond、桥接、VLAN 占用。先删掉它的以太网配置(先别应用)。
应用后失联。 多半是 IP、掩码、网关填错,或者漏了 DNS。到控制台按改坏网络后怎么救处理。
虚拟机拿不到地址。 检查路由器的 DHCP 是否有地址可分,交换机是否限制了单个端口的 MAC 数量(端口安全)。Wi-Fi 网卡不能加入网桥,用 Wi-Fi 连接的 NAS 不能给虚拟机用桥接。
NAS 和虚拟机互相访问不了。 这是 macvtap 的特性,改用网桥。
想删掉网桥。 和 Bond 一样:删除网桥(先别应用),给网卡新建以太网配置,一起应用;失败可以用 撤销。这个流程按配置数据库的行为推出,没有在 OMV 8 上实测。
已经有 WireGuard 等服务绑定在旧网卡上。 服务里写死了网卡名的,网桥建好后要改成 br0(omv-extras wiki 对 WireGuard 插件有同样的提醒),见 WireGuard。