Redhat7/CentOS7 網路配置與管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令) 背景:作為系統管理員,需要經常處理主機網路問題,而配置與管理網路的方法和工具也有好幾種,這裡整理分享一下網路配置與管理的幾種方式。 1、NetworkManager 概述 在 Re ...
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 命令在系統重啟後不會保留。