Ubuntu 20.04使用nmcli命令添加网桥(br0)

时间:2020-01-09 10:45:30  来源:igfitidea点击:

如何配置我的Ubuntu 20.4 LTS并使用nmcli命令添加网桥(br0)?
如何在用于KVM(基于内核的虚拟机)的Ubuntu Linux 20.04 LTS服务器上创建Linux网桥?
网桥不过是将两个本地网络连接到一个网络中的设备。
它在数据链路层(OSI模型的第2层)工作。
经常与虚拟化软件一起使用的网桥。
例如,诸如KVM,LXD或者Docker用户之类的流行软件可以配置网桥,而不是基于NAT的网络。

nmcli命令行工具可以创建持久的网桥配置,而无需编辑任何文件。
该页面显示了如何在Ubuntu 20.04 LTS Linux服务器上使用网络管理器命令行工具nmcli创建网桥接口。

Ubuntu 20.04使用nmcli添加网桥(br0)

当您要使用网络管理器时,在Ubuntu 20.04版上创建和添加桥接口的过程如下:

  • 打开终端应用程序或者使用[nixmcd name = ssh]登录
  • 查找有关当前Ubuntu网络连接的信息:sudo nmcli con show
  • 然后,添加一个名为br0的新网桥:sudo nmcli con添加类型为ifif br0的网桥
  • 使用enp0s31f6为br0创建一个从属接口:sudo nmcli con add type bridge-slave ifname enp0s31f6 master br0
  • 打开br0接口以通过DHCP获取IP:sudo nmcli con up br0
  • 下面针对br0接口讨论静态IP设置

让我们详细查看所有示例和说明,以便在Ubuntu Linux 20.04 LTS服务器中创建网桥。

在Ubuntu 20.04上创建Linux网桥的前提条件

首先,获取有关当前Ubuntu Linux接口和IP地址的信息,因为稍后我们需要此信息。
因此,执行以下命令:

$ nmcli con show
$ nmcli connection show --active

输出:

NAME  UUID                                  TYPE      DEVICE 
ETH0  71a189f2-9cb9-49f0-8464-37a6801740e3  ethernet  enp0s31f6

因此,我的服务器有一个使用enp0s31f6以太网接口的ETH0。
我将建立一个名为br0的网桥接口,并将接口添加(奴役)到enp0s31f6。

步骤1创建一个名为br0的网桥

语法为:

$ sudo nmcli con add ifname br0 type bridge con-name br0
$ sudo nmcli con add type bridge-slave ifname enp0s31f6 master br0
$ nmcli connection show

步骤2为网桥禁用或者启用STP

生成树协议(STP)的主要目的是确保当网络中有冗余路径时,您不会创建环路。
我们可以为br0禁用STP或者启用以下功能:

$ sudo nmcli con modify br0 bridge.stp no
## Ubuntu 20.04 Linux nmcli command to enable STP with br0 ## 
$ sudo nmcli con modify br0 bridge.stp yes
## Verification ##
$ nmcli con show
$ nmcli -f bridge con show br0

输出:

bridge.mac-address:                     -
bridge.stp:                             yes
bridge.priority:                        32768
bridge.forward-delay:                   15
bridge.hello-time:                      2
bridge.max-age:                         20
bridge.ageing-time:                     300
bridge.group-forward-mask:              0
bridge.multicast-snooping:              yes
bridge.vlan-filtering:                  no
bridge.vlan-default-pvid:               1
bridge.vlans:                           -

步骤3为网桥接口设置静态或者基于DHCP的IP

我们尚未为br0接口分配任何静态IP地址。
因此,如果DHCP服务器可用,则应提供IP地址和其他设置。
但是,在服务器上,我们通常会设置一个静态IP地址。
在此示例中,我将现有的enp0s31f6 IP网络设置转换为br0设置,如下所示:

IPv4 br0设置
$ sudo nmcli connection modify br0 ipv4.addresses '192.168.1.25/24'
$ sudo nmcli connection modify br0 ipv4.gateway '192.168.1.254'
$ sudo nmcli connection modify br0 ipv4.dns '192.168.1.254'
$ sudo nmcli connection modify br0 ipv4.dns-search 'sweet.home'
$ sudo nmcli connection modify br0 ipv4.method manual
IPv6 br0设置
$ sudo nmcli connection modify bridge0 ipv6.addresses 'Your-Static-IPv6-Address'
$ sudo nmcli connection modify br0 ipv6.gateway 'Your-Static-IPv6-Gateway-Address'
$ sudo nmcli connection modify br0 ipv6.dns 'Your-Static-IPv6-DNS'
$ sudo nmcli connection modify br0 ipv6.dns-search 'sweet.home'
$ sudo nmcli connection modify br0 ipv6.method manual

步骤4在Ubuntu Linux上启用br0网桥接口

到目前为止,我们已经配置了必需的网络设置。
现在该打开我们的br0了:

$ sudo nmcli con up br0
$ nmcli con show

等待一段时间以激活设置。

步骤5验证网桥设置

使用ip命令在Ubuntu框中查看br0网桥的IP设置:

$ ip a s
$ ip a s br0

您可以删除enp0s31f6,因为br0本身具有静态IP地址,因为enp0s31f6将处于转发状态:

$ sudo nmcli connection delete enp0s31f6
## 或者
$ sudo nmcli connection delete ETH0

使用ip命令的外观如下:

$ nmcli connection show
$ ip a show br0
$ nmcli device
## interface active and works with br0 ##
$ ip a show enp0s31f6
$ ip r
## Check Internet and local LAN connectivity using ping command ##
$ ping -c 4 www.theitroad.local
$ ping -c 4 192.168.1.25

显示Ubuntu Linux机器上以太网设备和桥接设备的链接状态:

$ ip link show master br0
$ bridge link show
$ bridge link show dev enp0s31f6