Fedora-31 认为网络脚本包已弃用(已经可以安装它,但它们警告您迁移到网络管理器)。所以我使用 Network-Manager(当然安装了 ovs 插件)首先在 openvswitch 上创建桥并添加 enp1s0 作为端口
ovs-vsctl add-br bridge0
ovs-vsctl add-port bridge0 enp1s0
然后我运行这些命令
nmcli connection add type ovs-bridge conn.interface-name bridge0 ipv4.method auto
nmcli connection add type ovs-port connection.interface-name port0 master bridge0
nmcli connection add type ovs-interface slave-type ovs-port connection.interface-name enp1s0 master port0
我想要一个带有动态地址的端口(enp1s0)的bridge0。使用经典的 linux 桥接器很容易。重启后..bridge0 上没有 ip!我也尝试这样
dhclient -v bridge0
但进入超时。我试过禁用selinux和防火墙,没办法。 Nmcli 报告此情况
enp1s0 7d27e505-7931-4838-bea1-08c9fbf759ae ethernet enp1s0
virbr0 0fc3c827-9649-4ef6-a96e-31a24228f7d9 bridge virbr0
ovs-bridge-bridge0 12abce0d-488a-444e-99b3-390cbb4edebd ovs-bridge bridge0
ovs-slave-port0 247757ec-76e0-425c-8484-311b48e4de01 ovs-port port0
除了 ovs-slave-port0 连接之外,所有内容都是绿色的
我的配置有什么问题?
答案1
当您使用 NetworkManager 时,您不需要使用ovs-vsctl
.它甚至可能阻止 NM 实际接管外部创建的 OVS 设备(因此不仅没有必要,而且有害)。
此外,您不会直接dhclient
在 NetworkManager 管理的设备上运行。我的意思是,对于一些临时测试,您可以这样做,但总的来说,这会干扰 NetworkManager。
此外,正如 中所解释的man nm-openswitch
,NetworkManager 和 NetworkManager 之间也存在差异ovs-vsctl
。引用:
配置由网桥、端口和接口组成。接口总是从属于端口,而端口总是从属于网桥。
NetworkManager 仅创建您要求的网桥、端口和接口。与 ovs-vsctl 不同,它不会自动创建本地接口及其端口。
换句话说,虽然ovs-vsctl add-br
还为您创建了一个接口,但使用 NetworkManager 您必须为此显式激活一个配置文件。这就是为什么dhclient bridge0
不起作用,因为不存在这样的接口(并且您不应该dhclient
显式运行)。
换句话说:在nmcli device
你看到 anovs-bridge
和 an ovs-port
。但这些设备完全在 OVS 内部(ovs-vsctl show
)。您不会看到它们,ip link
也无法在它们上配置 IP 地址。内核不知道这些接口。您需要从属一个“真实”接口,ovs-port
您(或 NetworkManager)可以在该接口上配置 IP 地址。
您可以在这里做两件事:
- 要么从属以太网设备
nmcli con add type ethernet slave-type ovs-port master port0 interface-name enp1s0 ...
- 或创建一个 ovs 接口
nmcli con add type ovs-interface slave-type ovs-port master port0 interface-name bridge0-if0 ...
在此类接口上,您可以通过在相应配置文件中指定 IP 配置来配置 IP 地址。
与往常一样,请注意 NetworkManager 连接配置文件和设备之间的区别。在 NetworkManager 中,您可以通过激活合适的配置文件来配置(和创建)设备。
我凭记忆写下这些例子,目的是为了给你一个想法。我建议您阅读man nm-openvswitch
并遵循那里的示例。祝你好运。