首頁 > 軟體

如何在RHEL/CentOS 8中使用NetworkManager管理網路

2020-06-16 16:30:38

在RHEL和CentOS 8中,網路服務由NetworkManager守護行程管理,它用於動態地設定和控制網路裝置,並在它們可用時保持連線和活動。

NetworkManager具有許多優點,比如支援使用命令列介面和圖形化使用者介面工具進行簡單的網路設定和管理,通過D-Bus提供API,允許查詢和控制網路設定,支援設定靈活性等。

此外,還可以使用檔案和Cockpit Web控制台設定NetworkManager,它支援使用自定義指令碼來根據連線狀態啟動或停止其他服務。

在進行下一步之前,以下是有關CentOS / RHEL 8中聯網的其他一些要點:

  • 仍然支援傳統的ifcfg型別設定(例如ifcfg-eth0,ifcfg-enp0s3)檔案。
  • 網路指令碼已棄用,預設情況下不再提供。
  • 最少的安裝提供了通過nmcli工具呼叫NetworkManager的ifup和ifdown指令碼的新版本。
  • 要執行ifup和ifdown指令碼,必須執行NetworkManager。

在CentOS/RHEL 8上安裝NetworkManager

NetworkManager應該預先安裝在CentOS / RHEL 8基本安裝上,否則,您可以使用DNF軟體包管理器進行安裝,如圖所示。

# dnf install NetworkManager

NetworkManager的全域性組態檔位於/etc/NetworkManager/NetworkManager.conf中,其他組態檔位於/etc/NetworkManager/中。

在CentOS/RHEL 8上使用Systemctl管理NetworkManager

在CentOS/RHEL 8和其他採用systemd的現代Linux系統(系統和服務管理器)中,使用systemctl工具管理服務。

以下是用於管理NetworkManager服務的有用的systemctl命令。

檢查NetworkManager的狀態

預設情況下,最小安裝的CentOS/RHEL 8應該已啟動NetworkManager並被啟用以在啟動時自動啟動。 您可以使用以下命令來檢查NetworkManager是否處於活動狀態,已啟用並列印NetworkManager的執行時狀態資訊。

# systemctl is-active NetworkManager
# systemctl is-enabled NetworkManager
# systemctl status NetworkManager

啟動NetworkManager

如果NetworkManager沒有執行,則可以通過簡單執行來啟動它。

# systemctl start NetworkManager

停止NetworkManager

要出於某種原因停止或停用NetworkManager,請發出以下命令。

# systemctl stop NetworkManager

重新啟動NetworkManager

如果您對介面組態檔或NetworkManager守護程式的設定(通常位於/etc/NetworkManager /目錄下)進行了任何更改,則可以重新啟動(停止然後再啟動)NetworkManager以應用更改,如圖所示。

#systemctl restart NetworkManager

重新載入NetworkManager

要在不重新啟動服務的情況下重新載入NetworkManager守護程式的設定(而不是systemd的單元組態檔),請執行以下命令。

# systemctl reload NetworkManager

使用NetworkManager工具並使用ifcfg檔案

NetworkManager支援一些工具供使用者與其互動,這些工具是:

  • nmcli–用於設定網路的命令列工具。
  • nmtui–一個簡單的基於curses的文字使用者介面,還用於設定和管理newtwork介面連線。
  • 其他工具包括nm-connection-editor,控制中心和網路連線圖示(均在GUI下)。

要列出NetworkManager檢測到的裝置,請執行nmcli命令。

# nmcli device
或者
# nmcli device status

要檢視所有活動連線,請執行以下命令(注意,如果沒有-a,它將列出可用的連線組態檔)。

# nmcli connection show -a

檢視活動網路連線

在CentOS/RHEL 8上設定靜態IP地址

特定於網路介面的組態檔位於/etc/sysconfig/Network -scripts/目錄中。您可以編輯這些檔案中的任何一個,例如,為您的CentOS/RHEL 8伺服器設定一個靜態IP地址。

# vi /etc/sysconfig/network-scripts/ifcfg-ens33

下面是設定靜態IP地址的設定範例。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ffd19ca9-17a4-41f0-ab82-4d40a5df0337
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.0.110
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
PEERDNS=no

檢視:

ifconfig

檢視網路介面設定

儲存更改後,需要重新載入所有連線組態檔或重新啟動NetworkManager以應用新更改。

# nmcli connection reload
或者
# systemctl restart NetworkManager

基於網路連線啟動或停止網路服務/指令碼

NetworkManager有一個有用的選項,允許使用者執行服務(如NFS、SMB等)或基於網路連線的簡單指令碼。

例如,如果希望使用sshfs在本地自動掛載遠端目錄、掛載SMB共用或在網路之間切換後掛載NFS共用。您可能希望在NetworkManager啟動並執行(所有連線都處於活動狀態)之前不執行此類網路服務。

此功能由NetworkManager-dispatcher服務提供(必須啟動該服務並使其在系統啟動時自動啟動)。服務執行後,可以將指令碼新增到/etc/networkmanager/dispatcher.d目錄。

所有指令碼必須是可執行和可寫的,並擁有根,例如:

# chown root:root /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh
# chmod 755 /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh

重要提示:dispatcher指令碼將在連線時按字母順序執行,在斷開連線時按字母順序執行。

使用舊版網路指令碼

如前所述,網路指令碼在CentOS/RHEL 8中被棄用,預設情況下不會安裝。如果您仍然想使用網路指令碼,您需要安裝網路指令碼包。

# yum install network-scripts

安裝之後,這個包提供了一個新版本的ifup和ifdown指令碼,它們通過前面介紹的nmcli工具呼叫NetworkManager。注意NetworkManager應該為您執行這些指令碼。

有關更多資訊,請參見systemctl和NetworkManager手冊頁。

# man systemctl
# man NetworkManager

這就是我們在本文中所準備的全部內容。您可以通過下面的留言與我們取得聯絡,或者提出問題,或者對本指南進行補充。


IT145.com E-mail:sddin#qq.com