nmcli工具配置连接增删改查实例
- (一)网络连接配置基本项目
 - 1.网络接口配置
 - 2.主机名配置
 - 3.DNS服务器配置
 
- (二)网络连接配置文件
 - (三)网络配置方法
 - (四)nmcli工具配置连接管理
 - 1.增
 - 2.查
 - 3.改
 - 4.删
 - 5.配置DNS域名解析器
 
(一)网络连接配置基本项目
1.网络接口配置
- Linux支持多种网络接口设备类型,一般情况下,Linux均能自动检测和识别网络接口设备(如网卡)。
 
在实际应用中主要是网卡配置,包括IP地址、子网掩码、默认网关等。设置IP地址和子网掩码后,主机就可与同网段的其他主机进行通信,但是要与不同网段的主机进行通信,还必须设置默认网关地址。默认网关地址是一个本地路由器地址,用于与本网段之外的主机进行通信。
2.主机名配置
主机名是用于标识一台主机的名称,在网络中主机名具有唯一性
3.DNS服务器配置
主机作为DNS客户端,访问DNS服务器来进行域名解析,使用目标主机的域名与目标主机进行通讯。
(二)网络连接配置文件
- /etc/hosts:
 
存储主机名和IP地址映射,用来解析无法用其他方法解析的主机名。
- /etc/resolv.conf:
 
与域名解析有关的设置
- /etc/sysconfig/network-scripts/ifcfg-<接口名>
 
对每个网络接口,都有一个相应的接口配置文件,提供该网络接口的特定信息。如果启用NetworkManager,则接口名称为网络连接名。
- /etc/NetworkManager/system-connections/
 
保存VPN、移动宽带、PPPoE连接配置信息。
网卡的设备名、IP地址、于网掩码及默认网关等配置信息是保存在网卡的配置文件中的,一块网卡对应一个配置文件,该配置文件位于/etc/sysconfig/network-scripts目录中,其配置文名的格式为ifcfg-<接口名称>。
例如,一个网卡配置文件的主要内容如下:
TYPE=Ethemet		##网卡类型
BOOTPROTO=dhcp		##自动获得P地址)
DEFROUTE=yes 
PEERDNS=yes		##是否允许自动修改/ctc/resolv.conf文件
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes		##是否支持IPv6	
IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes
IPV6_ PEERROUTES=yes IPV6_FAILURE_FATAL=no
NAME=eno16777736		##该网卡设备名称	
UUID=bb75c9b2-fbd6-4c1d-8455-al1e0b7ee967
DEVICE=eno16777736		##该网卡设备名称	
ONBOOT=no		##计算机启动时是否启用(激活)该网卡
 
(三)网络配置方法
- 使用命令行工具进行配置
 - 直接编辑网络相关文件
 - 在图形界面使用网络配置工具进行配置
 
无论是什么配置,实际上都是通过修改相关的配置文件来实现的。
参考文章网络配置及ssh服务
(四)nmcli工具配置连接管理
连接是对网络接口的配置。一个网络接口可以有多个连接配置,但同时一个连接配置生效。配置和管理连接是一项最基本的网络配置工作。
- 实例:
增加defualt、NET01、NET02三个连接 
| 连接名称 | IP | 修改后的IP | 
|---|---|---|
| defualt | 10.0.0.110 | 10.0.0.210 | 
| NET01 | 10.0.0.111 | 10.0.0.211 | 
| NET02 | 10.0.0.112 | 10.0.0.212 | 
1.增
在增加连接前先确定系统的网络接口设备名是什么输入:nmcli d(显示网络接口设备)可跳转到2的查看了解更多。
# nmcli connection add con-name default autoconnect no type ethernet ifname ens160 ip4 10.0.0.110/24 gw4 10.0.0.2 
# nmcli connection add con-name NET01 autoconnect no type ethernet ifname ens160 ip4 10.0.0.111/24 gw4 10.0.0.2 
 
其中:
 con-name 用于定义连接名称(该名称也可以用双引号括起来)
 type 定义连接类型
 ifname 指定网络接口
 ip4 指定IPv4的地址
 gw4指定网关
如果没有带任何IP参数如ip、gw,则IP地址会通过DHCP自动获取。
nmcli connection add con-name NET02 autoconnect no type ethernet ifname ens160
 
- 激活与禁用连接
创建连接后没有绑定网络接口,该连接并没有生效。可执行以下命令启动(激活)指定连接: 
//nmcli connection up 连接名
# nmcli connection up default   //激活default连接
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
通过输入ip a 查看
// nmcli connection down 连接名   禁用某连接
 

同一时间只能有一个连接绑定在一个网络接口上。可以多创建几个连接,以便设置几套配置文件,需要时进行临时切换。
2.查
//显示所有连接
# nmcli connection show
NAME     UUID                                  TYPE      DEVICE 
default  417fd184-fe46-4d3e-a8af-1406ea2a561f  ethernet  ens160 
ens160   92b911a4-0722-3fdc-b501-41871539cbf6  ethernet  --     
NET01    cd4146d9-f5b4-4e0a-b359-40eae0254620  ethernet  --     
NET02    cd11168e-f69a-4147-9d1f-64fbc635b248  ethernet  --     # nmcli d			//显示网络接口设备
DEVICE  TYPE      STATE      CONNECTION 
ens160  ethernet  connected  ens160     
lo      loopback  unmanaged  --   
 

其中:
 name 网络接口名
3.改
可以根据需求使用子命令modify修改连接配置
尝试激活NET02连接,输入:
# nmcli c up NET02
Error: Connection activation failed: IP configuration could not be reserved (no available address, timeout, etc.)
Hint: use 'journalctl -xe NM_CONNECTION=cd11168e-f69a-4147-9d1f-64fbc635b248 + NM_DEVICE=ens160' to get more details. 
报错!!!
网络连接激活失败,具体原因是IP配置无法被预留(可能是因为没有可用的地址、超时等原因)。

那么就要为NET02连接增加IP
//因为刚开始NET02设置的就是自动获取IP,而自动获取IP失败,所以要为连接配置手动IP
# nmcli connection modify NET02 ipv4.method manual
//为连接增加一个IP
# nmcli connection modify NET02 +ipv4.addresses 10.0.0.112/24
//为连接增加一个网关
# nmcli connection modify NET02 ipv4.gateway 10.0.0.2
//激活NET02,成功!!!
# nmcli c up NET02
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
 

- 三个连接都激活成功后,来修改三个连接的IP,修改命令如下:
 
# nmcli connection modify default ipv4.addr 10.0.0.210
# nmcli connection modify NET01 ipv4.addr 10.0.0.211
# nmcli connection modify NET02 ipv4.addr 10.0.0.212
 
//记得一定要重启网络服务
# systemctl restart NetworkManager
//也可以重新加载配置
# nmcli connection reload
 
4.删
对不需要的连接可以执行删除命令:
# nmcli connection delete 连接名
 
5.配置DNS域名解析器
三个连接都能激活成功,来尝试ping外网一下,看看能否访问外网
# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=128 time=14.6 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=128 time=0.266 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=128 time=0.315 ms
^Z
[3]+  Stopped                 ping 10.0.0.2
# ping www.baidu.com
ping: www.baidu.com: Name or service not known
//显然外网访问失败
 
所以要配置DNS域名解析器,命令如下:
# nmcli con mod default ipv4.dns "114.114.114.114 8.8.8.8"
# nmcli con mod NET01 ipv4.dns "114.114.114.114 8.8.8.8"
# nmcli con mod NET02 ipv4.dns "114.114.114.114 8.8.8.8"
//记得一定要重启网络服务
# systemctl restart NetworkManager
# ping www.baidu.com
PING www.a.shifen.com (153.3.238.110) 56(84) bytes of data.
64 bytes from 153.3.238.110 (153.3.238.110): icmp_seq=1 ttl=128 time=35.7 ms
64 bytes from 153.3.238.110 (153.3.238.110): icmp_seq=2 ttl=128 time=274 ms
^Z
[4]+  Stopped                 ping www.baidu.com 
更多nmcli工具的详细操作可以参考Linux中命令行界面nmcli工具