Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

nmcli命令的使用

$
0
0

nmcli 命令中的 nm 是 NetworkManager 的缩写

所以,从字面上理解, nmcli 是 NetworkManager 的客户端命令

nmcli 是 NetworkManager 的命令行控制器

我们说过 centos 6 中 NetworkManager 还不成熟,反而会影响我们管理网络,所以,虽然 nmcli 命令在 centos 6 中也存在,但是 nmcli 的功能也较为薄弱,在 centos6 中不会经常使用,因为一般我们不会在 centos6 中安装 NetworkManager 服务,或者都会故意将它停止。

而在 cetnos 7 中 ,NetworkManager 已经较为完备,而且 centos 7 默认就是使用 NetworkManager 服务对系统进行网络管理,所以 nmcli 命令在 7 中会经常用到,而且 nmcli 命令在 7 中的功能已经变得较为强大。

nmcli 命令的语法

nmcli [ OPTIONS ] OBJECT { COMMAND | help }

nmcli 最常用的对象如下

connection

此对象用于显示或管理 IP 地址, connection 可以缩写成 con

device

此对象用于显示或管理网络接口的, device 可以缩写成 dev

注意, nmcli 命令的修改操作是针对于配置文件的,也就是说使用 nmcli 命令执行修改操作,相当于直接修改网卡对应的配置文件。

nmcli 是由很多对象和子命令组成的,所以,如果我们忘记了我们要操作的对象的具体名称,或者忘记了对象对应有哪些子命令,我们可以使用 tab 键补全,这个功能非常的方便实用


nmcli命令的使用

我们先看一下 nmcli device 对象的一些用法

查看当前主机上的网络接口设备的状态

(网卡类型,连接状态,配置文件名称等)

nmcli device status


nmcli命令的使用

我们可以看到,当前只有一块网卡处于连接状态,其余的网卡都是断开状态或者未被管理状态

我们还可以查看各个设备的更加详细的信息

nmcli device show


nmcli命令的使用

当然,如果只是想查看某个网卡的详细信息,也可以指定确定的接口查看


nmcli命令的使用

我们发现, eno33554960 接口是未连接状态,那么我们可以连接它


nmcli命令的使用

当然,我们也可以使用 nmcli device disconnect eno33554960 去禁用网卡

其实 nmcli device disconnect eno33554960 这条命令与如下命令的作用是一样的

nmcli connection down eno33554960

当然,我们也可以使用 nmcli connection up eno33554960 来启用网卡


nmcli命令的使用

我们也可以使用 nmcli connectio show 命令查看已经处于连接状态的接口


nmcli命令的使用

我们现在去修改 eno33554960 的配置文件,

将配置文件中的 name 字段的值从 eno33554960 修改为 test- eno33554960

然后使用 nmcli con reload 命令重新加载配置


nmcli命令的使用

我们发现,修改配置文件中 name 字段以后,使用 nmcli 命令重新加载配置后,网卡对应的连接名称也已经发生了改变。


nmcli命令的使用

其实经过上述的小例子我们可以发现,网卡设备和网卡配置文件其实原本是分离的,也就是说,

网卡的配置文件和实际的网卡设备原本没有任何关系,如果配置文件脱离了网卡设备,那么它只是一个文件而已,但是,如果这个配置文件与某个网卡设备绑定以后,配置文件中的设置,将会映射到被绑定的网卡设备上,这个时候,我们修改配置文件,才相当于修改网卡的属性,如果配置文件不与网卡绑定,那么它则只是一个纯文本文件罢了。

怎么证明我们上面描述的观点呢,现在,我们使用 nmcli 命令,创建一个网卡配置文件,命令如下


nmcli命令的使用

我们发现,在网卡配置文件目录中,已经生成了一个配置文件


nmcli命令的使用

而且我们指定的信息已经生成了,可以看到,如果这个配置文件生效,

那么它绑定的设备将为 eno33554960 ,绑定以后,这个配置文件中的信息将映射成网卡的属性。


nmcli命令的使用

但是我们发现,其实对应的配置文件,还没有绑定到对应的 eno33554960 网卡上,也就是说,现在,配置文件还只是一个文本文件而已,并没有对网卡设备产生任何的影响


nmcli命令的使用

我们可以使用 nmcli 命令,让 home 配置文件生效, home 配置文件生效后, home 中的信息将映射为 eno33554960 网卡的属性。


nmcli命令的使用

现在,我们发现 eno33554960 网卡的 IP 地址等信息已经改变为 ifcfg-home 配置文件中的设置信息。


nmcli命令的使用

我们在切换回原来的配置文件


nmcli命令的使用

我们在使用 nmcli connection show 的时候,没有生效的配置文件也会显示出来


nmcli命令的使用

我们可以使用 active 选项,只查看生效的配置


nmcli命令的使用

那么,我们能不能通过 nmcli 命令删除刚才的 home 配置文件呢,必须能啊,命令如下


nmcli命令的使用

再次查看配置文件的目录,即可发现 ifcfg-home 已经消失了

上面的操作,可以证明, nmcli 命令其实是直接操作于配置文件的

那么,我们应该可以使用 nmcli 命令修改配置文件中的信息

我们先查看一下配置文件中的信息, name 字段是 test- eno33554960

那么,我们使用 nmcli 命令去修改它


nmcli命令的使用

注意,修改时要使用 connection 对象的 modify 命令,我们发现,修改完成后,立即就生效了,甚至不用重新加载配置文件。


nmcli命令的使用
nmcli命令的使用

既然能够修改配置文件中的 name 字段,那么能不能修改网卡的 IP 地址呢,必须可以,命令如下


nmcli命令的使用

但是请注意,我们虽然修改了配置文件,但是新的配置还没有生效,我们需要重启网络服务,新的设置才能生效,使用 nmcli connection reload 重新加载配置不会让新的 IP 地址生效


nmcli命令的使用

还能添加 IP 地址,但是注意,使用这种方式添加的 IP 地址,

使用 ifconfig 命令无法查看到,只能使用 ip addr show 命令查看到


nmcli命令的使用

你可能还会经常改这些东西。

nmcli con mo d "eth1" connection.autoconnect no

nmcli con mod "eth1" ipv4.dns 172.25.X.254

nmcli con mod "eth1" +ipv4.dns 8.8.8.8

nmcli con mod "eth1" -ipv

Viewing all articles
Browse latest Browse all 11063

Trending Articles