跳至正文
首页 » Linux 网络接口命名指南:从 eno1/enp4s0 回归传统 eth0/eth1

Linux 网络接口命名指南:从 eno1/enp4s0 回归传统 eth0/eth1

网口名称变更史

1. 传统的 eth0 时代

在早期的 Linux 内核中,网卡被简单地命名为 eth0eth1 等。其分配逻辑是基于内核探测驱动的先后顺序。

  • 优点:名称简洁,易于编写脚本。

  • 致命伤:在拥有多块网卡的服务器(如高性能计算或集群环境)中,一旦主板硬件扫描顺序发生微小偏移,原来的 eth0 可能在重启后变成 eth1。这意味着绑定在 eth0 上的防火墙规则和网络服务将瞬间失效,甚至导致服务器断网失联。

2. 现代的“可预测”命名 (Predictable Network Interface Names)

为了解决上述可靠性问题,从 systemd v197 开始,主流发行版(Ubuntu 16.04+、CentOS 7+ 等)引入了基于硬件物理位置的命名规则:

  • eno1:主板集成的网卡(Onboard)。

  • enp3s0:位于第 3 号总线、第 0 号插槽的 PCI 网卡。

  • 好处:无论系统如何升级,只要网卡插在那个物理位置,它的名字就永远不会变。

回归传统:如何将网卡名修改回 eth0

尽管物理命名更安全,但在许多自动化运维场景或云环境下,开发者仍倾向于使用统一的 eth0。以下是以 Ubuntu 系统为例的修改全过程。

第一阶段:修改内核启动参数

系统默认开启了物理命名策略,我们需要通过内核参数将其禁用。

1. 编辑 GRUB

 使用 root 权限打开 /etc/default/grub

sudo nano /etc/default/grub

2. 定位参数行

找到 GRUB_CMDLINE_LINUX,将其修改为:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
  • net.ifnames=0:禁用 systemd 的硬件位置命名规则。

  • biosdevname=0:禁用某些硬件厂商提供的命名建议。

保存并退出(Nano 编辑器按 Ctrl+O 确认,Ctrl+X 退出)。

3. 刷新配置

执行 sudo update-grub,让内核在下次启动时知道这个决定。

sudo update-grub

第二阶段:同步更新网络配置 (Netplan)

这是最关键的一步。如果内核改了名字,但你的网络配置文件里还写着旧名字,重启后你将无法通过网络连接到服务器。

1. 查看当前的 Netplan 配置文件(文件名可能不同):

ls /etc/netplan/

2. 检查配置

打开 /etc/netplan/ 目录下的 .yaml 文件

sudo nano /etc/netplan/01-netcfg.yaml

3. 重命名接口

 将 enp4s0(或其他旧名)全部替换为 eth0(或 eth1)。编辑该 .yaml 文件(例如 01-netcfg.yaml):

ethernets:
  eth0:  # 确保这里匹配新的网卡名
    dhcp4: true

将文件中所有的旧网卡名(如 enp3s0eno1)更改为 eth0注意:请保持 YAML 文件的缩进格式正确。

4. 重启系统

完成上述步骤后,重启服务器以使内核参数生效:

sudo reboot

5. 验证更改

重启后,使用以下命令检查网卡名称:

ip addr

你应该能看到网卡已经更名为 eth0 并且获取到了 IP 地址。

ip-a-result

从这张终端截图来看,我已经成功将网卡名称修改为了传统的 eth0eth1 风格。以下是对 ip a 输出结果的详细解读:

6. 结果解读

系统当前识别到 3 个网络接口:

  • lo (Loopback): 本地回环接口,用于系统内部通信。

  • eth0: 物理网卡 1。

  • eth1: 物理网卡 2(当前处于活跃状态)。

结语:选择权在你

enp... 回到 eth0 是一种从“物理安全性”向“运维便利性”的倾斜。在单网卡的 VPS 环境下,回归 eth0 能让配置脚本更具通用性;但在多网卡的高性能服务器上,保留物理位置命名往往是更稳妥的选择。

对于目前管理的 ClickHouse 等高负载服务器,你更看重命名的直观性,还是在大规模扩容时的物理稳定性?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注