在 CentOS7 中 NetworkManager 管理功能更强大,可以通过 nmcli 命令实现网卡所有日常操作。所有操作基于 nmcli 命令,不需要手动编辑配置文件。
在 CentOS7 中网卡的设备和连接概念更明确。
设备可能是物理的也可以是虚拟的,在系统 / dev 目录中可以找到。
连接是任意创建的,类型多样包含 bond、bridge、vlan、wifi、bluetooth、ethernet、* 等等,名字可以任意取。
设备和连接是一对多的关系,但每个设备同一时间只能对应一个启动的连接。
nmcli 命令会直接添加、删除、修改网卡配置文件,所有配置都是永久有效。**
nmcli命令参数
[root@ofmwdb2 ~]# nmcli helpUsage: nmcli [OPTIONS] OBJECT { COMMAND | help }OPTIONS-o[verview] overview mode (hide default values)-t[erse] terse output-p[retty] pretty output-m[ode] tabular|multiline output mode-c[olors] auto|yes|no whether to use colors in output-f[ields] <field1,field2,...>|all|common specify fields to output-g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f-e[scape] yes|no escape columns separators in values-a[sk] ask for missing parameters-s[how-secrets] allow displaying passwords-w[ait] <seconds> set timeout waiting for finishing operations-v[ersion] show program version-h[elp] print this helpOBJECTg[eneral] NetworkManager's general status and operationsn[etworking] overall networking controlr[adio] NetworkManager radio switchesc[onnection] NetworkManager's connectionsd[evice] devices managed by NetworkManagera[gent] NetworkManager secret agent or polkit agentm[onitor] monitor NetworkManager changes
nmcli日常用法
nmcli dev status //查看系统现有网络设备的连接状态nmcli conn show //查看已有连接nmcli conn delete UUID1 UUID2 UUID3 //删除不需要的连接nmcli dev connect ens160 //连接设备ens160,该操作类似于接上网卡网线nmcli dev disconnect ens160 //断开设备ens160,类似于拔掉网线nmcli conn down ens160 //关闭连接ens160,等同于ifdown ens160nmcli conn up ens160 //打开连接ens160,等同于ifup ens160nmcli dev show //查看设备详细信息
创建、命名连接,并做基本配置
nmcli conn add type ethernet con-name ens160 ifname ens160//创建新连接con-name是ens160,也可以根据个人习惯改为eth0.连接到的设备是ens160,根据实际情况改成自己使用的网卡nmcli conn mod ens160 ipv4.addresses "10.x.x.x/24" //配置IP和掩码nmcli conn mod ens160 ipv4.gateway "10.x.x.254" //配置网关nmcli conn mod ens160 ipv4.dns "x.x.x.x" //配置dnsnmcli conn mod ens160 ipv4.method manual //配置IP地址获取方式为手动nmcli conn mod ens160 connection.autoconnect yes //配置开机自动启动nmcli conn up ens160 //启动网卡,命令等同于ifup ens160
重启网卡
centos8没法用systemctl restart network和service restart network重启网卡
方法:**nmcli c reload +网卡名**
查询网卡名,**nmcli c reload team1**
[root@ofmwdb2 ~]# ifconfigeno5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ether 98:f2:b3:1f:5b:bc txqueuelen 1000 (Ethernet)RX packets 1535081 bytes 136937655 (130.5 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 3269 bytes 531460 (519.0 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 34......team1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.16.0.130 netmask 255.255.255.0 broadcast 172.16.0.255inet6 fe80::7760:6f19:59cb:8e17 prefixlen 64 scopeid 0x20<link>ether 98:f2:b3:1f:5b:bc txqueuelen 1000 (Ethernet)RX packets 487328 bytes 37470389 (35.7 MiB)RX errors 0 dropped 165711 overruns 0 frame 0TX packets 2938 bytes 429469 (419.4 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0......
如果上述命令不行,尝试下述办法
重载所有ifcfg或route到connection(不会立即生效)
nmcli c reload ifcfg-xxx
重载指定ifcfg或route到connection(不会立即生效)
nmcli c load /etc/sysconfig/network-scripts/ifcfg-XXXnmcli c load /etc/sysconfig/network-scripts/route-XXX
立即生效connection,有3种方法
nmcli c up xxxxnmcli d reapply xxxxnmcli d connect xxxx
配置网卡 bond
网卡 bond 是创建一个虚拟链接做为主,若干个连接做为从。从连接关联各自的物理网卡,避免物理网卡的单点故障,提高可用性。 ```bash //这里系统有两个网卡enp9s0f0和enp9s0f1
nmcli conn add type bond con-name bond0 ifname bond0 mode active-backup autoconnect yes //添加一个连接,类型为bond,连接名bond0,设置连接自动启动.设备指向bond0,将创建出一个虚拟设备bond0
nmcli conn add type bond-slave con-name eth0 ifname enp9s0f0 master bond0 autoconnect yes nmcli conn add type bond-slave con-name eth1 ifname enp9s0f1 master bond0 autoconnect yes //为bond0添加两个从连接eth0和eth1,分别关联物理网卡enp9s0f1和enp9s0f1,设置连接自动启动.也可以不指定从连接名,会自动命名bond-slave-enp9s0f0和bond-slave-enp9s0f1
nmcli conn modify bond0 ipv4.addresses “10.x.x.x/24” ipv4.gateway “10.x.x.254” ipv4.dns “x.x.x.x” ipv4.method manual //为连接bond0配置IP、网关、dns、启动方式
nmcli connection up eth0 nmcli connection up eth1 nmcli connection up bond0 //启动两个从连接,然后启动主连接。启动eth0和eth1时会自动disconnect网卡上原有的连接,建议在终端上操作。
<a name="tK1xh"></a>#### 配置网卡 team- 网络组相关概念> 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量> 网络组不同于旧版中bonding技术,提供更好的性能和扩展性> 网络组由内核驱动和teamd守护进程实现.> 多种方式runner> broadcast> roundrobin> activebackup> loadbalance> lacp (implements the 802.3ad Link Aggregation Control Protocol)- 网络组相关特性> 启动网络组接口不会自动启动网络组中的port接口(connection)> 启动网络组接口中的port接口总会自动启动网络组接口> 禁用网络组接口会自动禁用网络组中的port接口> 没有port接口的网络组接口可以启动静态IP连接> 启用DHCP连接时,没有port接口的网络组会等待port接口的加入1. 通过nmctl命令创建```bash创建网络接口组[root@centos7 ~]#nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'Connection 'team0' (b59f80dc-c425-4fa6-b1ef-2935d290fa6a) successfully added.创建port接口[root@centos7 ~]#nmcli connection add type team-slave con-name team0-eth0 ifname eth0 master team0Connection 'team0-eth0' (5d7e5824-4d87-449c-8fff-42b2f20bc877) successfully added.[root@centos7 ~]#nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0Connection 'team0-eth1' (920f9f03-9f24-40bc-89eb-509e44ee606f) successfully added.启动team接口[root@centos7 network-scripts]#nmcli connection up team0[root@centos7 network-scripts]#nmcli connection up team0-eth0[root@centos7 network-scripts]#nmcli connection up team0-eth1查看team连接状态[root@centos7 ~]#teamdctl team0 statsetup:runner: activebackupports:eth0link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0eth1link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0runner:active port: eth1
- 手工创建配置文件 ```bash 创建team0接口配置文件 vim /etc/sysconfig/network-scripts/ifcfg-team0 DEVICE=team0 DEVICETYPE=Team TEAM_CONFIG=”{\”runner\”: {\”name\”: \”broadcast\”}}” BOOTPROTO=none IPADDR0=172.16.0.100 PREFIX0=24 NAME=team0 ONBOOT=yes
创建port接口配置文件
/etc/sysconfig/network-scripts/ifcfg-team0-eth0 DEVICE=eth0 DEVICETYPE=TeamPort TEAM_MASTER=team0 NAME=team0-eth0 ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-team0-eth1 DEVICE=eth1 DEVICETYPE=TeamPort TEAM_MASTER=team0 NAME=team0-eth1 ONBOOT=yes
启动team接口 [root@centos7 ~]#nmcli connection up team0 Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/69) ```
重新载入配置文件
nmcli c[onnection] reload
