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

通過(guò)journactl -u network -f可以看到network啟動(dòng)報(bào)錯(cuò)原因是因?yàn)閮蓮埦W(wǎng)卡設(shè)備,找不到

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

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

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

NetworkManager 是 Linux 系統(tǒng)中用于動(dò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對(duì)網(wǎng)絡(luò)配置進(jìn)行管理的。
沒(méi)有對(duì)NetworkMmanager 服務(wù)的使用需求。所以就將NetworkMmanager 直接關(guān)閉了。
處理方案
停止NetworkMmanager 服務(wù)并禁用
systemctl disable --now NetworkManager

重啟network服務(wù)

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

直接讓某個(gè)物理網(wǎng)卡自動(dòng)連網(wǎng)(NM 會(huì)自動(dòng)匹配或創(chuàng)建配置)
nmcli device connect 設(shè)備名執(zhí)行了該命令之后,NM會(huì)創(chuàng)建一個(gè)網(wǎng)卡配置文件。- 不過(guò)該網(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高級(jí)應(yīng)用
單網(wǎng)卡設(shè)置多連接
添加連接
nmcli connection show 列出 NetworkManager 中所有已保存的網(wǎng)絡(luò)連接配置文件
當(dāng)前我的ens36的這張網(wǎng)卡只有一個(gè)連接,可以再創(chuàng)建一個(gè)連接并配置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)建一個(gè)新的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)卡,針對(duì)ens37的網(wǎng)卡創(chuàng)建一個(gè)連接,并配置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/目錄下面就會(huì)生成一個(gè)ens37連接名的配置文件。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
阿里云Linux主機(jī)安裝WDCP管理面板(包含lamp+lnmp+lanmp環(huán)境)
這篇文章主要介紹了阿里云Linux主機(jī)安裝WDCP管理面板(包含lamp+lnmp+lanmp環(huán)境),需要的朋友可以參考下2017-08-08
讓Apache支持shtml實(shí)現(xiàn)include文件解析的配置方法
Apache支持include文件解析shtml首先要應(yīng)該修改Apache配置文件httpd.conf2011-03-03
Centos中TCPWrappers訪(fǎng)問(wèn)控制實(shí)現(xiàn)
這篇文章主要介紹了Centos中TCPWrappers訪(fǎng)問(wèn)控制實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Linux服務(wù)器查看啟動(dòng)服務(wù)的5種方式總結(jié)
本文介紹Linux系統(tǒng)查看服務(wù)狀態(tài)的多種方法,包括systemctl(推薦)、service、檢查端口及進(jìn)程,建議優(yōu)先使用systemctl查看運(yùn)行服務(wù),結(jié)合ss -tuln驗(yàn)證網(wǎng)絡(luò)監(jiān)聽(tīng),最后用systemctl list-unit-files確認(rèn)開(kāi)機(jī)自啟項(xiàng),以全面掌握服務(wù)情況2025-09-09
Linux系統(tǒng)中systemd服務(wù)啟動(dòng)失敗問(wèn)題排查和解決方法(以ad_auth.service為例)
在 Linux 系統(tǒng)中,systemd 是管理服務(wù)和進(jìn)程的核心工具,然而,在實(shí)際運(yùn)維中,我們經(jīng)常會(huì)遇到服務(wù)啟動(dòng)失敗的情況,本文將以一個(gè)具體的案例——ad_auth.service 啟動(dòng)失敗為例,詳細(xì)介紹如何排查和解決此類(lèi)問(wèn)題,需要的朋友可以參考下2025-01-01

