如何使用nmcli创建和配置网桥(静态和DHCP)

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

" nmcli"(NetworkManager命令行界面)命令行实用程序用于控制NetworkManager和报告网络状态。
nmcli用于创建,显示,编辑,删除,激活和停用网络连接,以及控制和显示网络设备状态。
在本文中,我将分享在RHEL/CentOS 7/8中使用nmcli创建和配置网桥的步骤。

nmcli桥。
nmcli重新启动网络。
nmcli重新加载。
nmcli在RHEL中配置网桥。
使用nmcli创建网桥。
在Linux中使用nmcli配置网桥。
nmcli网络重新启动。
nmcli连接重新启动。
使用nmcli配置静态IP地址。
使用nmcli配置dhcp ip。
使用nmcli配置网桥。

我们可以使用nmcli工具配置永久静态IP和DHCP IP。

什么是网桥?

  • 网桥将多个物理接口的资源合并为一个虚拟接口。

  • 网桥类似于虚拟LAN接口,但相反。

  • 网络桥接器将网络适配器连接到单个子网,并向所有桥接器客户端提供统一的网络。

  • 例如,如果我们有一个16端口非托管交换机,并且交换机已满,并且需要将其他客户端添加到同一网络,则可以在pfSense安装中添加一个网络适配器,然后创建一个网桥以加入一个新的交换机。
    客户端到同一网络。

nmcli命令的基本格式如下:

nmcli [OPTIONS] OBJECT { COMMAND | help }

其中"对象"可以是以下选项之一:常规,网络,无线电,连接,设备,代理和监视器。
我们可以在命令中使用这些选项的任何前缀。
例如," nmcli con help"," nmcli c help"," nmcli connection help"会生成相同的输出。

检查是否安装了桥接内核模块

在CentOS/RHEL 7/8中,桥接模块是默认加载的。
如有必要,可以通过以超级用户身份发出以下命令来确保模块已加载:

# lsmod | grep bridge
bridge                136173  0

如果未加载模块,则可以使用以下方法安装模块

# modprobe --first-time bridge

要显示有关模块的信息,请发出以下命令:

# modinfo bridge

在RHEL/CentOS 7中使用nmcli配置网桥

使用nmcli创建和配置网络桥的第一步是创建实际的桥接口,然后将物理设备分配给该桥。

创建网桥界面

要创建一个名为`bridge-app-br0'的网桥,请以root身份发出以下命令:

[root@centos-7 ~]# nmcli connection add type bridge ifname app-br0
Connection 'bridge-app-br0' (39b1a2d0-23ab-4c9d-9cb5-a2ec32a21075) successfully added.

提示:

网桥前缀将自动添加到连接名称中。
如果未指定接口名称,则该名称将默认为bridgebridge-1bridge-2等。

创建桥的从接口

要使用nmcli创建和配置网桥,我们还需要添加或者奴役接口。
要将第一个接口(例如eno51)奴役到网桥app-br0,请发出以下命令:

[root@centos-7 ~]# nmcli con add type ethernet con-name br-slave-1 ifname eno51 master app-br0
Connection 'br-slave-1' (5dd3f7d7-e618-4850-b2d6-29c889d19937) successfully added.

类似地,将第二个从属接口添加到桥接app-br0

[root@centos-7 ~]# nmcli con add type ethernet con-name br-slave-2 ifname eno52 master app-br0
Connection 'br-slave-2' (092d51b9-0807-45ea-b0bb-9cf0da9995b5) successfully added.

使用nmcli分配静态或者dhcp IP并配置网桥

网桥接口有多种可配置选项,我们可以使用nmcli对其进行修改。
例如,默认情况下启用生成树协议(STP)。
使用的值来自IEEE 802.1D-1998标准。
要禁用此网桥的STP,请以root身份发出以下命令:

[root@centos-7 ~]# nmcli con modify bridge-app-br0 bridge.stp no

要查看网桥设置,请发出以下命令:

[root@centos-7 ~]# nmcli -f bridge con show bridge-app-br0
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

使用nmcli分配DHCP IP的语法

# nmcli connection add type ethernet ifname  con-name  ipv4.method auto

使用nmcli分配静态IP的语法

# nmcli connection add type ethernet ifname  con-name  ipv4.method manual ipv4.address/ipv4.gateway

另请阅读:

16个ip命令示例,用于配置网络接口(备忘单)

要设置以太网,请配置以下命令选项:

  • con-name-连接名称是连接配置文件的名称,不应与表示设备的接口名称混淆

  • ifname-接口名称

  • type-允许的值包括:以太网,wifi,wimax,gsm,cdma,infiniband,蓝牙,vlan,bond,bond-slave

  • ipv4.method-特定于接口配置是通过dhcp(自动)还是静态(手动)进行。

  • ipv4.address-CIDR表示形式的IPv4地址。

  • ipv4.gateway-IPv4网关地址。

  • ipv6.address-IPv6地址(如果启用了IPv6,则为可选)

[root@centos-7 ~]# nmcli con modify bridge-app-br0 ipv4.method manual ipv4.address "192.151.12.6/26" ipv4.gateway "192.151.12.62"  ipv4.dns 8.8.8.8 ipv4.dns-search example.com

其中我为网桥app-br0接口分配了一个静态IP地址192.151.12.6,其Netmask前缀为26,网关为192.151.12.62,DNS服务器IP为8.8.8.8.

要查看连接,请发出以下命令:

[root@centos-7 ~]# nmcli con show
NAME                   UUID                                  TYPE            DEVICE
Ethernet connection 2  b9bcd5b2-0342-4c35-9800-0c9436d2fe60  802-3-ethernet  eno49
br-slave-1             5dd3f7d7-e618-4850-b2d6-29c889d19937  802-3-ethernet  eno51
br-slave-2             092d51b9-0807-45ea-b0bb-9cf0da9995b5  802-3-ethernet  eno52
bridge-app-br0         39b1a2d0-23ab-4c9d-9cb5-a2ec32a21075  bridge          app-br0
eno50                  5215c9b8-6f7d-4caa-9792-81dc099f41fc  802-3-ethernet  eno50
eno55                  0d918152-fdf6-4b87-9ac0-cb91fbb621c7  802-3-ethernet  eno55
virbr0                 b9030451-b81a-4727-86f6-6f2fbe9f7118  bridge          virbr0
virbr1                 12996be2-6d66-423a-8882-1533633a4a7e  bridge          virbr1
eno49                  2ff6c44e-f016-4359-8eaf-121071bc612d  802-3-ethernet  -
eno51                  a9031c75-f1f4-481e-bdc3-942b89a554c1  802-3-ethernet  -

如我们所见,新创建的网桥和从接口在可用连接列表中可见。

brctl用于在Linux内核中设置,维护和检查以太网桥配置。
命令" brctl show"显示了以太网桥的所有当前实例

[root@centos-7 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
app-br0         8000.9cdc7177ef51       no              eno51
                                                        eno52

另请阅读:

如何在Linux(RHEL/CentOS 7)中配置ipv6地址

验证网桥配置

现在,我们已经完成了使用RHEL/CentOS 7中的nmcli创建和配置网桥的步骤。
要验证我们的配置,我们可以检查app-br0是否已分配了IP地址。

[root@centos-7 ~]# ip addr show dev app-br0
23: app-br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 9c:dc:71:77:ef:51 brd ff:ff:ff:ff:ff:ff
    inet 192.151.12.6/26 brd 192.151.12.63 scope global app-br0
       valid_lft forever preferred_lft forever
    inet6 fe80::f479:8a1:4dd0:1df0/64 scope link
       valid_lft forever preferred_lft forever

接下来尝试对网桥接口的网关执行ping操作,并确保其可访问

[root@centos-7 ~]# ping 192.151.12.62
PING 192.151.12.62 (192.151.12.62) 56(84) bytes of data.
64 bytes from 192.151.12.62: icmp_seq=1 ttl=64 time=19.0 ms
64 bytes from 192.151.12.62: icmp_seq=2 ttl=64 time=0.706 ms
64 bytes from 192.151.12.62: icmp_seq=3 ttl=64 time=19.6 ms
^C
--- 192.151.12.62 ping statistics --
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.706/13.134/19.671/8.792 ms

由于nmcli对网络配置进行了永久更改,因此我们也可以验证nmcli创建的网络配置文件。
网桥接口配置文件为ifcfg-bridge-app-br0

[root@centos-7 ~]# cd /etc/sysconfig/network-scripts/
[root@centos-7 network-scripts]# cat ifcfg-bridge-app-br0
DEVICE=app-br0
STP=no
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=bridge-app-br0
UUID=39b1a2d0-23ab-4c9d-9cb5-a2ec32a21075
ONBOOT=yes
IPADDR=192.151.12.6
PREFIX=26
GATEWAY=192.151.12.62
DNS1=8.8.8.8
DOMAIN=example.com

同样,验证网桥从接口的配置文件。

[root@centos-7 ~]# cat ifcfg-br-slave-1
TYPE=Ethernet
NAME=br-slave-1
UUID=5dd3f7d7-e618-4850-b2d6-29c889d19937
DEVICE=eno51
ONBOOT=yes
BRIDGE=app-br0
[root@centos-7 ~]# cat ifcfg-br-slave-2
TYPE=Ethernet
NAME=br-slave-2
UUID=092d51b9-0807-45ea-b0bb-9cf0da9995b5
DEVICE=eno52
ONBOOT=yes
BRIDGE=app-br0

检查默认网关

[root@centos-7 ~]# ip route
default via 192.151.12.62 dev app-bridge proto static metric 426

重新启动网络管理器连接

重新加载连接接口

[root@centos-7 ~]# nmcli connection reload

除了创建和配置网桥nmcli外,我们还可以做更多的事情,有关选项的完整列表,请遵循nmcli工具的手册页。