NetworkManager是一个动态的网络控制器与配置系统,它可在网络设备保持可用和连接时对设备进行操作。命令是nmcli,在RHEL7中,一个网卡设备可以有多个connection连接,但是同一时刻只能启用其中一个connection连接。每次新建一个连接,都会在/etc/sysconfig/network-scripts/目录下面新建一个文件。这样的好处是针对一个网络接口,可以设置多个网络连接,比如静态IP和动态IP,再根据需要激活响应的connection。
nmcli [OPTION] OBJECT {COMMAND | help}
OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面平时用的最多的就是connection和device。device叫网络接口,是物理设备。connection是连接,是一个会话的名称。多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
1、创建一个会话名字叫default,它通过DHCP获取IP,自动连接网络,网卡名叫eno16777736。
[root@www conf.d]# nmcli connection add con-name default type ethernet ifname eno16777736
成功添加的连接 'default'(6cbb975b-92fb-431b-a060-999f2a83b713)。
con-name会话名自己随便定义;type类型为以太网卡;ifname接口名,也就是网卡名。
2、创建一个会话名字叫static,并且指定它的ip地址和网关。
[root@www network-scripts]# nmcli connection add con-name static ifname eno16777736 autoconnect no type ethernet ip4 192.168.248.136/24 gw4 192.168.248.1
成功添加的连接 'static'(4ee4df51-1a76-412a-a2d9-32c56fdb6634)。
查看当前的会话[root@www network-scripts]# nmcli connection show
( 设备栏的eno16777736为真实网卡连接的会话 )
连接static会话[root@www network-scripts]# nmcli connection up static
可以看到网卡连接到了会话名为static的会话
#查看本地网卡情况
[root@localhost ~]# nmcli device
实验一、Team网卡绑定
在 linux 中, Rhel7 之前都是使用 bond 机制来实现多网络绑定同一个 IP 地址,来对网络提供访问,并按不同的模式来负载均衡或者轮回接替管理处理数据。而到了 Rhel7 之后,提供了一种强大的工具, nmcli 工具命令,使用此工具,将会根据命令参数的配置来重新生成特定的配置文件来供网络接口使用,方便而又灵活。在 Rhel7中,不再使用 bond 机制定义,而是使用网络组 team 机制,把 team 组当作一个设备。(将多个网卡绑定在一起,来起到备份的作用)
Team网络组的模式:
broadcast:每个网卡都传送数据包
roundrobin:每个网卡轮询方式传送数据
activebackup:网卡之间有主备,主传送数据包,备的不传送,主网卡down了,备才传送
loadbalance:监控流量并使用哈希函数,使得每个网卡传送的数据包达到相等
lacp:需要借助交换机,实现高级的负载均衡
Team的配置:
#查看示例文件
[root@localhost ~]# cd /usr/share/doc/teamd-1.17/example_configs/
[root@localhost example_configs]# ll
#选择链路聚合配置模型
#取用以下内容
"runner": {"name": "activebackup"}
#创建team0设备和team0会话
[root@localhost ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"} }'
#查看创建好的team0会话
[root@localhost ~]# nmcli connection show
#修改team0会话的IP地址和网关
[root@localhost ~]# nmcli connection modify team0 ipv4.addresses 192.168.171.150/24
[root@localhost ~]# nmcli connection modify team0 ipv4.gateway 192.168.171.1
#更改IP地址获取方式为手动
[root@localhost ~]# nmcli connection modify team0 ipv4.method manual
#查看修改后的team0会话
[root@localhost ~]# nmcli connection show team0 | grep method
#添加设备到team0
[root@localhost ~]# nmcli connection add type team-slave con-name team0-port1 ifname eno33554984 master team0
[root@localhost ~]# nmcli connection add type team-slave con-name team0-port2 ifname eno50332208 master team0
#激活从设备
[root@localhost ~]# nmcli connection up team0-port1
[root@localhost ~]# nmcli connection up team0-port2
#激活主设备
[root@localhost ~]# nmcli connection up team0
#查看启动后的team0状态
[root@localhost ~]# teamdctl team0 state
#停用两个从设备会话测试时还是能ping通
[root@localhost ~]# nmcli connection down team0-port1
[root@localhost ~]# nmcli connection down team0-port2
或
[root@localhost ~]# nmcli device disconnect eno50332208
[root@localhost ~]#nmcli device disconnect eno33554992
删除team0
[root@localhost ~]# nmcli connection delete tem0-port1
[root@localhost ~]# nmcli connection delete team0-port2
[root@localhost ~]# nmcli connectiion delete team0
删除team0则不能ping通
实验二、桥接
桥接就是把一台机器上的若干个网络接口连接起来,其结果是,其中一个网卡收到的报文会被复制给其他网卡发送出去。以使得网口之间的报文能够互相转发。
#创建一个软件桥接设备和会话
[root@localhost ~]# nmcli connection add type bridge con-name br1 ifname br1
#配置软件桥接网卡的IP地址、网关和地址获取方式
[root@localhost ~]# nmcli connection modify br1 ipv4.addresses 192.168.171.151/24
[root@localhost ~]# nmcli connection modify br1 ipv4.gateway 192.168.171.1
[root@localhost ~]# nmcli connection modify br1 ipv4.method manual
#添加从设备和会话到桥接设备
[root@localhost ~]# nmcli connection add type bridge-slave con-name br1-port0 ifname eno33554984 master br1
#启动从设备会话
[root@localhost ~]# nmcli connection up br1-port0
#启动桥接会话
[root@localhost ~]# nmcli connection up br1
实验三、配置team桥接
1、配置team
#创建team1设备和team1会话
[root@localhost ~]# nmcli connection add type team con-name team1 ifname team1 config '{"runner": {"name": "activebackup"} }'
#添加设备到team1
[root@localhost ~]# nmcli connection add type team-slave con-name team1-port1 ifname eno33554984 master team1
[root@localhost ~]# nmcli connection add type team-slave con-name team1-port2 ifname eno50332208 master team1
#激活从设备
[root@localhost ~]# nmcli connection up team1-port1
[root@localhost ~]# nmcli connection up team1-port2
#激活主设备
[root@localhost ~]# nmcli connection up team1
#查看team状态
[root@localhost ~]# teamdctl team1 state
#断掉team1设备
[root@localhost ~]# nmcli device disconnect team1
#停用NetworkManager服务
[root@localhost ~]# systemctl stop NetworkManager.service
#禁止该服务开机启动
[root@localhost ~]# systemctl disable NetworkManager.service
#切换到网卡配置目录
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
#编辑team1配置文件
[root@localhost network-scripts]# vim ifcfg-team1
#追加如下内容:
BRIDGE=brteam1
#编辑team1从设备配置文件,只保留以下内容,移除和IP相关的信息
NAME=team1-port1
UUID=01de42d1-7304-4ef8-8c62-93c405cd8474
DEVICE=eno33554984
ONBOOT=yes
TEAM_MASTER=team1
DEVICETYPE=TeamPort
#配置brteam1配置文件
[root@localhost network-scripts]# cat ifcfg-brteam1
DEVICE=brteam1
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.171.152
PREFIX=24
#重启网络服务
[root@localhost ~]# systemctl restart NetworkManager
[root@localhost ~]#nmcli device connect team1
[root@localhost ~]# systemctl restart network