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