# 使用 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