674 字
3 分钟
在PVE系统中修改RTL8125网卡MAC地址
前言
最近在使用PVE系统时遇到一个问题,我的一张4口RTL8125网卡,每个接口的MAC地址和物理接口顺序不一致。这导致在配置网络时非常不方便,比如mac1可能对应第3个物理接口,mac3对应第1个物理接口等。为了让网络配置更直观,我需要修改网卡MAC地址,让MAC地址和物理接口顺序保持一致。本文将详细介绍如何在PVE 8.3系统中修改RTL8125网卡的MAC地址。
位置 | mac | |
---|---|---|
接口3 | 88:c9:b3:b0:6b:85 | |
接口2 | 88:c9:b3:b0:6b:86 | |
接口1 | 88:c9:b3:b0:6b:87 | |
接口4 | 88: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地址步骤
- 首先卸载原有的RTL8125驱动:
rmmod r8125
- 加载修改后的驱动: 这个驱动的作用是允许我们访问网卡的EEPROM(电可擦除可编程只读存储器)区域。通过这个驱动,我们可以:
- 读取网卡的MAC地址和其他配置信息
- 修改网卡的MAC地址
- 访问网卡的efuse区域
- 进行网卡的低级配置
需要注意的是,这个驱动会临时替代原有的r8125驱动,以获得对网卡硬件的直接访问权限。
insmod pgdrv.ko
- 查看当前网卡的MAC地址:
./rtnicpg-x86_64 /vMAC
- 读取当前网卡的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
- 修改指定网卡的MAC地址(以修改网卡3为例):
./rtnicpg-x86_64 /efuse /nodeid 88C9B3B06B85 /# 3
- 恢复系统状态:
rmmod pgdrv
modprobe r8125
systemctl restart networking.service
注意事项
- 修改MAC地址前请务必备份重要数据
- 确保系统已经安装了必要的编译工具
- 修改过程中可能会暂时断开网络连接
- 建议在维护时间进行此操作
故障排除
如果遇到问题,可以检查:
- 驱动是否正确加载
- 网卡是否被正确识别
- 系统日志中是否有相关错误信息
总结
通过以上步骤,我们可以在PVE 8.3系统中成功修改RTL8125网卡的MAC地址。这个过程需要谨慎操作,确保按照正确的顺序执行命令,并在操作前做好必要的准备工作。
参考资料
- rtnicpg GitHub仓库
- PVE官方文档
在PVE系统中修改RTL8125网卡MAC地址
https://www.jianyun.run/posts/modify-rtl8125-mac/