Linux网卡没有eth0显示ens33原因以及解决办法

udev(user space device)负责处理内核与用户空间之间设备节点信息交互问题,udev对于网络接口名称生成策略进行了改进。这样可以保证网卡的名称不会因为插拔顺序等问题而发生变化。

在使用Linux系统时,有些用户可能会遇到一个问题:在ifconfig命令中,原本应该有的eth0网卡不见了,取而代之的是ens33。这究竟是怎么回事呢?今天我们就来深入探讨一下。

Linux网卡没有eth0显示ens33原因以及解决办法

首先,我们需要知道eth0和ens33分别代表什么意思。eth0是传统的网络接口名字,在早期版本的Linux系统中经常被使用。而ens33则是新出现的、符合规范的接口名字格式。那为什么会出现从eth0变成了ens33这样的情况呢?

其实,这与udev规则配置有关系。udev(user space device)负责处理内核与用户空间之间设备节点信息交互问题,并且能够动态地管理设备文件或硬件设备节点等信息。在最近几个版本中,udev对于网络接口名称生成策略进行了改进。

具体来说,在过去旧式命名方式下(如 eth*),当你增加或删除一个网卡后可能导致已存在接口名发生变化;而新式命名方式下(如 ens*),每次插拔都只影响新增加/移除掉线状态下未用过名称段上编号最小者,并不影响其他标识。这样可以保证网卡的名称不会因为插拔顺序等问题而发生变化,提高了系统的可靠性。

那么如何解决Linux网卡没有eth0显示ens33的问题呢?其实很简单,在终端中输入以下命令即可:

1. 编辑/etc/default/grub文件

Linux网卡没有eth0显示ens33原因以及解决办法

sudo vim /etc/default/grub

2. 找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"这一行,在其中加入net.ifnames=0 biosdevname=0,修改后该行应该是这样子的:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0 biosdevname=0"

3. 更新grub配置文件

sudo update-grub

4. 重启系统即可看到原来的eth0已经回来了!

当然,如果你更喜欢使用新式接口名字方式(比如只想用ens33),也可以在第二步中将net.ifnames和biosdevname都改成1。总之,根据自己需求进行选择就好了。

最后再说一句:虽然命名规则发生了变化,但并不影响我们对于网络设备进行管理或者编写脚本等操作。无论是eth*还是ens*,它们所代表的含义都没有改变。希望今天分享能够给大家带来帮助!