AI摘要

飞牛系统利用内置OVS将多余物理网口桥接到主网桥,实现虚拟交换机。通过NetworkManager的dispatcher脚本监听网桥up事件,自动执行add-port命令,使配置重启后持久生效。

飞牛系统内置 Open vSwitch(OVS),可以把多余的物理网口直接桥接进主网桥,让它们和主网口共享同一个二层域,相当于多了几个交换机口,不需要额外的硬件。

本文基于单额外网口的环境,将 enp4s0 桥接进 OVS 主网桥,并通过 NetworkManager 的 dispatcher 脚本让配置在重启后自动生效。


确认网口名称和 OVS 状态

先去飞牛的系统设置 → 网络设置里确认网口名称,在主网口上开启 OVS。开启后该网口会出现一个以 -ovs 结尾的新网桥名称。

SSH 登录飞牛,切换到 root,查看当前 OVS 网桥信息:

ovs-vsctl show

输出示例:

84d44291904-...
    Bridge 84d44291904-ovs
        Port eno1
            Interface eno1
        Port 84d44291904-ovs
            Interface 84d44291904-ovs
                type: internal
    ovs_version: "3.1.0"

注意这里的网桥名是飞牛自动生成的 UUID 风格名称(如 84d44291904-ovs),不是 eno1-ovs 这样的可读名称。后续脚本里用到的就是这个名称,以 ovs-vsctl show 的实际输出为准。


临时桥接(重启失效)

如果只是临时测试,直接执行:

ovs-vsctl add-port 84d44291904-ovs enp4s0

立即生效,但飞牛系统重启后配置会消失(截至 0.9.9 版本)。要让它持久生效,需要用下面的脚本方案。


用 dispatcher 脚本让配置开机自动生效

飞牛使用 NetworkManager 管理网络,它支持在网络状态变化时触发脚本,脚本放在 /etc/NetworkManager/dispatcher.d/ 目录下。思路是:监听主网桥进入 up 状态的事件,触发后自动执行 add-port 命令。

进入目录,新建脚本:

cd /etc/NetworkManager/dispatcher.d/
nano 90-portstobridge

脚本内容如下:

#!/bin/bash
# 判断第一个参数是否是目标网桥,第二个参数是否是 up
if [ "$1" = "84d44291904-ovs" ] && [ "$2" = "up" ]; then
    ovs-vsctl add-port 84d44291904-ovs enp4s0
fi

84d44291904-ovs 替换为 ovs-vsctl show 里看到的实际网桥名,enp4s0 替换为需要桥接的网口名。

保存后赋予执行权限:

chmod +x 90-portstobridge

脚本命名为 90-portstobridge90- 开头是为了让它在 01-ifupdown 等系统脚本执行完之后再运行——NetworkManager 按文件名字母顺序调用这个目录里的脚本,数字越大越靠后,可以确保 OVS 网桥完全初始化后再执行端口绑定。

重启 NetworkManager 服务验证是否生效:

systemctl restart NetworkManager

重新连接后再次查看网桥状态:

ovs-vsctl show

enp4s0 出现在网桥端口列表里即表示生效。


取消桥接

不再需要时,手动删除端口:

ovs-vsctl del-port 84d44291904-ovs enp4s0

同时删掉脚本,否则下次重启还会自动重建:

rm /etc/NetworkManager/dispatcher.d/90-portstobridge

最后去飞牛后台把对应网口的 OVS 开关关掉即可。

END

本文标题:飞牛系统用 OVS 实现虚拟网络交换机(重启有效)

本文链接:https://imsuk.cn/archives/292/

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

Last modification:May 23, 2026
请用钱砸我