如何在Linux上使用nmcli(NetworkManager)添加网桥

时间:2020-01-09 14:16:49  来源:igfitidea点击:

如何在Debian Linux 9 Stretch、Linux上使用nmcli为NetworkManager创建或添加网桥?
桥接器不过是将两个本地网络连接到一个网络中的设备。
它适用于数据链路层,即OSI模型的第2层。
网络桥通常与虚拟化和其他软件一起使用。
禁用NetworkManager进行简单桥接,尤其是在Linux便携式计算机/台式机上没有任何意义。

nmcli工具可以创建持久性网桥配置,而无需编辑任何文件。
本教程显示了如何使用网络管理器命令行工具nmcli来创建网桥接口。

如何使用nmcli创建/添加网桥

当您要使用网络管理器时,在Linux上添加网桥接口的过程如下:

  • 打开终端应用
  • 获取有关当前连接的信息:``nmcli con show`
  • 添加一个新桥:``nmcli con add type bridge ifname br0`
  • 创建一个从属接口:``nmcli con add type bridge-slave ifname eno1 master br0`
  • 打开br0:nmcli con br0

让我们看看如何创建一个桥接,详细地命名为br0。

获取当前的网络配置

您可以从网络管理器GUI的设置中查看连接:另一个选项是执行以下命令:

$ nmcli con show
$ nmcli connection show --active

如何创建一个名为br0的桥

$ 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

您也可以禁用STP:

$ sudo nmcli con modify br0 bridge.stp no
$ nmcli con show
$ nmcli -f bridge con show br0

最后一条命令显示网桥设置,包括禁用的STP:

bridge.mac-address:                     -
bridge.stp:                             no
bridge.priority:                        32768
bridge.forward-delay:                   15
bridge.hello-time:                      2
bridge.max-age:                         20
bridge.ageing-time:                     300
bridge.multicast-snooping:              yes

如何打开网桥界面

您必须关闭有线连接1并打开br0:

$ sudo nmcli con down "Wired connection 1"
$ sudo nmcli con up br0
$ nmcli con show

使用ip命令查看IP设置:

$ ip a s
$ ip a s br0

可选:如何在KVM中使用br0

现在,您可以将使用KVM/VirtualBox/VMware工作站创建的VM(虚拟机)直接连接到网络,而无需使用NAT。
使用vi命令或cat命令为KVM创建名为br0.xml的文件:

$ cat /tmp/br0.xml

追加以下代码:

<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

输出示例:

Name                 State      Autostart     Persistent
---------------------------------------------------------
br0                  active     yes           yes
default              inactive   no            yes