nmcli命令行网络配置

nmcli是基于命令行的网络管理配置工具(command-line tool for controlling NetworkManager),该命令可以完成所有的网络配置工作,并直接写入了配置文件,永久生效(无需重启网络连接服务)。
语法:nmcli [ 选项 ] 对象 { 参数 | help }
这里的对象参数可以用全称也可以用简称,最少可以只用一个字母。对象中常用的是device(网络接口对象)connection(网络连接对象)

1.查看网络接口信息

nmcli         ##查看ip信息
nmcli device status   ##所有接口的简略信息
nmcli device show      ##所有接口的详细信息,device可以缩写为d,de,dev...
nmcli device show ens160    ##指定的ens160网络接口的详细信息

2.查看网络连接信息

nmcli connection show   ##所有连接的简略信息,connection可以缩写为c,co,con...
nmcli connection show --active  ##显示激活的连接
nmcli connection show inteface-name   ##某个接口的详细连接信息

请理解: ethernet类型的网络连接信息就存放于/etc/sysconfig/network-scripts目录下,这个目录也就是网络连接配置目录

[root@hollowman ~]# cd /etc/sysconfig/network-scripts/ 
[root@hollowman network-scripts]# ls  
ifcfg-ens160 

可以看到该目录下有一个以 “ifcif-”+“网络连接名ens160”网络连接配置文件。这是系统默认生成的与网络接口名相同的网络连接名,后面我们可以创建其他的网络连接,同样,该目录下也会相应生成不同的网络连接配置文件。
查看一下网络连接:

[root@hollowman network-scripts]# nmcli c show
NAME      UUID                                  TYPE      DEVICE 
ens160  12c0daf8-0019-47fb-b763-64e5cbfda958  ethernet  ens160 
virbr0    0a8c94be-61e4-4b82-84d1-afebef9a2aab  bridge    virbr0 

可以发现有两个网络连接,其中ens160的网络连接配置文件就是上面的那个ifcfg-ens160,而virbr0则是一个虚拟网桥连接,暂时不用理睬。

3.创建一个网络连接

nmcli connection add con-name ens160-2 type ethernet ifname ens160 ipv4.method manual ipv4.addresses 192.168.100.20/24 ipv4.gateway 192.168.100.1 ipv4.dns 192.168.100.1

con-name:连接名;
ifname:网络接口名;
type:一般就是ethernet;
ipv4.address:ip地址/24;
ipv4.gateway:网关;
ipv4.dns:域名;
ipv4.addresses:指定网卡ipv4的地址;
ipv4.gateway:指定网卡的ipv4网关。
其实记不住没关系,多用双Tab就清楚了。
注意两个重要参数:
autoconnect yes :对应配置文件中的 ONBOOT =yes,默认为yes
autoconnect no :对应配置文件中的 ONBOOT =no
ipv4.method auto :对应配置文件中的 BOOTPROTO=dhcp,默认为auto
ipv4.method manual :对应配置文件中的 BOOTPROTO=none

[root@hollowman ~]# nmcli connection add con-name ens160-2 type ethernet ifname ens160  ipv4.addresses 192.168.100.20/24 ipv4.gateway 192.168.100.1 ipv4.dns 192.168.100.1
Connection 'ens160-2' (12c0daf8-0019-47fb-b763-64e5cbfda958) successfully added.

创建问连接后,网络连接配置目录 /etc/sysconfig/network-scripts/ 下就会多出一个ifcfg-ens160-2的配置文件了,但因为他使用的是ens160网络接口,而系统已经默认有一个ens160连接并占用了这个网络接口,因此它暂时不能生效。

[root@hollowman network-scripts]# nmcli c show
NAME      UUID                                  TYPE      DEVICE 
ens160  12c0daf8-0019-47fb-b763-64e5cbfda958  ethernet  ens160 
virbr0    0a8c94be-61e4-4b82-84d1-afebef9a2aab  bridge    virbr0 
ens160-2    307da4b0-6327-4b1d-ad63-06103994c145  ethernet  --    

如上,ens160-2DEVICE为–,也就是没有生效,如何生效呢?那就是下一步的内容了。

4.关闭连接和激活连接

关闭链接

nmcli connection down 网络连接名
nmcli device disconnect 网络接口名

激活连接

nmcli connection up 网络连接名
nmcli device connect 网络接口名

这两种方式有什么区别呢?
通过connection对象关闭其中一个网络连接后,会自动激活其他的网络连接,除非其他网络连接设置为了手动连接(method auto,也就是BOOTPROTO=dhcp)或者不存在其他网络连接。
如:nmcli c down ens160后,ens160连接将关闭,而ens160-2将自动激活
但是,通过device对象关闭某个网络接口,则直接关闭该网络接口(包含已经激活的网络连接),因此其他网络连接也就不会自动激活。
建议使用 nmcli device disconnect 网络接口名,因为这样会更加可控。

5.修改网络连接配置

将网络连接的获取方式设置成手动(如果BOOTTROTO=dhcp 则修改为BOOTPROTO=none)

nmcli connection modify ens160-2 ipv4.method manual

设置完之后,再去通过nmcli c down ens160关闭ens160,则ens160-2不会激活
其他参数设置同上,如果配置未设置则新建,已经存在但参数不同则修改,否则不做修改。

删除DNS
nmcli connection modify ens160-2 -ipv4.dns 192.168.100.1 (注意这里的减号,后面的ip必须和原来配置dns的ip地址相同)

6.重载网络连接

nmcli connection reload 

重载所有网络连接,但不会立即生效,需重启NetworkManager服务才能生效

nmcli connection reload ens160-2 

重载ens160-2这个网络连接
重载网络连接一般在手动修改网络连接配置文件(如ifcfg-ens160-2)后使用,同时还需要systemctl restart NetworkManager才能生效。比关闭和激活网络连接要多一个步骤,也算是多一个使用的方法吧。

7.删除网络连接

nmcli connection delete 网络连接名

猜你喜欢

转载自blog.csdn.net/ymz641/article/details/111465599