# 使用 nmcli 配置网络
## 目标
完成本节后,学员应该能够通过 nmcli 和 NetworkManager 管理网络设置和设备。
## NetworkManager
NetworkManager 是监控和管理网络设置的守护进程。除了该守护进程外,还有一个提供网络状态信息的 GNOME 通知区域小程序。命令行和图形工具与 NetworkManager 通信,并将配置文件保存在 /etc/sysconfig/network-scripts 目录中。
设备是网络接口。连接是供设备使用的配置,其由一组设置组成。同一设备可能存在多个连接,但一次只能有一个保持活动状态。例如,系统通常可以使用 DHCP 提供的设置与网络连接。该系统偶尔需要连接到实验室或数据中心网络,它们仅使用静态联网。除了手动更改配置外,每一配置都可以存储为单独的连接。
## 通过 nmcli 查看网络信息
要显示所有连接的列表,可使用 nmcli con show。要仅列出活动的连接,可用 --active 选项。
~~~
[root@desktopX~]# nmcli con show
~~~
指定连接 ID(名称),查看该连接的详细信息。小写设置表示该连接的配置。设置和属性名称在 nm-settings man page 中予以定义。大写设置为活动数据。
~~~
[root@desktopX~]# nmcli con show "static-eth0"
~~~
nmcli 也可用于显示设备状态和详细信息。
~~~
[root@desktopX~]# nncli dev status
...
[root@desktopX~]# nmcli dev show eth0
~~~
## 通过 nmcli 创建网络连接
通过 nmcli 创建网络连接时,参数的顺序非常重要。首先为共用参数,必须包含类型和接口。接下来指定任何与类型有关的参数,最后指定 IP 地址、前缀和网关信息。可以为一个设备指定多个 IP 地址。其他设置可以在连接存在后作为修改进行设置,如 DNS 服务器。
### 创建新连接示例
1. 定义一个名为“default”的新连接,它将使用 DHCP 通过 eth0 设备的以太网连接自动连接。
~~~
[root@desktopX~]# nmcli con add con-name "default" type ethernet ifname eth0
~~~
2. 新建一个名为“static”的连接,并且指定 IP 地址和网关。不要自动连接。
~~~
[root@desktopX~]# nmcli con add con-name "static" ifname eth0 autoconnect no type ethernet ip4 172.25.X.10/24 gw4 172.25.X.254
~~~
3. 系统将在启动时通过 DHCP 连接进行自动连接。改为静态连接。
~~~
[root@desktopX~]# nmcli con up "static"
~~~
4. 改回到 DHCP 连接。
~~~
[root@desktopX~]# nmcli con up "default"
~~~
### 重要
如果静态连接丢失,默认连接将尝试自动连接。要以管理员身份禁用某一接口并防止自动连接,可使用 nmcli dev disconnect DEVICENAME。
### 类型选项
类型选项以所用的类型为基础。以太网类型的连接可能会选择性的指定连接的 MAC 地址。Wifi 类型的连接必须指定 SSID,可能还要指定额外的选项。还有许多其他类型可用,如网桥、绑定、组队、VPN 和 VLAN 等。要查看所有选项,可使用 nmcli con add help。
~~~
[root@desktopX~]# nmcli con add help
~~~
### 通过 nmcli 修改网络接口
可以通过 nmcli con mod 参数修改现有连接。参数为键/值对组合。键包含设置名称和属性名称。使用 nmcli con show "<ID>" 查看连接的当前值的列表。nm-setting man page 介绍了该设置,以及属性名称和用法。
~~~
[root@desktopX~]# nmcli con show "static"
~~~
#### 连接修改示例
1. 关闭自动连接。
~~~
[root@desktopX~]# nmcli con mod "static" connection.autoconnect no
~~~
2. 指定 DNS 服务器。
~~~
[root@desktopX~]# nmcli con mod "static" ipv4.dns 172.25.X.254
~~~
3. 一些配置参数可能增加或删除了值。在参数前添加 +/- 符号。添加辅助 DNS 服务器。
~~~
[root@desktopX~]# nmcli con mod "static" +ip4.dns 8.8.8.8
~~~
4. 替换静态 IP 和网关。
~~~
[root@desktopX~]# nmcli con mod "static" ipv4.addresses "172.25.X.10/24 172.25.X.254"
~~~
5. 添加没有网关的辅助 IP 地址。
~~~
[root@desktopX~]# nmcli con mod "static" +ip4.addressses 10.10.10.10/16
~~~
### 重要
nmcli con mod 将把设置保存到配置文件中。要激活更改,需要激活或重新激活该连接。
~~~
[root@desktopX~]# nmcli con up "static"
~~~
## nmcli 命令摘要
用于 nmcli 的基本设备和连接命令:
nmcli 命令
| 命令 | 用途 |
| --- | --- |
| nmcli dev status | 列出所有设备。 |
| nmcli con show | 列出所有连接。 |
| nmcli con up "<ID>" | 激活连接。 |
| nmcli con down "<ID>" | 取消激活连接。如果自动重新连接为是,则该连接将重新启动。 |
| nmcli dev dis <DEV> | 中断接口,并且暂时禁用自动连接。 |
| nmcli net off | 禁用所有管理的接口。 |
| nmcli con add ... | 添加新连接。 |
| nmcli con mod "<ID>" ... | 修改连接。 |
| nmcli con del "<ID>" | 删除连接。 |
### 注意
nmcli 命令也有交互式编辑模式。如需图形界面,请使用 nm-connection-editor。
## 参考
nmcli、nmcli-example 和 nm-settings man page