在Linux系统中,网卡的默认命名方式可能因发行版、内核版本或硬件信息而不同,例如传统的eth0、基于硬件信息的ens33、eno1等,统一的网卡命名规范有助于简化网络管理,尤其是在服务器集群或自动化运维场景中,本文将详细介绍Linux系统中修改网卡名的具体方法,涵盖临时修改、永久修改以及不同发行版的配置差异,并针对常见问题提供解决方案。
查看当前网卡信息
在修改网卡名前,需先确认当前网卡的名称及对应的网络配置,使用以下命令可列出系统中所有网卡及其详细信息:
ip a
:显示网卡的IP地址、MAC地址等状态信息,输出结果中“inet”对应IPv4地址,“link/ether”对应MAC地址。ls /sys/class/net/
:列出系统中的所有网卡名称,结果即为当前网卡名(如ens33、ens37等)。nmcli device status
(NetworkManager工具):若系统使用NetworkManager管理网络,该命令可显示网卡名称、连接状态及类型。
临时修改网卡名
临时修改网卡名仅对当前会话有效,重启系统后恢复,适用于快速测试或临时场景,操作步骤如下:
- 使用
ip link
命令修改
以将网卡ens33
修改为eth0
为例,执行:sudo ip link set ens33 down # 关闭网卡 sudo ip link set ens33 name eth0 # 修改网卡名 sudo ip link set eth0 up # 启动网卡
执行后可通过
ip a
确认网卡名已变更为eth0
,但重启系统后会恢复为原名称。
永久修改网卡名
永久修改需修改网络配置文件,并根据发行版调整对应规则,确保重启后网卡名保持不变,以下以CentOS/RHEL和Ubuntu为例分别说明:
(一)CentOS/RHEL系统(使用NetworkManager或ifcfg配置)
CentOS 7及以上版本默认使用NetworkManager,同时支持传统的ifcfg
配置文件方式。
方法1:修改ifcfg
配置文件(适用于NetworkManager禁用或传统网络服务)
-
定位原网卡配置文件
网卡配置文件位于/etc/sysconfig/network-scripts/
目录下,文件名格式为ifcfg-原网卡名
,例如ifcfg-ens33
。 -
修改配置文件内容
编辑ifcfg-ens33
,将NAME
和DEVICE
参数修改为目标网卡名(如eth0
),其他参数(如BOOTPROTO
、ONBOOT
)保持不变:NAME=eth0 # 修改为目标网卡名 DEVICE=eth0 # 修改为目标网卡名 BOOTPROTO=dhcp # IP获取方式(dhcp/static) ONBOOT=yes # 开机自启 TYPE=Ethernet
-
创建新网卡配置文件(可选)
为保持配置文件名与网卡名一致,可复制原配置文件并重命名为ifcfg-eth0
:sudo cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
-
更新UDEV规则(关键步骤)
为确保重启后网卡名不恢复,需创建UDEV规则,绑定MAC地址与目标网卡名,执行以下命令:sudo nmcli con show | grep ens33 # 获取原网卡连接名称(可能与网卡名一致) sudo nmcli con modify "ens33" connection.id eth0 # 修改NetworkManager中的连接名
或通过
udevadm
生成规则:sudo udevadm info -a -p $(udevadm info -q path -n /sys/class/net/ens33) | grep -P 'ATTR{address}==' | awk '{print "SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="" $2 "", NAME="" "eth0" """}' | sudo tee /etc/udev/rules.d/10-network.rules
-
重启网络服务
sudo systemctl restart network
方法2:通过NetworkManager修改(推荐)
-
修改连接名称
使用nmcli
命令将原连接名(如ens33
)修改为目标名称(eth0
):sudo nmcli con mod "ens33" connection.id eth0
-
更新设备名称
将设备名与连接名绑定:sudo nmcli con mod eth0 connection.interface-name eth0
-
重启连接
sudo nmcli con down eth0 && sudo nmcli con up eth0
(二)Ubuntu系统(使用Netplan或NetworkManager)
Ubuntu 18.04及以上版本默认使用Netplan管理网络,部分版本仍支持/etc/network/interfaces
配置。
方法1:修改Netplan配置文件(Ubuntu 18.04+)
-
定位Netplan配置文件
配置文件通常位于/etc/netplan/
目录下,例如01-network-manager-all.yaml
或50-cloud-init.yaml
。 -
修改配置文件
编辑YAML格式的配置文件,将ethernets
下的原网卡名(如ens33
)修改为目标名称(eth0
),并更新dhcp4
或addresses
等配置:network: version: 2 ethernets: eth0: # 修改为目标网卡名 dhcp4: true # DHCP获取IP # 或静态IP配置: # addresses: [192.168.1.100/24] # gateway4: 192.168.1.1 # nameservers: # addresses: [8.8.8.8]
-
应用配置
sudo netplan apply
方法2:修改/etc/network/interfaces
(Ubuntu 16.04及以下)
-
编辑配置文件
修改/etc/network/interfaces
,将原网卡名(如ens33
)替换为目标名称(eth0
):auto eth0 iface eth0 inet dhcp
-
重启网络服务
sudo systemctl restart networking
不同发行版网卡名修改对比
为方便操作,以下表格总结主要发行版的修改要点:
发行版 | 配置文件位置 | 关键修改步骤 | 重启命令 |
---|---|---|---|
CentOS 7+ | /etc/sysconfig/network-scripts/ifcfg-* |
修改NAME 、DEVICE 参数;创建UDEV规则绑定MAC与网卡名 |
systemctl restart network |
CentOS 8+ | NetworkManager连接配置 | 使用nmcli 修改连接名和设备名 |
nmcli con reload && nmcli up eth0 |
Ubuntu 18.04+ | /etc/netplan/*.yaml |
修改ethernets 下的网卡名,更新IP配置 |
netplan apply |
Ubuntu 16.04 | /etc/network/interfaces |
替换网卡名,修改接口配置 | systemctl restart networking |
常见问题处理
修改网卡名后无法启动网络?
原因:配置文件语法错误、UDEV规则冲突或SELinux(CentOS)阻止。
解决:
- 检查配置文件语法(如YAML格式缩进、
ifcfg
文件参数拼写)。 - 临时关闭SELinux测试:
sudo setenforce 0
,若正常则调整SELinux策略。 - 删除冲突的UDEV规则:
sudo rm /etc/udev/rules.d/10-network.rules
,重新生成规则。
重启后网卡名恢复为原名称?
原因:未创建永久UDEV规则或Netplan/NetworkManager配置未生效。
解决:
- CentOS系统:确保UDEV规则中MAC地址与网卡绑定正确,执行
sudo udevadm control --reload-rules && sudo udevadm trigger
重新加载规则。 - Ubuntu系统:检查Netplan配置文件是否保存,执行
sudo netplan --debug apply
查看错误日志。
通过以上步骤,可完成Linux系统中网卡名的永久修改,操作时需注意备份原配置文件,避免误操作导致网络中断,不同发行版的具体配置细节可能略有差异,建议根据官方文档调整参数。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16882.html