1. 程式人生 > 實用技巧 >使用nmcli命令配置網路

使用nmcli命令配置網路

前言

nmcli是redhat7或者centos7之後的命令該命令可以完成網絡卡上所有的配置工作,並且可以寫入配置檔案,永久生效

1、NetworkManager

NetworkManager是管理和監控網路設定的守護程序,裝置既就是網路介面,連線是對網路介面的配置,一個網路介面可以有多個連線配置,但同時只有一個連線配置生效。

2、常用命令列表

nmcli connection show                   檢視所有網路連線
nmcli connection show -active           檢視活動的網路連線
nmcli connection show 'DEVICE'          檢視指定網絡卡的詳細資訊
nmcli device status                     顯示裝置的連線狀態
nmcli device show                       顯示所有裝置網路裝置詳情資訊
nmcli device show 'DEVICE'              顯示指定網路裝置的詳細資訊
nmcli connection reload                 重新載入配置
nmcli connection add help               檢視幫助

一、檢視網絡卡資訊命令

1、檢視所有網路連線

[root@localhost ~]# nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
ens160  cf57c3f1-7eaf-489c-86d4-2ebbc39f6105  ethernet  ens160 
 //ens160就是我的網絡卡

2、檢視活動的網路連線

[root@localhost ~]# nmcli connection show -active
NAME    UUID                                  TYPE      DEVICE 
ens160  cf57c3f1-7eaf-489c-86d4-2ebbc39f6105  ethernet  ens160 
 //我這隻有一張網絡卡,所以只有一個網絡卡資訊

3、檢視指定網絡卡的詳細資訊

[root@localhost ~]# nmcli connection show ens160 
connection.id:                          ens160
connection.uuid:                        cf57c3f1-7eaf-489c-86d4-2ebbc39f6105
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens160
connection.autoconnect:                 是
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0(default)
connection.auth-retries:                -1
connection.timestamp:                   1595930397
connection.read-only:                   否
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1(default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     未知
connection.lldp:                        default
connection.mdns:                        -1(default)
connection.llmnr:                       -1(default)
connection.wait-device-timeout:         -1
 //這裡顯示的都是網絡卡詳細資訊

4、顯示裝置的連線狀態

[root@localhost ~]# nmcli device status 
DEVICE  TYPE      STATE   CONNECTION 
ens160  ethernet  已連線  ens160     
lo      loopback  未託管  --
 //我這已經連線上了

5、顯示所有裝置網路裝置詳情資訊

[root@localhost ~]# nmcli device show
GENERAL.DEVICE:                         ens160
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:CD:6A:1B
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已連線)
GENERAL.CONNECTION:                     ens160
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               開
IP4.ADDRESS[1]:                         10.0.0.140/24
IP4.GATEWAY:                            10.0.0.2
IP4.ROUTE[1]:                           dst = 10.0.0.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 10.0.0.2, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::ca08:fe32:678c:b392/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10(未託管)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = ::1/128, nh = ::, mt = 256

6、顯示指定網路裝置的詳細資訊

[root@localhost ~]# nmcli device show ens160 
GENERAL.DEVICE:                         ens160
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:CD:6A:1B
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已連線)
GENERAL.CONNECTION:                     ens160
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               開
IP4.ADDRESS[1]:                         10.0.0.140/24
IP4.GATEWAY:                            10.0.0.2
IP4.ROUTE[1]:                           dst = 10.0.0.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 10.0.0.2, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::ca08:fe32:678c:b392/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

二、網絡卡狀態修改命令

1、啟用網路連線

[root@localhost ~]# nmcli connection up ens160 
連線已成功啟用(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/2)

2、停用網路連線(可以被自動啟用)

[root@localhost ~]# nmcli connection down ens160 
成功停用連線 "ens160"(D-Bus 活動路徑:/org/freedesktop/NetworkManager/ActiveConnection/2)

3、刪除網路連線的配置檔案

[root@localhost ~]# nmcli connection delete ens160 

4、重新載入網路配置檔案

[root@localhost ~]# nmcli connection reload 

三、修改網絡卡配置

1、設定IP地址獲取方式是手動(none)或者 DHCP

[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 10.0.0.140/24
 //這是修改為BOOTPROTO=none
 //IPADDR=10.0.0.140
 //PREFIX=24             這個代表24位掩碼
[root@localhost ~]# nmcli connection modify ens160 ipv4.method auto 
 //周是修改BOOTPROTO=dhcp

2、設定自動啟動網絡卡

[root@localhost ~]# nmcli connection modify ens160 connection.autoconnect yes
 //將ONBOOT=on 改成 ONBOOT=yes

3、修改IP地址

[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses 10.0.0.140/24
 //這樣修改後IPADDR=IP ; NETMASK=掩碼 ;然後會多出一個 ipv4的字首 :PREFIX=掩碼位 例如 PREFIX=24 表示24的掩碼字首

4、新增第二個IP地址

[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 10.0.0.141/24
 //IPADDR1=10.0.0.141
 //PREFIX1=24

5、刪除第二個IP地址

[root@localhost ~]# nmcli connection modify ens160 -ipv4.addresses 10.0.0.141/24

6、修改閘道器

[root@localhost ~]# nmcli connection modify ens160 ipv4.gateway 10.0.0.2
 //GATEWAY=10.0.0.2

7、新增DNS

[root@localhost ~]# nmcli connection modify ens160 ipv4.dns 8.8.8.8
 //DNS1=8.8.8.8

8、新增第二個DNS

[root@localhost ~]# nmcli connection modify ens160 +ipv4.dns 114.114.114.114
 //DNS2=114.114.114.114

9、刪除第二個DNS

[root@localhost ~]# nmcli connection modify ens160 -ipv4.dns 114.114.114.114

10.檢視剛剛修改的IP資訊

[root@localhost ~]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.140  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::ca08:fe32:678c:b392  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:cd:6a:1b  txqueuelen 1000  (Ethernet)
        RX packets 2859  bytes 234214 (228.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1987  bytes 197799 (193.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 124  bytes 10508 (10.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 124  bytes 10508 (10.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0