技术改变生活

博客园 首页 新随笔 联系 订阅 管理

nmcli是NetWorkManager软件名的缩写,也是该软件下的一个命令,专门用于管理Linux服务器的网络配置。

在Centos7中已经出现该命令,在Centos8中,官方放弃了network服务,主推Nmcli服务,以下是Nmcli的用法介绍。

查看NetworkManager服务的状态,Linux服务器向我们传递了两个信息:该服务默认开机自启动,默认在激活

 

[root@x160 ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-07-24 16:19:26 CST; 12min ago
Docs: man:NetworkManager(8)
Main PID: 766 (NetworkManager)
Tasks: 4
Memory: 10.6M
CGroup: /system.slice/NetworkManager.service
├─ 766 /usr/sbin/NetworkManager --no-daemon
└─2087 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/...

Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7514] dhcp4 (ens....1
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7514] dhcp4 (ens...00
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7514] dhcp4 (ens...1'
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7514] dhcp4 (ens...1'
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7514] dhcp4 (ens...nd
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7521] device (en...')
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7524] device (en...')
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7525] device (en...')
Jul 24 16:27:42 x160 NetworkManager[766]: <info> [1595579262.7570] device (en...d.


#查看设备状态 [root@x160 ~]# nmcli device status DEVICE TYPE STATE CONNECTION ens33 ethernet connected ens33 virbr0 bridge connected virbr0 docker0 bridge unmanaged -- lo loopback unmanaged -- virbr0-nic tun unmanaged -- #查看网卡连接状态 [root@x160 ~]# nmcli connection show NAME UUID TYPE DEVICE ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33 virbr0 d4be0d7e-3c2f-4559-94bb-a4b7f41b7ba2 bridge virbr0 ens33 52dbb266-a3c8-ddb4-c843-d63dde6075d5 ethernet --
#显示所有连接
[root@x160 ~]# nmcli connection 
NAME                UUID                                  TYPE      DEVICE 
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
Wired connection 1  0e9ad4c8-9abb-3d79-96b8-9451abf64bc0  ethernet  ens36  
virbr0              29ef4522-ef5e-4450-b47c-3e1cdda2f61f  bridge    virbr0 
ens33               52dbb266-a3c8-ddb4-c843-d63dde6075d5  ethernet  --     
eth1                226b86d6-2ad1-4155-bae3-37344e4cdd5f  ethernet  --     

#这条命令将 NetworkManager 的所有状态都打印出来
[root@x160 ~]# nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled 
[root@x160 ~]# 
#仅显示当前活动的连接
[root@x160 ~]# nmcli connection show -active
NAME                UUID                                  TYPE      DEVICE 
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
Wired connection 1  0e9ad4c8-9abb-3d79-96b8-9451abf64bc0  ethernet  ens36  
virbr0              29ef4522-ef5e-4450-b47c-3e1cdda2f61f  bridge    virbr0 
[root@x160 ~]# 

#列出 NetworkManager 识别出的设备列表及他们的状态
[root@x160 ~]# nmcli device status
DEVICE      TYPE      STATE      CONNECTION         
ens33       ethernet  connected  ens33              
ens36       ethernet  connected  Wired connection 1 
virbr0      bridge    connected  virbr0             
docker0     bridge    unmanaged  --                 
lo          loopback  unmanaged  --                 
virbr0-nic  tun       unmanaged  --                 
[root@x160 ~]# 
#停止某个接口
[root@x160 ~]# nmcli device disconnect ens36
Device 'ens36' successfully disconnected.


#启动接口
[root@x160 ~]# nmcli device connect ens36
Device 'ens36' successfully activated with '0e9ad4c8-9abb-3d79-96b8-9451abf64bc0'.

device叫网络接口,是物理设备;connection是连接,偏重于逻辑设置。  

多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection  

 

 

修改IP地址等属性:

# nmcli connection modify IFACE [+|-]setting.propertyvalue

修改配置文件执行生效:systemctl restart network 或 nmcli con reload

nmcli命令生效:nmclicon down eth0 ; nmclicon up eth0

 

 

 

个人实践

centos7与之前的操作系统不同之处,

一、centos7的网络管理方式使用NetworkManager工具,传统方式是network服务;

二、centos7网卡的命名规则使用en开头,ens代表热插拔网卡类型,enp代表pci接口的网卡类型,eno代表on-board板载网卡类型;

NetworkManager网络管理2个重要知识点:

device    设备

connection  网络

设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效。

 

NetworkManager(动态网络管理工具)提供的工具:

nmcli    nm-command-line    命令行管理工具

nmtui    nm-text-user-interface  文本管理工具

nm-connect-editor          图形化管理工具

  

[root@x112 ~]# nmcli device 
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
lo      loopback  unmanaged  --         

[root@x112 ~]# nmcli connection
NAME  UUID                                  TYPE            DEVICE 
eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   

[root@x112 ~]# nmcli connection add con-name eth2 ifname eth0 autoconnect yes ipv4.addresses 192.168.0.110/24 gw4 192.168.0.1 type ethernet
Connection 'eth2' (4634ec80-1f55-43b4-9f7a-32296c517e8c) successfully added.

[root@x112 ~]# nmcli connection 
NAME  UUID                                  TYPE            DEVICE 
eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0   
eth2  4634ec80-1f55-43b4-9f7a-32296c517e8c  802-3-ethernet  --   

激活连接 [root@x112 ~]# nmcli connection up eth2 [root@x112 ~]# nmcli connection NAME UUID TYPE DEVICE eth2 4634ec80-1f55-43b4-9f7a-32296c517e8c 802-3-ethernet eth0 eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet -- [root@x112 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:4b:06:6b brd ff:ff:ff:ff:ff:ff inet 192.168.0.101/24 brd 192.168.0.255 scope global dynamic eth0 valid_lft 7085sec preferred_lft 7085sec inet 192.168.0.110/24 brd 192.168.0.255 scope global secondary eth0 valid_lft forever preferred_lft forever inet6 fe80::10b9:f353:3cd:f91/64 scope link valid_lft forever preferred_lft forever [root@x112 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp IPADDR=192.168.0.110 PREFIX=24 GATEWAY=192.168.0.1 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=eth2 DEVICE=eth0 ONBOOT=yes [root@x112 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none IPADDR=192.168.0.112 PREFIX=24 BROADCAST=192.168.0.255 DNS1=8.8.8.8 GATEWAY=192.168.0.1 ONBOOT=yes NAME=eth0 修改配置文件执行生效,运行nmcli connection reload;然后运行nmcli connection down eth0;nmcli connection up eth0 [root@x112 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2 [root@x112 ~]# nmcli connection reload [root@x112 ~]# nmcli connection down eth2;nmcli connection up eth2 Connection 'eth2' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4) [root@x112 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:4b:06:6b brd ff:ff:ff:ff:ff:ff inet 192.168.0.110/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::10b9:f353:3cd:f91/64 scope link valid_lft forever preferred_lft forever [root@x112 ~]# nmcli connection NAME UUID TYPE DEVICE eth2 4634ec80-1f55-43b4-9f7a-32296c517e8c 802-3-ethernet eth0 eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet --

 

#设置网卡开机或重启服务自动连接
[root@centos17 ~]# nmcli connection modify ens33 autoconnect yes
[root@centos17 ~]# service network restart

#设置网卡开机或重启服务后不连接
[root@centos17 ~]# nmcli connection modify ens33 autoconnect no
[root@centos17 ~]# service network restart

 

#单独修改网卡连接信息
[root@centos17 ~]# nmcli connection add con-name ens33 ifname ens33 type ethernet 
Connection 'default' (2a85a48e-5328-41bd-9d3d-5e1509f8a68b) successfully added.
[root@centos17 ~]# nmcli connection modify ens33 ipv4.addresses 192.168.0.105/24
[root@centos17 ~]# nmcli connection modify ens33 ipv4.dns 192.168.0.1
[root@centos17 ~]# nmcli connection modify ens33 ipv4.gateway 192.168.0.1
[root@centos17 ~]# nmcli connection modify ens33 ipv4.method manual
[root@centos17 ~]# 

  

 

为了方便操作,一般都需要安装命令补全功能软件,方便使用tab补全命令
[root@x112 ~]#yum -y install bash-com*
bash-completion-2.1-8.el7.noarch
[root@x112 ~]# 

  

 

 

  

posted on 2020-07-24 16:34  小阿峰  阅读(2010)  评论(0编辑  收藏  举报