没有网卡配置文件却能上网?NetworkManager 才是幕后管家

学 Linux 的朋友多有这样的经历:照着教程去改 IP,一路找到 /etc/sysconfig/network-scripts/,准备编辑 ifcfg-ens33,结果目录里压根没有这个文件。更让人摸不着头脑的是,机器明明能上网,ifconfig 里也看得到 ens33——文件不在,网络照跑。很多人下意识觉得是自己把系统装坏了,其实两样都不沾边:这不是机器出问题,是你还没认识真正的管家。

老教程的思路是"一切配置都写进文件",那是早期 initscripts 时代的规矩。现在的发行版大多把网卡交给了 NetworkManager:它把网卡当设备(device)、把配置当连接(connection)来动态管理,一个设备可以挂多份连接档案、按需切换,有线、无线、VPN 都归它调度。配置存在它自己的地盘里,不一定给你生成 ifcfg 文件。所以"没有文件却能上网"完全正常——文件不是唯一的事实源,NM 的连接档案才是。你在 ifconfig 里看到的 ens33 只是设备本身,它此刻用什么地址、走哪个网关,答案全在连接档案里。三步把这层窗户纸捅破:

  1. 看设备归谁管:nmcli device status 列出每张网卡的状态,状态列显示 connected 且被托管,就是 NM 在管。
  2. 看真身:nmcli connection show 列出当前的连接档案,名字、类型、绑定的设备一目了然——你教程里想改的东西,全在这份清单里,每一行就是一份现行的网络配置。
  3. 改配置走正门:用 nmcli connection 系列命令直接改地址、网关、DNS(想看图形界面就用 nmtui),改完用 nmcli connection up 连接名 立即生效验证,不用满世界找文件。

顺带一提,ifconfig 在新系统里也逐渐被 ip 命令取代:ip addr 看地址,ip link 看链路状态,两套工具都能看到 ens33 这张网卡,但它们都只是"看"的工具——你看到的地址是连接档案生效的结果,真正改配置还得回到连接档案那一层去动手。

为什么老教程还在让你找文件?因为两套体系并存过很长的过渡期:早期发行版用脚本文件管网络,NM 接管后两者还能混用,于是留下了大量"先找到 ifcfg 再改"的旧文档;新一点的发行版干脆把连接档案挪进了自己的目录,文件路径越走越远,教程却停在原地——照着做自然扑空。想把配置落回文件也有办法,NM 支持把连接保存成 ifcfg 形式,具体落点因发行版而异,以各自文档为准。做运维交接的时候尤其要留心:接手一台陌生的 Linux 服务器,先问一句"网络配置归谁管、走的是哪套体系",再决定去哪里改,免得在老路径里打转半天、白耗一个下午还以为机器坏了。贵州诚鑫致达科技接手 Linux 服务器代维时,头一件事就是摸清每台机器的配置管理方式,这一步省下来的是后面大量的排查时间。你遇到过"教程失灵"的时刻吗?评论区说说。