Centos7網絡管理NetworkManager中nmcli工具使用


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 ~]# 

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM