在 CentOS7 中 NetworkManager 管理功能更强大,可以通过 nmcli 命令实现网卡所有日常操作。所有操作基于 nmcli 命令,不需要手动编辑配置文件。
在 CentOS7 中网卡的设备和连接概念更明确。
设备可能是物理的也可以是虚拟的,在系统 / dev 目录中可以找到。
连接是任意创建的,类型多样包含 bond、bridge、vlan、wifi、bluetooth、ethernet、* 等等,名字可以任意取。
设备和连接是一对多的关系,但每个设备同一时间只能对应一个启动的连接
nmcli 命令会直接添加、删除、修改网卡配置文件,所有配置都是永久有效。**

nmcli命令参数

  1. [root@ofmwdb2 ~]# nmcli help
  2. Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
  3. OPTIONS
  4. -o[verview] overview mode (hide default values)
  5. -t[erse] terse output
  6. -p[retty] pretty output
  7. -m[ode] tabular|multiline output mode
  8. -c[olors] auto|yes|no whether to use colors in output
  9. -f[ields] <field1,field2,...>|all|common specify fields to output
  10. -g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f
  11. -e[scape] yes|no escape columns separators in values
  12. -a[sk] ask for missing parameters
  13. -s[how-secrets] allow displaying passwords
  14. -w[ait] <seconds> set timeout waiting for finishing operations
  15. -v[ersion] show program version
  16. -h[elp] print this help
  17. OBJECT
  18. g[eneral] NetworkManager's general status and operations
  19. n[etworking] overall networking control
  20. r[adio] NetworkManager radio switches
  21. c[onnection] NetworkManager's connections
  22. d[evice] devices managed by NetworkManager
  23. a[gent] NetworkManager secret agent or polkit agent
  24. m[onitor] monitor NetworkManager changes

nmcli日常用法

  1. nmcli dev status //查看系统现有网络设备的连接状态
  2. nmcli conn show //查看已有连接
  3. nmcli conn delete UUID1 UUID2 UUID3 //删除不需要的连接
  4. nmcli dev connect ens160 //连接设备ens160,该操作类似于接上网卡网线
  5. nmcli dev disconnect ens160 //断开设备ens160,类似于拔掉网线
  6. nmcli conn down ens160 //关闭连接ens160,等同于ifdown ens160
  7. nmcli conn up ens160 //打开连接ens160,等同于ifup ens160
  8. nmcli dev show //查看设备详细信息

创建、命名连接,并做基本配置

  1. nmcli conn add type ethernet con-name ens160 ifname ens160
  2. //创建新连接con-nameens160,也可以根据个人习惯改为eth0.连接到的设备是ens160,根据实际情况改成自己使用的网卡
  3. nmcli conn mod ens160 ipv4.addresses "10.x.x.x/24" //配置IP和掩码
  4. nmcli conn mod ens160 ipv4.gateway "10.x.x.254" //配置网关
  5. nmcli conn mod ens160 ipv4.dns "x.x.x.x" //配置dns
  6. nmcli conn mod ens160 ipv4.method manual //配置IP地址获取方式为手动
  7. nmcli conn mod ens160 connection.autoconnect yes //配置开机自动启动
  8. nmcli conn up ens160 //启动网卡,命令等同于ifup ens160

重启网卡

centos8没法用systemctl restart networkservice restart network重启网卡
方法:**nmcli c reload +网卡名**
查询网卡名,**nmcli c reload team1**

  1. [root@ofmwdb2 ~]# ifconfig
  2. eno5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  3. ether 98:f2:b3:1f:5b:bc txqueuelen 1000 (Ethernet)
  4. RX packets 1535081 bytes 136937655 (130.5 MiB)
  5. RX errors 0 dropped 0 overruns 0 frame 0
  6. TX packets 3269 bytes 531460 (519.0 KiB)
  7. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  8. device interrupt 34
  9. ......
  10. team1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  11. inet 172.16.0.130 netmask 255.255.255.0 broadcast 172.16.0.255
  12. inet6 fe80::7760:6f19:59cb:8e17 prefixlen 64 scopeid 0x20<link>
  13. ether 98:f2:b3:1f:5b:bc txqueuelen 1000 (Ethernet)
  14. RX packets 487328 bytes 37470389 (35.7 MiB)
  15. RX errors 0 dropped 165711 overruns 0 frame 0
  16. TX packets 2938 bytes 429469 (419.4 KiB)
  17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  18. ......

如果上述命令不行,尝试下述办法

  1. 重载所有ifcfg或route到connection(不会立即生效)

    1. nmcli c reload ifcfg-xxx
  2. 重载指定ifcfg或route到connection(不会立即生效)

    1. nmcli c load /etc/sysconfig/network-scripts/ifcfg-XXX
    2. nmcli c load /etc/sysconfig/network-scripts/route-XXX
  3. 立即生效connection,有3种方法

    1. nmcli c up xxxx
    2. nmcli d reapply xxxx
    3. nmcli 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网卡上原有的连接,建议在终端上操作。

  1. <a name="tK1xh"></a>
  2. #### 配置网卡 team
  3. - 网络组相关概念
  4. > 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
  5. > 网络组不同于旧版中bonding技术,提供更好的性能和扩展性
  6. > 网络组由内核驱动和teamd守护进程实现.
  7. > 多种方式runner
  8. > broadcast
  9. > roundrobin
  10. > activebackup
  11. > loadbalance
  12. > lacp (implements the 802.3ad Link Aggregation Control Protocol)
  13. - 网络组相关特性
  14. > 启动网络组接口不会自动启动网络组中的port接口(connection)
  15. > 启动网络组接口中的port接口总会自动启动网络组接口
  16. > 禁用网络组接口会自动禁用网络组中的port接口
  17. > 没有port接口的网络组接口可以启动静态IP连接
  18. > 启用DHCP连接时,没有port接口的网络组会等待port接口的加入
  19. 1. 通过nmctl命令创建
  20. ```bash
  21. 创建网络接口组
  22. [root@centos7 ~]#nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
  23. Connection 'team0' (b59f80dc-c425-4fa6-b1ef-2935d290fa6a) successfully added.
  24. 创建port接口
  25. [root@centos7 ~]#nmcli connection add type team-slave con-name team0-eth0 ifname eth0 master team0
  26. Connection 'team0-eth0' (5d7e5824-4d87-449c-8fff-42b2f20bc877) successfully added.
  27. [root@centos7 ~]#nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0
  28. Connection 'team0-eth1' (920f9f03-9f24-40bc-89eb-509e44ee606f) successfully added.
  29. 启动team接口
  30. [root@centos7 network-scripts]#nmcli connection up team0
  31. [root@centos7 network-scripts]#nmcli connection up team0-eth0
  32. [root@centos7 network-scripts]#nmcli connection up team0-eth1
  33. 查看team连接状态
  34. [root@centos7 ~]#teamdctl team0 stat
  35. setup:
  36. runner: activebackup
  37. ports:
  38. eth0
  39. link watches:
  40. link summary: up
  41. instance[link_watch_0]:
  42. name: ethtool
  43. link: up
  44. down count: 0
  45. eth1
  46. link watches:
  47. link summary: up
  48. instance[link_watch_0]:
  49. name: ethtool
  50. link: up
  51. down count: 0
  52. runner:
  53. active port: eth1
  1. 手工创建配置文件 ```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