背景:作為系統管理員,需要經常處理主機網路問題,而設定與管理網路的方法和工具也有好幾種,這裡整理分享一下網路設定與管理的幾種方式。
在 Red Hat Enterprise Linux 7 中,預設網路服務由 NetworkManager 提供,後者是一個動態網路控制和設定守護行程,在網路裝置和連線可用時保持啟動和啟用。傳統的 ifcfg 型別組態檔仍受支援。
1.1、NetworkManager 優點
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)
這個步驟描述瞭如何使用文字使用者介面工具 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
注意:如果沒有提供連線名稱,則會顯示選擇選單。如果提供連線名稱並正確識別,則會啟用相關的連線。
顯示 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
顯示系統網路狀態:
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。
顯示所有網路連線的資訊:
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
顯示所有網路介面裝置的狀態:
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
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狀態。
在 Red Hat Enterprise Linux 7 中,NetworkManager 本身沒有圖形化使用者介面(GUI)。桌面右上角的網路連線圖示作為 GNOME Shell 的一部分提供,網路設定設定工具作為支援有線、無線和 vpn 連線的新 GNOME 控制中心 GUI 的一部分提供。nm-connection-editor 是 GUI 設定的主要工具。除了control-center 的功能外,它還應用並非由 GNOME 控制中心提供的功能,如設定繫結、團隊、網橋連線。
當您點選 GNOME Shell 網路連線圖示時,您會看到:
2.如下圖,開啟 Network Settings 視窗
單擊加號按鈕來新增新連線。
3.使用 control-center 編輯現有連線
點選 Network settings 視窗中現有連線設定集的 gear wheel 圖示將開啟 Details 視窗,從中可以執行大部分網路設定任務,如 IPv4、DNS 和路由設定。
要在連線修改後應用更改,您可以點選連線視窗右上角的 Apply 按鈕。
使用 nm-connection-editor GUI 應用程式,您可以使用 control-center 提供的附加功能來設定您想要的任何連線。此外,nm-connection-editor 應用並非由 GNOME 控制中心提供的功能,如設定繫結、網橋、VLAN 和組連線。
1.使用 nm-connection-editor 新增或設定新連線
在終端中輸入 nm-connection-editor
我們還可以通過編輯 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
我們還可以使用 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 命令在系統重啟後不會保留。