Linux 64位系统设置IP时找不到eth0?原因分析与多种解决方法

XMSDN
请提供您需要摘要的具体内容,发送给我后,我会立刻为您生成一段100-200字的摘要。

本文目录导读:

  1. 为什么找不到 eth0

  2. 解决方案一:顺应规则,使用新名称(推荐)

  3. 解决方案二:修改Grub,强制还原为 eth0

  4. 解决方案三:检查 70-persistent-net.rules(旧版本)

Linux 64位系统设置IP时找不到eth0?原因分析与多种解决方法 **

在使用Linux 64位系统(特别是CentOS 7、Ubuntu 18.04及以上版本)进行网络配置时,许多新手甚至老用户都会遇到一个令人头疼的问题:当准备设置静态IP地址时,发现系统中并没有传说中的 eth0 网卡,取而代之的是 ens33enp0s3 或者其他名字的网卡,这种情况导致按照旧教程配置 /etc/sysconfig/network-scripts/ifcfg-eth0 文件后,网络依然不通。

Linux 64位系统设置IP时找不到eth0?原因分析与多种解决方法

为什么找不到 eth0?又该如何解决?本文将为你详细解析原因并提供几种行之有效的解决方案。

为什么找不到 eth0

在早期的Linux系统中,网卡名称通常被内核命名为 eth0eth1 等,随着系统的发展,特别是 systemdudev 的引入,为了实现网卡命名的“可预测性”和“稳定性”,Linux默认采用了一种基于硬件拓扑、固件或MAC地址的命名策略。

这种命名规则会导致网卡名称变成类似 enp3s0(PCI总线第3槽位)、ens33(PCI热插拔槽位)等形式。找不到 eth0 并不是网卡驱动没装,而是系统给它改了名字。

解决方案一:顺应规则,使用新名称(推荐)

最简单、最稳妥的方法是不纠结于名字,直接使用系统识别出的新网卡名称进行配置。

查看当前网卡名称在终端输入以下命令:

ip addrifconfig

假设你看到的网卡名称是 ens33

修改配置文件(以CentOS 7/8为例)进入网络脚本目录:

cd /etc/sysconfig/network-scripts/

查看是否存在 ifcfg-ens33 文件,如果没有,可以新建一个,或者将原有的 ifcfg-eth0 重命名为 ifcfg-ens33

编辑文件:

vi ifcfg-ens33

DEVICENAME 修改为当前的实际名称:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33      # 这里改为 ens33
UUID=xxxx-xxxx-xxxx-xxxx
DEVICE=ens33    # 这里改为 ens33
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

修改完成后,重启网络服务:

systemctl restart network

解决方案二:修改Grub,强制还原为 eth0

如果你有强迫症,或者因为某些旧软件的兼容性问题必须使用 eth0,可以通过修改内核引导参数来禁用“可预测命名规则”,恢复传统的命名方式。

编辑网卡配置文件确保你的配置文件名是 ifcfg-eth0中的 DEVICENAME 也是 eth0

修改 Grub 配置文件编辑 /etc/default/grub 文件:

vi /etc/default/grub

找到 GRUB_CMDLINE_LINUX 这一行,在引号内的末尾添加以下内容:

net.ifnames=0 biosdevname=0

修改前可能长这样:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

修改后:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"

重新生成 Grub 配置并重启运行以下命令使配置生效:

grub2-mkconfig -o /boot/grub2/grub.cfg

然后重启系统:

reboot

重启后再次使用 ip addr 查看,你会发现网卡名已经变回了熟悉的 eth0,此时设置静态IP即可生效。

解决方案三:检查 70-persistent-net.rules(旧版本)

如果你使用的是非常老的Linux版本(如CentOS 6),找不到 eth0 可能是因为更换了硬件或虚拟机克隆,导致MAC地址变化,而系统记录了旧的MAC地址绑定。

  1. 删除 /etc/udev/rules.d/70-persistent-net.rules 文件。

  2. 重启系统,系统会自动重新生成该文件,并将第一块网卡识别为 eth0

在Linux 64位系统中,找不到 eth0 是常态,对于大多数用户,建议采用方案一,直接使用 ens33 等新名称进行配置,这样可以避免修改底层引导参数带来的潜在风险,也更符合现代Linux系统的规范,只有在特殊情况下,才建议使用方案二进行强制修改。

希望这篇文章能帮你解决Linux设置IP时找不到网卡的困扰!

温馨版权提醒

用心撰写的内容,期待大家珍惜与爱护。

日常分享记得带上原文链接,一起守护原创。

取材网络的图文仅作学习使用,有问题随时沟通。

感恩每一份理解与支持

取消
微信二维码
微信二维码
支付宝二维码