674 字
3 分钟
在PVE系统中修改RTL8125网卡MAC地址

前言#

最近在使用PVE系统时遇到一个问题,我的一张4口RTL8125网卡,每个接口的MAC地址和物理接口顺序不一致。这导致在配置网络时非常不方便,比如mac1可能对应第3个物理接口,mac3对应第1个物理接口等。为了让网络配置更直观,我需要修改网卡MAC地址,让MAC地址和物理接口顺序保持一致。本文将详细介绍如何在PVE 8.3系统中修改RTL8125网卡的MAC地址。

位置mac
接口388:c9:b3:b0:6b:85
接口288:c9:b3:b0:6b:86
接口188:c9:b3:b0:6b:87
接口488:c9:b3:b0:6b:88

环境情况#

  • PVE 8.3
  • 内核版本:6.8+
  • RTL8125网卡
  • 编译工具(gcc、make等)

准备工作#

首先,我们需要从GitHub下载rtnicpg工具:

git clone https://github.com/redchenjs/rtnicpg.git
cd rtnicpg

内核适配#

由于PVE 8.3使用的是6.8+内核,我们需要对代码进行一些修改。主要修改在pgdrv.c文件的第339行:

// 修改前
vma->vm_flags |= VM_IO;

// 修改后
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);

修改完成后,编译驱动:

make

修改MAC地址步骤#

  1. 首先卸载原有的RTL8125驱动:
rmmod r8125
  1. 加载修改后的驱动: 这个驱动的作用是允许我们访问网卡的EEPROM(电可擦除可编程只读存储器)区域。通过这个驱动,我们可以:
  • 读取网卡的MAC地址和其他配置信息
  • 修改网卡的MAC地址
  • 访问网卡的efuse区域
  • 进行网卡的低级配置

需要注意的是,这个驱动会临时替代原有的r8125驱动,以获得对网卡硬件的直接访问权限。

insmod pgdrv.ko
  1. 查看当前网卡的MAC地址:
./rtnicpg-x86_64 /vMAC
  1. 读取当前网卡的efuse信息:
./rtnicpg-x86_64 /r /efuse /# 1
./rtnicpg-x86_64 /r /efuse /# 2
./rtnicpg-x86_64 /r /efuse /# 3
./rtnicpg-x86_64 /r /efuse /# 4
  1. 修改指定网卡的MAC地址(以修改网卡3为例):
./rtnicpg-x86_64 /efuse /nodeid 88C9B3B06B85 /# 3
  1. 恢复系统状态:
rmmod pgdrv
modprobe r8125
systemctl restart networking.service

注意事项#

  1. 修改MAC地址前请务必备份重要数据
  2. 确保系统已经安装了必要的编译工具
  3. 修改过程中可能会暂时断开网络连接
  4. 建议在维护时间进行此操作

故障排除#

如果遇到问题,可以检查:

  1. 驱动是否正确加载
  2. 网卡是否被正确识别
  3. 系统日志中是否有相关错误信息

总结#

通过以上步骤,我们可以在PVE 8.3系统中成功修改RTL8125网卡的MAC地址。这个过程需要谨慎操作,确保按照正确的顺序执行命令,并在操作前做好必要的准备工作。

参考资料#

在PVE系统中修改RTL8125网卡MAC地址
https://www.jianyun.run/posts/modify-rtl8125-mac/
作者
唐长老日志
发布于
2025-03-25
许可协议
CC BY-NC-SA 4.0