傳統上在 Enterprise Linux 設定網路時需要編輯不少檔案,由於編輯檔案會有設定錯誤、參數錯誤等一些人為問題,對於進階設定如網路介面綁定、LACP 等需求也較編輯,因此在 Enterprise Linux 第 7 版開始導入了 NetworkManager 這個服務,用來取代傳統 network 服務。
NetworkManager 是一個用於 Linux 發行版的網路連接管理工具,提供了一個集中式的方式來設定和管理網路組態。它主要是為了簡化多種網路組態設定和自動化連接行為而設計的。NetworkManager 支持各種常用連接類型,包括有線、無線,甚至是 VPN 和其他路由協議。
NetworkManager 提供了 2 大管理工具讓管理者進行設定: nmtui
與 nmcli
。
主要特點如下:
不論是 nmtui
或是 nmcli
工具,其設定完成後主要設定檔會放在 /etc/sysconfig/network-scripts/
目錄中,筆者不建議大家直接修改裡面的檔案,而比較推薦大家使用工具來產生,這樣可以產生一致性的設定檔與統一管理,也可以減少人為編輯錯誤的機率。
關於 DNS 的設定上,傳統需要手動修改 /etc/resolv.conf
檔案,在 NetworkManager 的統一管理之下我們也只要使用管理工具設定就可以了。
nmtui
全稱為 NetworkManager Text User Interface,使用這個工具可以使用 Text UI 模式進行網路設定,較為友善與方便。
我們假設要為主機上的網路連接埠設定 IP 如下:
ip link show
確認)有了上面的資訊後,我們先檢查系統上的網路連接埠資訊。
透過 ip
工具確認網路埠介面:
student$ sudo ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 56:6f:8c:e7:00:67 brd ff:ff:ff:ff:ff:ff
由以上輸出得知要設定網路介面為 enp5s0
,將之記錄下來。
有了硬體資訊後就可以設定 IP 資訊。使用 root
身份執行 nmtui
進行操作:
student$ sudo nmtui
輸入了指令後,會在螢幕顯示操作指引,使用鍵盤上的 [上]、[下]、[左]、[右]、[TAB]、[空白鍵] 與 [Enter] 進行選擇與確認。
以下為設定網路組態的具體流程參考:
選擇 [Edit a connection]。
找到網路 Port 代號,選擇 [Edit...]。
在 IPv4 CONFIGURATION 中選擇 Manual
,填入上述指定的值,並且留意 Automatically connect
有勾選起來,最後按 [OK]。
選擇 [Back] 回到上一層。
選擇 [Activate a connection] 重新啟用組態檔。
選擇剛剛設定好的組態檔,執行 [Deactivate]。
這一步需要在實體機上執行或是 VM 控制台上執行,若是遠端做的話就會斷線導致無法再連,因此要特別留意。
將停用的組態再次啟用,使其生效,點選 [Activate]。
完成後可以看到組態再次生效 (名稱前面有 * 號)
完成後選擇 [Quit] 離開程式,完成設定。
完成設定後,可以使用 ip
指令驗證是否有生效:
student$ ip addr
若在 inet
上看到 IP 的話,代表設定成功且已成效。
nmcli
(NetworkManager Command Line Interface) 是一個指令型的設定工具,相對於 UI 的操作來說就沒有這麼多的操作流程,但要使用指令的話就要先膫解設定參數,一旦熟悉後就可以很快的完成設定。
以下針對 nmtui
組態會用到的相關參數:
ipv4.addresses
: 設定 IPv4 地址和子網遮罩(以 CIDR 格式)。ipv4.gateway
: 設定 IPv4 預設閘道。ipv4.dns
: 設定 IPv4 DNS 伺服器。ipv4.method
: 設定 IPv4 配置方法為手動(manual
)。connection.autoconnect
: 設定該連接為開機時自動啟動。瞭解以上的參數後,我們先查出系統上有哪些網路組態。
使用 connection show 可以顯示被 NetworkManager 納管的組態檔:
student$ sudo nmcli connection show
NAME UUID TYPE DEVICE
enp5s0 d2d68553-f97e-7549-7a26-b34a26f29318 ethernet enp5s0
取得組態名稱 (NAME) 後就可以使用 connection modify
指進行修改:
student$ sudo nmcli connection modify enp5s0 \
> ipv4.addresses 192.168.1.30/24 \
> ipv4.gateway 192.168.1.1 \
> ipv4.dns 8.8.8.8 \
> ipv4.method manual \
> connection.autoconnect yes
完成後,使用 connection up
直接生效:
student$ sudo nmcli connection up enp5s0
這樣,就可以讓新的組態生效,若是使用遠端方式設定的話,也請使用這個方式,才不會在停用後無法連接。
有關 nmcli
與 nmtui
的進階用法,可以參考 Red Hat 官方文件: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-an-ethernet-connection_configuring-and-managing-networking#configuring-an-ethernet-connection-by-using-nmcli_configuring-an-ethernet-connection