Redhat7/CentOS7 網路配置與管理(nmtui、nmcli、GNOME GUI、ifcfg檔案、IP命令)
背景:作為系統管理員,需要經常處理主機網路問題,而配置與管理網路的方法和工具也有好幾種,這裡整理分享一下網路配置與管理的幾種方式。
1、NetworkManager 概述
在 Red Hat Enterprise Linux 7 中,預設網路服務由 NetworkManager 提供,後者是一個動態網路控制和配置守護程式,在網路裝置和連線可用時保持啟動和啟用。傳統的 ifcfg 型別配置檔案仍受支援。
1.1、NetworkManager 優點
- 更輕鬆地進行網路配置: NetworkManager 確保網路連線正常工作。當發現系統中沒有網路配置但存在網路裝置時,NetworkManager 會建立臨時連線以提供連線。
- 提供與使用者的簡單連線設定:NetworkManager 透過不同的工具(GUI、nmtui、nmcli - )提供管理。
- 支援配置靈活性。例如:配置 WiFi 介面,NetworkManager 會掃描並顯示可用的 wifi 網路。選擇一個介面,NetworkManager 會顯示在重啟過程後提供自動連線所需的憑證。
- NetworkManager 可以配置網路別名、IP 地址、靜態路由、DNS 資訊和 VPN 連線,以及許多特定於連線的引數。您可以修改配置選項以反應您的需要。
- 重啟過程後保持裝置狀態,並接管在重啟過程中將其設定為受管模式的介面。
- 處理沒有被顯式設定但由使用者或者其他網路裝置手動控制的裝置。
1.2、NetworkManager 工具和應用程式概述
應用程式或工具 | 描述 |
nmcli | 命令列工具可讓使用者和指令碼與 NetworkManager 互動。請注意,nmcli 可以在沒有 GUI 的系統上使用,如伺服器來控制 NetworkManager 的所有方面。它的功能與 GUI 工具相同。 |
nmtui | NetworkManager的基於 curses 的簡單文字使用者介面(TUI) |
nm-connection-editor |
控制中心實用程式尚未處理的特定任務 (如配置繫結和成組連線)的圖形使用者介面工具。您可以新增、刪除和修改 NetworkManager 儲存的網路連線。要啟動它,在終端中輸入 nm-connection-editor : ~]$ nm-connection-editor |
control-center | GNOME Shell 提供的圖形使用者介面工具,可供桌面使用者使用。它整合了網路設定工具。要啟動它,請按 Super 鍵進入 Activities Overview,鍵入Network,然後按 Enter 鍵。此時會出現網路設定工具。 |
網路連線圖示 | GNOME Shell 提供的圖形使用者介面工具代表網路連線狀態,如NetworkManager 報告。該圖示有多種狀態,充當您當前使用的連線型別的視覺化指示。 |
1.3、NetworkManager的安裝和使用
(1)安裝NetworkManager
yum install NetworkManager
(2)啟動NetworkManager
systemctl start NetworkManager
(3)關閉NetworkManager
systemctl stop NetworkManager
(4)重啟NetworkManager
systemctl restart NetworkManager
(5)檢視NetworkManager是否開機啟動
systemctl is-enabled NetworkManager
(6)開機啟動 NetworkManager
systemctl enable NetworkManager
(7)禁止開機啟動 NetworkManager
systemctl disable NetworkManager
(8)檢查 NetworkManager 的狀態
systemctl status NetworkManager
注意:
當 NetworkManager 正在執行時,systemctl status 命令會顯示Active: active (running)
當 NetworkManager 沒有執行時,systemctl status 命令會顯示 Active: inactive (dead)
2、配置IP網路
2.1、使用nmtui配置IP網路
這個步驟描述瞭如何使用文字使用者介面工具 nmtui 配置網路。
2.1.1、啟動 nmtui 工具
nmtui
NetworkManager 文字使用者介面起始選單(左英右中),使用箭頭鍵鍵前進 ,然後按Esc後退瀏覽選項。按 Enter 鍵選擇一個選項。Space 空格鍵切換核取方塊的狀態。
選擇“Edit a connection”
選擇網路卡,按Enter進行編輯
2.1.2、配置並儲存ipv4資訊(配置靜態ip選擇Manual模式)
2.1.3、要在修改後已啟用的連線後應用更改,需要重新啟用連線。
a.選擇 Activate a connection 選單條目,啟用連線。
b.選擇修改的連線。在右側,單擊取消啟用按鈕,取消啟用修改的連線。(注意:此時網路會斷,ssh連線的也會斷)
c.再次選擇連線並單擊啟用按鈕,重新啟用修改的連線
2.1.4、命令方式操作
nmtui edit connection-name #connection-name是網路卡名稱,例如上面的ens33
注意:如果沒有提供連線名稱,則會顯示選擇選單。如果提供了連線名稱並正確識別,則會出現相關的Edit 連線螢幕。
nmtui connect connection-name
注意:如果沒有提供連線名稱,則會顯示選擇選單。如果提供連線名稱並正確識別,則會啟用相關的連線。
2.2、使用 nmcli 配置 IP 網路
- nmcli (NetworkManager 命令列介面)命令列工具用於控制 NetworkManager 和報告網路狀態,nmcli 用於建立、顯示、編輯、刪除、啟用和停用網路連線,以及控制和顯示網路裝置狀態。
- nmcli 命令的基本格式如下:
nmcli [OPTIONS] OBJECT { COMMAND | help } - 連線檔案::把一個網路裝置的配置的集合放在一個檔案內,就叫連線檔案,比如網路卡的配置檔案。
2.2.1 nmcli networking
顯示 NetworkManager 是否接管網路設定:
nmcli networking
networking 可以簡寫為 n、ne、net、netw…… 所以以上命令可以簡寫為:
nmcli n
檢視網路連線狀態:
nmcli n connectivity
網路連線狀態共有五種:full、limited(連網,但無法上網)、portal(連網,但需要認證登入後才能上網)、none(沒連網)和 unknown。
connectivity 可以簡寫為 c,所以以上命令可簡寫為:
nmcli n c
開啟網路連線:
nmcli n on
關閉網路連線:
nmcli n off
2.2.2 nmcli general
顯示系統網路狀態:
nmcli general status
general 可以簡寫為 g、ge、gen、gene……
status 是 general 的預設項,可以省略不寫。所以,以上命令可簡寫為:
nmcli g
命令返回結果如下:
其中:
STATE 顯示網路是否連線;
CONNECTIVITY 與前面介紹的 nmcli networking connectivity 相同;
WIFI-HW 表示 WIFI 硬體開關、WIFI 表示 WIFI 軟體開關;
WWAN-HW 表示 WWAN 硬體開關、WWAN 表示 WWAN 軟體開關。
HW 代表 HardWare,WWAN 代表 Wireless Wide Area Network。
顯示主機名:
nmcli g hostname
nmcli g h
更改主機名:
nmcli g hostname newHostName
nmcli g h newHostName
newHostName
是你設定的新主機名。
主機名存放在 /etc/hostname 檔案中,修改主機名後,需要重啟 NetworkManager。
2.2.3 nmcli connection
顯示所有網路連線的資訊:
nmcli connection show
connection 可以簡寫為 c、co、con、conn……
show 是 connection 的預設項,可以省略不寫。所以,以上命令可簡寫為:
nmcli c
nmcli connection show 有一個 -active 引數,可以只顯示當前啟動的連線:
nmcli c s --active # 或
nmcli c s -a # 因為 show 後面有引數項,所以此時的 show 不能省
顯示某一特定連線的詳細資訊(以 ens33 為例):
nmcli c s ens33
啟動指定連線:
nmcli c up ens33
如果 ens33 本來就出於連線狀態,那此命令會重啟 ens33。
關閉指定連線:
nmcli c down ens33
關閉連線後,執行 nmcli c
命令, DEVICE 項將顯示為 -- 。
修改連線檔案:
nmcli c modify ens33 [ + | - ]選項 選項值 # 或
nmcli c m ens33 [ + | - ]選項 選項值
下面給出常用修改示例:
nmcli c m ens33 ipv4.address 192.168.80.10/24 # 修改 IP 地址和子網掩碼
nmcli c m ens33 ipv4.method manual # 修改為靜態配置,預設是 auto
nmcli c m ens33 ipv4.gateway 192.168.80.2 # 修改預設閘道器
nmcli c m ens33 ipv4.dns 192.168.80.2 # 修改 DNS
nmcli c m ens33 +ipv4.dns 114.114.114.114 # 新增一個 DNS
nmcli c m ens33 ipv6.method ignore # 將 IPv6 禁用,針對CentOS 8,三個可選項:disabled、auto、manual
nmcli c m ens33 connection.autoconnect yes # 開機啟動
注意,必須先修改 ipv4.address,然後才能修改 ipv4.method!
用空引號""
代替選項的值,可將選項設回預設值(以 ipv4.method 為例):
nmcli c m ens33 ipv4.method ""
選項有很多,詳細資訊可以透過以下命令檢視:
man 5 nm-settings-nmcli
主要可以看裡面 connection setting 和 ipv4 setting 部分。
新增連線:
nmcli c add type 連線型別 選項 選項值 # 或
nmcli c a type 連線型別 選項 選項值
type 為必選項,我們通常用到的是 802-3-ethernet(別名 ethernet)。
選項與前面介紹的“修改連線”中的選項一樣,其中重要的幾個選項:
connection.id(別名 con-name):連線名;
connection.interface-name(別名 ifname):裝置名;
connection.autoconnect(別名 autoconnect):是否開機自啟,其值只能是 yes 或 no,預設 yes。
下面給出一個示例:
nmcli c a type ethernet ifname ens37 con-name ens37
刪除指定連線:
nmcli c delete ens33 # 或
nmcli c de ens33 # delete 不可簡寫為 d,否則與 down 衝突,但可以簡寫為 de
過載所有連線的配置檔案:
nmcli c reload # 或
nmcli c r
過載某一指定連線的配置檔案:
nmcli c load ifcfg-ens33 # 或
nmcli c l ifcfg-ens33
網路配置檔案預設儲存在 /etc/sysconfig/network-scripts/ 路徑下,如果配置檔案在其它位置,則需要填寫完整路徑。
網路配置檔案的命名方式就是ifcfg-連線名
,例如 ens33 的配置檔名為ifcfg-ens33
。
網路配置檔案說明:
TYPE=Ethernet # 乙太網
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none # 靜態配置,等同於 ipv4.method manual
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33 # 連線名
UUID=16862343-b55e-4248-b05d-a3ea662a84a4
DEVICE=ens33 # 裝置名
ONBOOT=yes # 開機自啟
IPADDR=192.168.80.10 # IP 地址
PREFIX=24 # 子網掩碼
GATEWAY=192.168.80.2 # 閘道器
DNS1=192.168.80.2 # DNS1
DNS2=114.114.114.114 # DNS2
2.2.4 nmcli device
顯示所有網路介面裝置的狀態:
nmcli device status
device 可以簡寫為 d、de、dev……
status 是 device 的預設項,可以省略不寫。所以,以上命令可簡寫為:
nmcli d
顯示所有裝置的詳細資訊:
nmcli d show # 或
nmcli d sh # show 不可簡寫為 s,否則與 status 衝突,但可以簡寫為 sh
顯示某一特定裝置的詳細資訊:
nmcli d sh ens33
連線裝置:
nmcli d connect ens33 # 或
nmcli d c ens33
如果 ens33 本來就出於連線狀態,那此命令會重啟 ens33。
斷開裝置:
nmcli d disconnect ens33 # 或
nmcli d d ens33
更新裝置資訊:
nmcli d reapply ens33 # 或
nmcli d r ens33
只有在裝置處於連線狀態,才可以更新裝置,更新裝置相當於重啟連線。
這部分引用:https://zhuanlan.zhihu.com/p/395236748
2.2.5 伺服器新增網路卡的配置和使用
ip addr show 檢視網路卡資訊(ens37是我剛剛新增的網路卡),但並沒有連線。
nmcli device status 檢視所有網路介面裝置的狀態,可以看到ens37是disconnected狀態
修改新網路卡連線的方式有兩種
方式一:
nmcli device connect ensXXX:
disconnected→connected 自動建立連線檔案(前提:DHCP啟用)
方式二:
手動新增連線對裝置進行關聯(在DHCP沒有啟用的時候可以用這個方法)
nmcli connection add type ethernet ifname ens37 con-name ens37 #或
nmcli c a type ethernet ifname ens37 con-name ens37
手動新增連線對裝置進行關聯後,/etc/sysconfig/network-scripts下會生成連線檔案 ifcfg-ens37,但是此時連線檔案還是不可用的。
修改連線檔案 ifcfg-ens37
nmcli device status 再次檢視網路卡裝置已處於connected狀態。
2.3、使用 GNOME GUI 配置 IP 網路
在 Red Hat Enterprise Linux 7 中,NetworkManager 本身沒有圖形使用者介面(GUI)。桌面右上角的網路連線圖示作為 GNOME Shell 的一部分提供,網路設定配置工具作為支援有線、無線和 vpn 連線的新 GNOME 控制中心 GUI 的一部分提供。nm-connection-editor 是 GUI 配置的主要工具。除了control-center 的功能外,它還應用並非由 GNOME 控制中心提供的功能,如配置繫結、團隊、網橋連線。
2.3.1、 使用 control-center GUI 連線到網路
- 單擊螢幕右上角的 GNOME Shell 網路連線圖示,以開啟其選單。
當您點選 GNOME Shell 網路連線圖示時,您會看到:
- 當前連線的分類網路列表(如 Wired 和 Wi-Fi)
- NetworkManager 檢測到的所有可用網路的列表
- 連線任何已配置的虛擬專用網路(VPN)的選項
- 選擇 Network Settings 選單條目的選項
2.如下圖,開啟 Network Settings 視窗
單擊加號按鈕來新增新連線。
- 有線連線,單擊 Wired 條目旁邊的加號按鈕
- VPN 連線,單擊 VPN 條目旁邊的加號按鈕
- 對於 Wi-Fi 連線,點 Settings 選單中的 Wi-fi 條目
3.使用 control-center 編輯現有連線
點選 Network settings 視窗中現有連線配置集的 gear wheel 圖示將開啟 Details 視窗,從中可以執行大部分網路配置任務,如 IPv4、DNS 和路由配置。
要在連線修改後應用更改,您可以點選連線視窗右上角的 Apply 按鈕。
2.3.2、 使用 nm-connection-editor 配置新的和編輯現有連線
使用 nm-connection-editor GUI 應用程式,您可以使用 control-center 提供的附加功能來配置您想要的任何連線。此外,nm-connection-editor 應用並非由 GNOME 控制中心提供的功能,如配置繫結、網橋、VLAN 和組連線。
1.使用 nm-connection-editor 新增或配置新連線
在終端中輸入 nm-connection-editor
- 新增,可以選擇多種連線型別(Ethernet、wifi、Bluetooth、bond 等)
- 刪除,可以選擇刪除不需要的連線裝置
- 配置,與control-center GUI方式配置大同小異,功能要多一些。
2.4、 使用 IFCFG 檔案配置 IP 網路
我們還可以透過編輯 ifcfg 檔案手動配置網路介面。
介面配置(ifcfg)檔案可控制不同網路裝置的軟體介面。當系統引導時,它使用這些檔案來決定啟動哪些介面以及如何進行配置。這些檔案通常命名為 ifcfg-name ,字尾名稱指的是配置檔案控制的裝置的名稱。按照慣例,ifcfg 檔案的字尾與配置檔案中 DEVICE 指令提供的字串相同。
1.使用 ifcfg 檔案配置帶有靜態網路設定的介面
例如,若要使用 ifcfg 檔案配置帶有靜態網路設定的介面,請為名為 ens37 的介面,在/etc/sysconfig/network -scripts/ 目錄中建立一個名為 ifcfg- ens37 的檔案,該檔案包含:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
UUID=0b7dff57-945d-4b63-bf53-69dd2e0f2e99
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.8.26
PREFIX=24
GATEWAY=192.168.8.2
DNS1=114.114.114.114
2.應用配置
a.重新載入更新的連線檔案:
nmcli connection reload
b.重新啟用連線:
nmcli connection up connection_name
2.5、 使用 IP 命令配置 IP 網路
我們還可以使用 ip 命令臨時配置網路介面,但更改在重新引導後不會保留;重新引導後,將丟失任何更改。
ip 工具可以用來為介面分配 IP 地址,格式如下:
ip addr [ add | del ] address dev ifname
使用 ip 命令分配靜態地址
要為介面分配 IP 地址,請執行以下操作:
~]# ip address add 10.0.0.3/24 dev ens37
You can view the address assignment of a specific device:
~]# ip addr show dev ens37
2: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether f0:de:f1:7b:6e:5f brd ff:ff:ff:ff:ff:ff
inet 10.0.0.3/24 brd 10.0.0.255 scope global global enp1s
valid_lft 58682sec preferred_lft 58682sec
inet6 fe80::f2de:f1ff:fe7b:6e5f/64 scope link
valid_lft forever preferred_lft forever
使用 ip 命令配置多個地址
由於 ip 實用程式支援將多個地址分配到同一介面,因此不再需要使用別名介面方法將多個地址繫結到
同一介面。分配地址的 ip 命令可以重複多次,以便能分配多個地址。例如:
~]# ip address add 192.168.2.223/24 dev ens37
~]# ip address add 192.168.4.223/24 dev ens37
~]# ip addr
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether 52:54:00:fb:77:9e brd ff:ff:ff:ff:ff:ff
inet 192.168.2.223/24 scope global enp1s0
inet 192.168.4.223/24 scope global enp1s0
注意:命令列中給定的 IP 命令在系統重啟後不會保留。