Redhat7/CentOS7 網路設定與管理(nmtui、nmcli、GNOME GUI、ifcfg檔案、IP命令)

2023-04-05 06:00:41

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 連線到網路

  1. 單擊螢幕右上角的 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 命令在系統重啟後不會保留。