在Linux 7系统中,默认采用Predictable Network Names(可预测网络名)机制,网卡名称通常以ens、eno、enp等前缀开头(如ens33、eno1),这种命名方式虽然能根据硬件信息(如主板插槽、网卡插槽)稳定识别网卡,但部分用户或旧版脚本习惯使用传统的eth0、eth1等名称,本文将详细介绍Linux 7系统中修改网卡名的两种方法:临时修改(重启后失效)和永久修改(重启后生效),重点说明永久修改的详细步骤及注意事项。
查看当前网卡信息
在修改网卡名前,需先确认当前网卡的名称、MAC地址及运行状态,使用ip a
命令(或ifconfig
,若已安装)查看:
ip a
输出示例中,重点关注类似以下内容:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic ens33
valid_lft 86400sec preferred_lft 86400sec
inet6 fe80::20c:29ff:fexx:xxxx/64 scope link
valid_lft forever preferred_lft forever
记录下网卡名(如ens33)和MAC地址(00:0c:29:xx:xx:xx),后续修改需依赖这些信息。
临时修改网卡名(仅测试用)
临时修改通过ip
命令实现,重启系统后网卡名会恢复原状,适用于临时测试场景:
# 将ens33临时修改为eth0 sudo ip link set dev ens33 name eth0 # 启动网卡(若原状态为UP) sudo ip link set dev eth0 up
验证:执行ip a | grep eth0
,若显示网卡信息则临时修改成功,但此方法不推荐生产环境使用,因重启后会失效。
永久修改网卡名(推荐方法)
永久修改需修改网络配置文件和udev规则,确保重启后网卡名固定,以下分为传统ifcfg
文件方法和NetworkManager方法(Linux 7默认可能使用NetworkManager,两种方法可根据实际环境选择)。
(一)基于ifcfg
文件的永久修改
-
备份原有配置文件
防止修改出错导致网络不可用,先备份原网卡配置文件(位于/etc/sysconfig/network-scripts/
目录下):sudo cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
-
修改网卡配置文件
编辑原网卡配置文件(如ifcfg-ens33
),使用vim
或nano
工具:sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
需修改的核心参数如下:
NAME
:网卡的显示名称,修改为目标名称(如eth0
);DEVICE
:网卡设备名,需与NAME
保持一致(如eth0
);- 其他参数(如
BOOTPROTO
、ONBOOT
、IPADDR
等)无需修改,保持原样。
修改前后对比如下表:
| 参数 | 修改前 | 修改后 | 说明 |
|————–|————–|————–|————————–|
|NAME
|ens33
|eth0
| 网卡显示名称 |
|DEVICE
|ens33
|eth0
| 网卡设备名 |
|BOOTPROTO
|dhcp
|dhcp
| IP获取方式(示例为DHCP) |
|ONBOOT
|yes
|yes
| 是否开机启动 |
|IPADDR
|168.1.100
|168.1.100
| 静态IP(若有) |保存文件后退出(
vim
中按wq
)。 -
创建udev规则绑定MAC地址与网卡名
Linux 7通过udev规则根据MAC地址固定网卡名,避免硬件变动导致名称变化,创建规则文件:sudo vim /etc/udev/rules.d/70-persistent-net.rules
添加以下内容(
ATTR{address}
替换为实际MAC地址,NAME
替换为目标网卡名):SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:xx:xx:xx", NAME="eth0"
说明:该规则表示当MAC地址为
00:0c:29:xx:xx:xx
的网卡被添加时,将其命名为eth0
。 -
重启网络服务或系统
执行以下命令使配置生效(推荐重启系统,确保udev规则正确加载):# 重启网络服务(部分场景可能需要) sudo systemctl restart network # 或重启系统(推荐) sudo reboot
-
验证修改结果
重启后执行ip a
,查看网卡名是否已修改为eth0
,且IP地址等信息正常显示:2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0 valid_lft 86400sec preferred_lft 86400sec inet6 fe80::20c:29ff:fexx:xxxx/64 scope link valid_lft forever preferred_lft forever
(二)基于NetworkManager的永久修改(适用于nmcli管理)
若系统使用NetworkManager(默认),可通过nmcli
命令修改,无需手动编辑ifcfg
文件:
-
查看当前网络连接名
nmcli con show
输出示例:
ens33 802-3-ethernet ethernet --
记录连接名(如
ens33
)。 -
修改连接ID为目标网卡名
sudo nmcli con mod "ens33" connection.id "eth0"
说明:
"ens33"
为原连接名,"eth0"
为目标网卡名。 -
重启连接使配置生效
sudo nmcli con down "eth0" && sudo nmcli con up "eth0"
-
验证修改
ip a | grep eth0
若显示网卡信息则修改成功。
注意事项
- 备份配置文件:修改前务必备份原配置,避免误操作导致网络中断。
- MAC地址一致性:udev规则中的
ATTR{address}
必须与实际网卡MAC地址一致,可通过ip a
确认。 - SELinux影响:若系统启用SELinux,修改配置文件后需执行
restorecon
恢复上下文:sudo restorecon /etc/sysconfig/network-scripts/ifcfg-eth0 sudo restorecon /etc/udev/rules.d/70-persistent-net.rules
- 虚拟机环境:VMware、VirtualBox等虚拟机的网卡名可能与物理机不同,需以
ip a
实际输出为准。 - 多网卡场景:若有多块网卡,需逐块修改配置文件和udev规则,避免名称冲突。
FAQs
Q1:修改网卡名后无法上网,如何排查?
A:首先检查配置文件是否正确:确认/etc/sysconfig/network-scripts/ifcfg-eth0
中的DEVICE
和NAME
是否与目标网卡名一致,ONBOOT
是否为yes
,其次检查udev规则中的MAC地址是否正确(可通过ip a
查看当前网卡的MAC地址并与规则文件中的对比),最后测试网络连通性(如ping 8.168.1.1
),若不通可重启网络服务(systemctl restart network
)或检查防火墙状态(firewall-cmd --state
)。
Q2:为什么按照步骤修改后重启,网卡名还是显示为ens33?
A:可能原因有两个:一是udev规则未生效,需检查/etc/udev/rules.d/70-persistent-net.rules
文件是否存在且内容正确(MAC地址和网卡名无误),可尝试重启udev服务(systemctl restart systemd-udev-load-modules.service
)后再重启系统;二是NetworkManager未正确应用配置,若使用nmcli
修改,需确认连接名是否正确(nmcli con show
查看),并尝试删除原连接后重新创建(nmcli con delete "ens33"
,再重新配置网络)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38043.html