如何使用 nmcli 来创建/添加网桥
使用 NetworkManager 在 Linux 上添加网桥接口的步骤如下:
- 打开终端
- 获取当前连接状态:
nmcli con show
- 添加新的网桥:
nmcli con add type bridge ifname br0
- 创建子网卡:
nmcli con add type bridge-slave ifname eno1 master br0
- 打开 br0:
nmcli con up br0
让我们从细节层面看看如何创建一个名为 br0 的网桥。
获取当前网络配置
你可以通过 NetworkManager 的 GUI 来了解本机的网络连接:
Getting Network Info on Linux
也可以使用如下命令行来查看:
代码语言:javascript复制$ nmcli con show$ nmcli connection show --active
View the connections with nmcli
我有一个使用网卡 eno1
的 “有线连接”。我的系统还有一个 VPN 接口。我将要创建一个名为 br0
的网桥,并连接到 eno1
。
如何创建一个名为 br0 的网桥
代码语言:javascript复制$ sudo nmcli con add ifname br0 type bridge con-name br0$ sudo nmcli con add type bridge-slave ifname eno1 master br0$ nmcli connection show
Create bridge interface using nmcli on Linux
你也可以禁用 STP:
代码语言:javascript复制$ sudo nmcli con modify br0 bridge.stp no$ nmcli con show$ nmcli -f bridge con show br0
最后一条命令展示了禁用 STP 后的网桥参数:
代码语言:javascript复制bridge.mac-address: --bridge.stp: nobridge.priority: 32768bridge.forward-delay: 15bridge.hello-time: 2bridge.max-age: 20bridge.ageing-time: 300bridge.multicast-snooping: yes
如何打开网桥
你必须先关闭 Wired connection 1
,然后打开 br0
:
$ sudo nmcli con down "Wired connection 1"$ sudo nmcli con up br0$ nmcli con show
使用 ip 命令 来查看 IP 信息:
代码语言:javascript复制$ ip a s$ ip a s br0
Build a network bridge with nmcli on Linux
附录: 如何在 KVM 上使用 br0
现在你可以使用 KVM/VirtualBox/VMware workstation 创建的 VM(虚拟机)来直接连接网络而非通过 NAT。使用 vi
或者 cat 命令为虚拟机创建一个名为 br0.xml
的文件:
$ cat /tmp/br0.xml
添加以下代码:
代码语言:javascript复制<network> <name>br0</name> <forward mode="bridge"/> <bridge name="br0" /></network>
如下所示运行 virsh
命令:
# virsh net-define /tmp/br0.xml# virsh net-start br0# virsh net-autostart br0# virsh net-list --all
输出:
代码语言:javascript复制 Name State Autostart Persistent---------------------------------------------------------- br0 active yes yes default inactive no yes
阅读 man 页面获取更多信息:
代码语言:javascript复制$ man ip$ man nmcli