启用nmcli管理请看这篇:
解决nmcli未托管设备的问题

1、设置静态IP

1.1、添加连接配置

语法

nmcli connection add type ethernet con-name ${配置名称}  ifname ${设备名称} ipv4.addresses ${IP及掩码} ipv4.method ${连接模式: manual/auto}

假设当前的环境如下:

  • 需要新建的配置名称: ens33-static
  • 需要连接的设备名称: ens33
  • 需要设置的IP地址: 172.20.0.5
  • IP的子网掩码: 24
  • 连接模式: 手动配置(manual)自动获取(auto)

那么需要执行的命令则是:

nmcli connection add type ethernet con-name ens33-static  ifname ens33 ipv4.addresses 172.20.0.5/24 ipv4.method manual

执行结果

root@debian:~# nmcli connection add type ethernet con-name ens33-static  ifname ens33 ipv4.addresses 172.20.0.5/24 ipv4.method manual
连接 "ens33-static" (2cde3de4-88b6-4622-8cc2-2fba6189da4f) 已成功添加。

执行完成之后,我们可以使用下面的命令查看当前连接配置列表

nmcli connection

结果如下:

root@debian:/etc/NetworkManager# nmcli connection 
NAME              UUID                                  TYPE      DEVICE 
ens33-static      2cde3de4-88b6-4622-8cc2-2fba6189da4f  ethernet  ens33  
ens34-static      490160c8-6f84-4ae2-bfef-bf85157f5ef2  ethernet  ens34  
有线连接 1        f396cc7a-5bf1-37f1-b148-12b0843d149d  ethernet  --     
Ifupdown (ens34)  6f9b7967-f4da-d090-abd1-b5a6b9fd8e4b  ethernet  --   

然后我们可以删除默认的连接配置

 nmcli connection delete 有线连接\ 1

执行结果

root@debian:/etc/NetworkManager# nmcli connection 
NAME              UUID                                  TYPE      DEVICE 
ens33-static      2cde3de4-88b6-4622-8cc2-2fba6189da4f  ethernet  ens33  
ens34-static      490160c8-6f84-4ae2-bfef-bf85157f5ef2  ethernet  ens34  
有线连接 1        f396cc7a-5bf1-37f1-b148-12b0843d149d  ethernet  --     
Ifupdown (ens34)  6f9b7967-f4da-d090-abd1-b5a6b9fd8e4b  ethernet  --     
root@debian:/etc/NetworkManager# nmcli connection delete 有线连接\ 1 
成功删除连接 "有线连接 1" (f396cc7a-5bf1-37f1-b148-12b0843d149d)。
root@debian:/etc/NetworkManager# nmcli connection 
NAME              UUID                                  TYPE      DEVICE 
ens33-static      2cde3de4-88b6-4622-8cc2-2fba6189da4f  ethernet  ens33  
ens34-static      490160c8-6f84-4ae2-bfef-bf85157f5ef2  ethernet  ens34  
Ifupdown (ens34)  6f9b7967-f4da-d090-abd1-b5a6b9fd8e4b  ethernet  --  

1.2、启用连接

语法

nmcli connection up ${连接配置名称}

执行结果

root@debian:/etc/NetworkManager# nmcli connection up ens33-static
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

然后查看IP:

root@debian:/etc/NetworkManager# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens33: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 00:0c:29:19:62:ae brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.5/24 brd 172.20.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::32cc:fd67:4fe2:a9bc/64 scope link tentative noprefixroute 
       valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:19:62:b8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.5/24 brd 10.0.5.255 scope global noprefixroute ens34
       valid_lft forever preferred_lft forever
    inet 10.0.5.4/24 brd 10.0.5.255 scope global secondary dynamic ens34
       valid_lft 762sec preferred_lft 762sec
    inet6 fd15:4ba5:5a2b:1001:4aa6:e7d5:1e57:3c6/64 scope global dynamic noprefixroute 
       valid_lft 86373sec preferred_lft 14373sec
    inet6 fe80::f95d:a50b:a701:b20/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

这时候看到有两个IP,这是因为当前系统有两个网络管理程序,所以冲突了,只需要修改networking服务的配置文件即可:

root@debian:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
#auto ens33
#iface ens33 inet dhcp 

#auto ens34
#iface ens34 inet dhcp
root@debian:~# 

然后重新应用连接:

root@debian:~# nmcli device reapply ens34
成功重新应用连接到设备 "ens34"。

然后再查看IP
在这里插入图片描述
这时候,IP已经正确了。

1.3、修改/添加配置参数

1.3.1、设置DNS

单独的设置了IP还是无法解析域名的,所以我们需要添加DNS解析服务器过程如下:

查看连接UUID

root@debian:~# nmcli connection 
NAME              UUID                                  TYPE      DEVICE 
ens33-static      2cde3de4-88b6-4622-8cc2-2fba6189da4f  ethernet  ens33  
ens34-static      490160c8-6f84-4ae2-bfef-bf85157f5ef2  ethernet  ens34  
dhcp              c17feb8a-4e17-4bc3-a252-54b08a762d70  ethernet  --     
ens33-dhcp        11f8a609-63dd-4d06-94c6-3a77e8efaf77  ethernet  --     
Ifupdown (ens33)  108b861f-800d-98ce-9ab4-4ed2c57e11f1  ethernet  --   

添加DNS地址

nmcli connection modify uuid 490160c8-6f84-4ae2-bfef-bf85157f5ef2 ipv4.dns 114.114.114.114

配置过程:

root@debian:~# ping baidu.com
ping: baidu.com: 域名解析暂时失败
root@debian:~# nmcli connection modify 
filename             help                 id                   Ifupdown\ \(ens33\)  path                 --temporary          uuid                 
root@debian:~# nmcli connection modify uuid 
108b861f-800d-98ce-9ab4-4ed2c57e11f1  11f8a609-63dd-4d06-94c6-3a77e8efaf77  2cde3de4-88b6-4622-8cc2-2fba6189da4f  490160c8-6f84-4ae2-bfef-bf85157f5ef2  c17feb8a-4e17-4bc3-a252-54b08a762d70
root@debian:~# nmcli connection modify uuid 490160c8-6f84-4ae2-bfef-bf85157f5ef2 
Display all 229 possibilities? (y or n)
root@debian:~# nmcli connection modify uuid 490160c8-6f84-4ae2-bfef-bf85157f5ef2 ipv4.dns 114.114.114.114
root@debian:~# nmcli device reapply ens34
成功重新应用连接到设备 "ens34"。
root@debian:~# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=128 time=46.6 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=128 time=46.6 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 6ms
rtt min/avg/max/mdev = 46.550/46.596/46.643/0.220 ms