Linux network啟動報錯 && nmcli的使用詳解
Linux network啟動報錯
報錯現(xiàn)象
測試環(huán)境虛擬機(jī)測試的時候,發(fā)現(xiàn)有一臺服務(wù)器重啟之后,網(wǎng)絡(luò)連接不上,通過控制臺登錄到服務(wù)器里面手動重啟了network服務(wù),發(fā)現(xiàn)提示報錯無法啟動。

通過journactl -u network -f可以看到network啟動報錯原因是因為兩張網(wǎng)卡設(shè)備,找不到

排查過程
在發(fā)現(xiàn)啟動network失敗之后,嘗試過使用if up 設(shè)備名的命令啟動指定網(wǎng)卡

報錯現(xiàn)象還是如上
查看網(wǎng)卡配置文件

網(wǎng)卡配置文件正常
查看NetworkMmanager 服務(wù)
通過與ai查詢報錯信息,發(fā)現(xiàn)服務(wù)器在重啟之后啟動了NetworkMmanager 這個服務(wù)

NetworkManager 是 Linux 系統(tǒng)中用于動態(tài)管理和控制網(wǎng)絡(luò)連接的守護(hù)進(jìn)程服務(wù),是較新版本的Linux系統(tǒng)中統(tǒng)一使用的網(wǎng)絡(luò)管理器。
由于目前使用的Linux系統(tǒng)還是centos 7.5的,默認(rèn)是使用network對網(wǎng)絡(luò)配置進(jìn)行管理的。
沒有對NetworkMmanager 服務(wù)的使用需求。所以就將NetworkMmanager 直接關(guān)閉了。
處理方案
停止NetworkMmanager 服務(wù)并禁用
systemctl disable --now NetworkManager

重啟network服務(wù)

將NetworkMmanager 禁用之后,再重啟network服務(wù)之后正常
故障原因
NetworkMmanager 和network 都是對Linux進(jìn)行網(wǎng)絡(luò)配置的管理器,但是如果兩個服務(wù)同時啟用的話,可能會導(dǎo)致沖突,網(wǎng)絡(luò)服務(wù)異常,這個時候需要停止network或者是NetworkMmanager 。
一般來說我們直接使用系統(tǒng)安裝時候默認(rèn)自帶的網(wǎng)絡(luò)管理服務(wù)即可。因為當(dāng)前使用的服務(wù)器版本是centos 7.5 默認(rèn)自帶的網(wǎng)絡(luò)管理是network,所以就將NetworkMmanager 禁用,這個根據(jù)實際服務(wù)器版本決定使用那個,例如像openeuler和Kyline、Ubuntu 24這些較高的Linux版本,默認(rèn)使用的網(wǎng)絡(luò)管理服務(wù)就是NetworkMmanager。
nmcli 的使用
nmcli 是 NetworkManager Command Line Interface 的縮寫,是 Linux 系統(tǒng)中用于控制和管理 NetworkManager 服務(wù)的官方命令行工具。
NetworkManager 是后臺運行的“網(wǎng)絡(luò)管家”(守護(hù)進(jìn)程),nmcli 是你與這個管家對話的“遙控器”(命令行客戶端)
nmcli的常用命令
nmcli device status (列出所有物理/虛擬網(wǎng)卡及其當(dāng)前狀態(tài)(是否被托管、是否已連接))
[root@localhost ~]# nmcli device status DEVICE TYPE STATE CONNECTION ens36 ethernet connected ens36 ens33 ethernet disconnected -- lo loopback unmanaged --
看所有服務(wù)于網(wǎng)卡接口的連接,connection指一組關(guān)于網(wǎng)卡的配置信息,對于一個單一的網(wǎng)卡設(shè)備可以有多個連接,并且可以在多個連接之間切換,但一個網(wǎng)卡接口一次只能對應(yīng)一個連接生效
| 列名 | 英文全稱 | 含義說明 | 示例解讀 |
|---|---|---|---|
| DEVICE | Device Name | 物理/虛擬網(wǎng)卡名稱,由內(nèi)核識別 | ens36 和 ens33 是兩張網(wǎng)卡 |
| TYPE | Device Type | 設(shè)備類型,如 ethernet、wifi、bridge 等 | 兩張都是有線以太網(wǎng)網(wǎng)卡 |
| STATE | Device State | 設(shè)備當(dāng)前運行狀態(tài)(最關(guān)鍵?。?/td> | ens36 已連網(wǎng),ens33 未連網(wǎng) |
| CONNECTION | Active Connection | 當(dāng)前激活的連接配置名稱 | ens36 綁定了同名配置,ens33 未綁定任何配置 |
nmcli connection show(顯示所有已保存的連接配置文件(包含名稱、類型、綁定的設(shè)備))
[root@localhost ~]# nmcli connection show NAME UUID TYPE DEVICE ens36 346751c5-0779-3722-b19a-8fde14fccdc5 ethernet ens36
激活/停用某個連接(修改配置后必須執(zhí)行此步才會生效)
nmcli connection up 設(shè)備名激活連接nmcli connection down 設(shè)備名停止連接
配置網(wǎng)卡開機(jī)自啟
nmcli connection modify 設(shè)備名 connection.autoconnect yes實際修改的是網(wǎng)卡配置文件ONBOOT=yes
[root@localhost ~]# nmcli connection modify ens36 connection.autoconnect yes
修改現(xiàn)有連接的 IP 地址(僅改配置,不立即生效)
nmcli connection modify 設(shè)備名 ipv4.addresses IP地址/掩碼位數(shù) nmcli connection modify 設(shè)備名 ipv4.method manual ipv4.addresses IP地址/掩碼位數(shù)
ipv4.method manual 表示設(shè)置網(wǎng)卡獲取IP的方式手動指定

直接讓某個物理網(wǎng)卡自動連網(wǎng)(NM 會自動匹配或創(chuàng)建配置)
nmcli device connect 設(shè)備名執(zhí)行了該命令之后,NM會創(chuàng)建一個網(wǎng)卡配置文件。- 不過該網(wǎng)卡配置文件獲取IP地址的方式是dhcp
修改網(wǎng)關(guān)
nmcli connection modify 設(shè)備名 ipv4.gateway 網(wǎng)關(guān)IP地址
修改DNS
nmcli connection modify 設(shè)備名 ipv4.DNS DNS定制
nmcli高級應(yīng)用
單網(wǎng)卡設(shè)置多連接
添加連接
nmcli connection show 列出 NetworkManager 中所有已保存的網(wǎng)絡(luò)連接配置文件
當(dāng)前我的ens36的這張網(wǎng)卡只有一個連接,可以再創(chuàng)建一個連接并配置IP地址
[root@localhost yum.repos.d]# nmcli connection show NAME UUID TYPE DEVICE ens36 346751c5-0779-3722-b19a-8fde14fccdc5 ethernet ens36 [root@localhost yum.repos.d]# nmcli connection add con-name test type ethernet ifname ens36 Connection 'test' (0284eb11-1c98-472b-9c0c-e271445facdd) successfully added. [root@localhost yum.repos.d]# nmcli connection show NAME UUID TYPE DEVICE ens36 346751c5-0779-3722-b19a-8fde14fccdc5 ethernet ens36 test 0284eb11-1c98-472b-9c0c-e271445facdd ethernet --

上圖創(chuàng)建一個新的test的連接,指向了ens36的網(wǎng)卡設(shè)備,現(xiàn)在可以給test的連接創(chuàng)建IP地址。
網(wǎng)卡連接切換命令:nmcli connection up 連接名 設(shè)備名
# 設(shè)置新鏈接test的IP地址,網(wǎng)關(guān)、dns [root@localhost yum.repos.d]# nmcli connection modify test ipv4.method manual ipv4.addresses 10.201.9.199/24 ipv4.gateway 10.201.9.1 ipv4.dns 8.8.8.8 connection.autoconnect no # 激活test的網(wǎng)卡連接,即可切換到test所配置的IP地址 [root@localhost yum.repos.d]# nmcli connection up test ens36
刪除連接
nmcli connection delete 連接名的UUID
[root@localhost ~]# nmcli connection show NAME UUID TYPE DEVICE ens36 346751c5-0779-3722-b19a-8fde14fccdc5 ethernet ens36 test 0284eb11-1c98-472b-9c0c-e271445facdd ethernet -- [root@localhost ~]# [root@localhost ~]# nmcli connection delete 0284eb11-1c98-472b-9c0c-e271445facdd Connection 'test' (0284eb11-1c98-472b-9c0c-e271445facdd) successfully deleted. [root@localhost ~]# nmcli connection show NAME UUID TYPE DEVICE ens36 346751c5-0779-3722-b19a-8fde14fccdc5 ethernet ens36
新網(wǎng)卡添加連接
給虛擬機(jī)添加一張新的網(wǎng)卡,針對ens37的網(wǎng)卡創(chuàng)建一個連接,并配置IP地址

[root@localhost ~]# nmcli connection add con-name ens37 type ethernet ifname ens37
Connection 'ens37' (341fa9d4-d0f3-4cad-b353-61a6d6d041f8) successfully added.
[root@localhost ~]# nmcli connection modify ens37 ipv4.method manual ipv4.addresses 10.201.9.199/24 ipv4.gateway 10.201.9.1 ipv4.dns 8.8.8.8 connection.autoconnect no
[root@localhost ~]# nmcli connection up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/25)
[root@localhost ~]# ip ad
4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:3d:02:dc brd ff:ff:ff:ff:ff:ff
inet 10.201.9.199/24 brd 10.201.9.255 scope global noprefixroute ens37
valid_lft forever preferred_lft forever
inet6 fe80::101a:fe5b:e9d5:34b2/64 scope link noprefixroute
valid_lft forever preferred_lft forever=
使用 nmcli connection add con-name ens37 type ethernet ifname ens37 創(chuàng)建完連接之后可以看到在/etc/sysconfig/network-scripts/目錄下面就會生成一個ens37連接名的配置文件。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
阿里云Linux主機(jī)安裝WDCP管理面板(包含lamp+lnmp+lanmp環(huán)境)
這篇文章主要介紹了阿里云Linux主機(jī)安裝WDCP管理面板(包含lamp+lnmp+lanmp環(huán)境),需要的朋友可以參考下2017-08-08
讓Apache支持shtml實現(xiàn)include文件解析的配置方法
Apache支持include文件解析shtml首先要應(yīng)該修改Apache配置文件httpd.conf2011-03-03
Centos中TCPWrappers訪問控制實現(xiàn)
這篇文章主要介紹了Centos中TCPWrappers訪問控制實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Linux服務(wù)器查看啟動服務(wù)的5種方式總結(jié)
本文介紹Linux系統(tǒng)查看服務(wù)狀態(tài)的多種方法,包括systemctl(推薦)、service、檢查端口及進(jìn)程,建議優(yōu)先使用systemctl查看運行服務(wù),結(jié)合ss -tuln驗證網(wǎng)絡(luò)監(jiān)聽,最后用systemctl list-unit-files確認(rèn)開機(jī)自啟項,以全面掌握服務(wù)情況2025-09-09
Linux系統(tǒng)中systemd服務(wù)啟動失敗問題排查和解決方法(以ad_auth.service為例)
在 Linux 系統(tǒng)中,systemd 是管理服務(wù)和進(jìn)程的核心工具,然而,在實際運維中,我們經(jīng)常會遇到服務(wù)啟動失敗的情況,本文將以一個具體的案例——ad_auth.service 啟動失敗為例,詳細(xì)介紹如何排查和解決此類問題,需要的朋友可以參考下2025-01-01

