一、准备工作:记录网卡核心信息(先明确基础数据)
操作命令
bash
# 查看当前网卡名、MAC地址、IP配置(关键信息全量输出)
ip a
操作原因
- 确认当前网卡名 :确保要修改的目标是正确的网卡(比如当前是
ens160,避免误改其他网卡); - 记录MAC地址 :后续
udev规则需要通过MAC绑定网卡名,必须和实际一致(示例中MAC为00:0c:29:19:08:da); - 备份现有IP配置:如果之前是静态IP,需记录IP、网关、DNS,避免后续配置丢失。
二、步骤1:修改 NetworkManager 配置文件(核心网络配置)
操作命令
bash
# 1. 进入NetworkManager配置目录(Rocky9默认网络配置存放路径)
cd /etc/NetworkManager/system-connections/
# 2. 重命名旧网卡配置文件(跟随新网卡名,避免配置冲突)
mv ens160.nmconnection ens33.nmconnection
# 3. 编辑新配置文件,指定新网卡名和静态IP
vi ens33.nmconnection
配置文件内容(关键项修改,其他保留默认)
ini
[connection]
id=ens33 # 连接标识名,建议和网卡名一致(便于管理)
interface-name=ens33 # 核心:绑定到新网卡名ens33(必须和目标名一致)
type=ethernet # 网络类型:以太网(固定值)
[ipv4]
method=manual # 网络模式:手动配置静态IP(禁用DHCP,避免多地址)
address1=10.0.0.12/24 # 静态IP+子网掩码(格式:IP/掩码位,按需修改)
gateway=10.0.0.2 # 网关IP(和你的路由器/网关一致,否则无法上网)
dns=10.0.0.2; # DNS服务器(分号分隔多个,如8.8.8.8;114.114.114.114)
[ipv6]
method=auto # IPv6模式(不需要可改为disabled,避免冗余)
补充权限配置(必做!)
bash
# 设置配置文件权限为600(仅root可读可写)
chmod 600 ens33.nmconnection
操作原因
- 配置文件路径选择 :Rocky9 放弃了传统的
/etc/sysconfig/network-scripts/,改用NetworkManager统一管理,配置文件存放在/etc/NetworkManager/system-connections/,修改这里才能让系统识别新网卡的网络配置; - 文件名重命名 :NetworkManager 会通过文件名关联网卡,旧文件名
ens160.nmconnection会绑定旧网卡名,重命名后才能和新网卡ens33匹配; interface-name字段 :强制指定该配置只应用于ens33网卡,避免其他网卡误读;method=manual:禁用DHCP自动获取地址,防止静态IP和动态IP冲突(这是之前出现「两个地址」的核心原因);- 权限设置为600 :NetworkManager 有安全校验,配置文件必须是
600权限(仅root可读写),否则会被忽略,导致配置失效。
三、步骤2:配置 udev 规则(强制系统识别新网卡名)
操作命令
bash
# 创建/编辑udev规则文件(70开头表示规则优先级,确保优先生效)
vi /etc/udev/rules.d/70-persistent-net.rules
写入规则(替换MAC地址为你的实际值)
bash
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:19:08:da", NAME="ens33"
操作原因
- udev的作用:udev 是Linux系统的设备管理工具,负责设备启动时的命名、驱动绑定等;
- 规则逻辑拆解 :
SUBSYSTEM=="net":只对网络设备生效;ACTION=="add":设备被系统识别(启动时)触发;ATTR{address}=="MAC地址":匹配指定MAC地址的网卡(确保只改目标网卡);NAME="ens33":强制将该网卡命名为ens33(覆盖系统默认命名规则);
- 避免改名失效 :如果不配置udev规则,系统可能仍按默认规则(如
ens160)命名,导致网卡名修改失败。
四、步骤3:刷新配置+激活网卡(让修改立即生效)
操作命令
bash
# 1. 重新加载udev规则(无需重启系统,让新规则生效)
udevadm control --reload-rules
udevadm trigger
# 2. 重新加载NetworkManager配置(读取修改后的ens33.nmconnection)
nmcli connection reload
# 3. 重启系统(核心!让网卡重新被识别,udev规则生效)
reboot
操作原因
udevadm control --reload-rules:udev 规则修改后不会自动生效,需手动重载,让系统识别新的命名规则;udevadm trigger:触发udev重新扫描设备,立即应用新规则(避免重启系统);nmcli connection reload:NetworkManager 不会实时监控配置文件变化,重载后才能读取修改后的静态IP、网卡名绑定等配置;- 重启的核心作用:运行中的网卡处于激活状态(UP),系统为了保证网络稳定,不会允许实时改名;重启后,系统从冷启动重新扫描设备,udev 规则在网卡被识别的第一时间执行命名,NetworkManager 再匹配新网卡名的配置文件,完成 "命名→配置绑定" 的完整流程。
五、步骤4:验证结果(确认配置成功)
操作命令
bash
# 1. 查看网卡名和IP地址(核心验证)
ip a
# 2. 验证网络连通性(确认配置可用)
ping 网关IP(如10.0.0.2) # 测试内网连通
ping 8.8.8.8 # 测试外网连通(可选)
ping www.baidu.com # 测试DNS解析(可选)
验证标准
ip a输出中:- 网卡名显示为
ens33(无ens160); - 仅保留1个静态IP(如
10.0.0.12/24),无dynamic动态地址;
- 网卡名显示为
ping命令能正常通(无丢包或超时),说明网络配置有效。
总结:关键原则
- 网卡名修改=「udev规则命名绑定」+「NetworkManager配置匹配」:两者缺一不可,udev负责「系统识别网卡名」,NetworkManager负责「网卡的网络配置(IP/网关/DNS)」;
- 权限和缓存是常见坑:配置文件权限必须600,修改后必须重载服务+激活连接,否则容易出现「配置不生效」或「多地址」问题;
- 验证是关键 :每一步修改后通过
ip a验证,避免后续排查麻烦。