下文主要记录Ubuntu18.04中修改默认的网络接口名称,例如Ubuntu中的默认网络接口以ens32命名,这里将其修改为internet等。

  1. 通过修改/etc/default/grub禁用Linux自动生成的可预测命名规则。
  2. 通过/etc/udev/rules.d/70-persistent-net.rules手动绑定MAC和名称。

修改grub配置

修改/etc/default/grub的配置如下:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

随后执行sudo update-grub使其生效并重启,此时系统回退到传统的eth0eth1等简单命名方式,避免因命名规则变化导致配置冲突。

接下来需同步修改原有网卡配置文件(如/etc/netplan/*.yaml)。

参数作用

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"是Linux系统启动时传递给内核的关键参数组合,主要用于强制使用传统的网卡命名规则(如eth0eth1,替代现代Linux发行版默认的“一致性网络设备命名规则”(如ens33enp0s3)。

  1. net.ifnames=0:关闭systemd和udev的“可预测命名规则”(Predictable Network Interface Names),该规则基于网卡的物理位置(如 PCI 槽位、MAC 地址)生成名称(如 enp0s3)。
  2. biosdevname=0:禁用Dell开发的biosdevname工具,该工具尝试根据BIOS信息(如板载网卡顺序)命名网卡(如 em1、p3p4)。

工作原理

  1. 内核启动阶段生效:这两个参数在 Linux 内核初始化时被解析,通知udevsystemd跳过现代命名逻辑,直接使用内核原始分配的网卡名(即ethX)。
  2. 依赖GRUB传递:通过修改GRUB配置文件(/etc/default/grub)并更新引导加载程序(update-grub),确保参数在每次启动时生效。

修改udev配置

/etc/udev/rules.d/70-persistent-net.rules是Linux系统中由udev 设备管理器生成并维护的配置文件,主要用于持久化绑定网卡设备的物理地址(MAC)与逻辑名称(如 eth0)的映射关系

当系统检测到新网卡时,udev会根据此文件中的规则,将网卡的MAC地址与指定的名称(如eth0)绑定,确保每次重启后同一网卡的名称不变。

在多网卡或硬件变动(如更换PCI插槽)的场景中,避免网卡名称随机变化(如从eth0变为eth1),导致网络配置失效。

若通过内核参数net.ifnames=0 biosdevname=0禁用现代命名规则(如enp0s3),此文件是手动指定ethX名称的必要配置。

工作原理

  1. 自动生成规则:系统首次启动时,udev自动扫描网卡信息(MAC 地址、PCI 位置等),生成此文件。规则格式示例如下:SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:xx:xx:xx", NAME="eth0" 其中ATTR{address}MAC地址,NAME为自定义名称。
  2. 文件位于/etc/udev/rules.d/,文件名前缀数字(如 70-)决定规则加载顺序,数字越小优先级越高。
  3. 规则生效需重启系统或触发udev重载:sudo udevadm control --reload-rules

示例

/etc/udev/rules.d/70-persistent-net.rules(如果不存在则新建或通过sudo /lib/udev/write_net_rules强制生成)中增加配置如下:

root@ubuntu:/etc/udev/rules.d# cat 70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:44:79:60",  NAME="internet"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:44:79:6a", NAME="wan"

参考文档

  1. Regenerate 70-persistent-net.rules in Linux Without Reboot | Baeldung on Linux
  2. ubuntu18.04修改网卡名称-CSDN博客