修改以太网卡mac地址

2024-06-18 01:12
文章标签 mac 地址 修改 以太网卡

本文主要是介绍修改以太网卡mac地址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原生以太网卡与PCIe以太网卡

以Intel 原生以太网卡与PCIe以太网卡为例:

Intel原生以太网卡和PCIe以太网卡在系统中实现网络连接时,涉及到与系统总线(如PCIe总线)的连接方式和性能差异。

Intel 原生以太网卡

定义:所谓原生以太网卡通常指的是集成在主板上的网卡,这些网卡直接与主板芯片组相连,而不是通过额外的插卡形式存在。

连接方式:

集成到主板:原生以太网卡通常直接集成在主板上,连接到主板的南桥芯片或是直接连接到CPU的I/O接口。

专用接口:这种集成方式可以利用主板上的专用接口和线路,通常能够提供高效的数据传输路径和较低的延迟。

性能:

低延迟:由于集成在主板上,数据传输路径较短,因此原生以太网卡通常具有较低的延迟。

系统资源利用:原生网卡通常与主板设计相匹配,能够更高效地利用系统资源,如内存和CPU。

PCIe 以太网卡

定义:PCIe(Peripheral Component Interconnect Express)以太网卡是通过PCIe插槽连接到主板上的独立网卡。

连接方式:

插入PCIe插槽:这种网卡通过插入主板上的PCIe插槽来连接系统总线。PCIe插槽有不同的带宽(x1、x4、x8、x16),通常以太网卡使用x1或x4带宽。

标准接口:PCIe提供高带宽、低延迟的数据传输路径,适合高速网络需求。

性能:

可扩展性:PCIe插槽提供灵活的扩展能力,可以根据需要更换或增加网络接口。

高带宽:PCIe接口能够提供高带宽,特别是对于万兆以太网(10GbE)或更高速率的网卡,PCIe接口能够充分利用其带宽优势。

延迟:尽管PCIe网卡具有高带宽优势,但由于数据需要通过PCIe总线传输,延迟可能略高于集成网卡。然而,这种差异通常在几纳秒级别,对大多数应用来说影响不大。

总线性能与带宽

PCIe带宽:PCIe总线带宽根据插槽类型而不同。PCIe 3.0 x1插槽的理论带宽为1GB/s,x4插槽为4GB/s,x16插槽为16GB/s。对于大多数以太网卡来说,即使是PCIe x1插槽的带宽也足够应对千兆以太网(1Gbps)或10GbE的需求。

总线利用率:原生以太网卡由于集成在主板上,其设计更加优化,能够更高效地利用系统总线。而PCIe网卡的性能更多依赖于PCIe插槽的带宽和主板的PCIe通道设计。

永久性修改以太网卡mac地址

明确mac地址存放位置

以太网卡的 MAC 地址通常存储在网卡上的 EEPROM(Electrically Erasable Programmable Read-Only Memory)芯片中。这种设计在很多网卡中都很常见,原因如下:

存储在 EEPROM 的原因

持久性:EEPROM 是一种非易失性存储器,这意味着在设备断电后数据不会丢失。因此,存储在 EEPROM 中的 MAC 地址在系统重新启动或设备重新加电后仍然有效。

可编程性:EEPROM 可以通过特定的工具或命令进行修改(如 ethtool 命令),这使得在某些情况下可以重新配置 MAC 地址。但通常情况下,MAC 地址在生产过程中就已经被写入 EEPROM,并且在正常使用中不会被改变。

独立性:将 MAC 地址存储在 EEPROM 中,使其与网卡的其他功能和配置独立开来。即使系统硬件或软件发生变化,网卡的 MAC 地址仍然保持不变。

存储位置

独立网卡:对于独立的 PCIe 网卡,MAC 地址通常存储在网卡上的一个小型 EEPROM 芯片中。这些芯片通常是一个小型的8针或16针器件,焊接在网卡的电路板上。

集成网卡:对于集成在主板上的以太网控制器,MAC 地址也会存储在一个专用的 EEPROM 或直接在主板芯片组的非易失性存储区中。

局限性

并非所有网卡和驱动都支持修改mac地址

修改方法

  1. 获取PCIe 配置空间的网卡VID和DID, 这两个组合起来就是网卡magic
  2. lspci 查看网卡对应总线号
  3. lspci -s <总线号> -nn 获取magic

  

VID:100f

DID:8086

Magic:0x100f8086

  • 通过ethtool 获取magic

  • 注意事项:offset 0不能写入奇数,offset x范围不能超过5, 避免损坏固件。

ethtool -E ens33 magic 0x100f8086 offset 0 value 0xec

ethtool -E ens33 magic 0x100f8086 offset 1 value 0xe0

ethtool -E ens33 magic 0x100f8086 offset 2 value 0x20

ethtool -E ens33 magic 0x100f8086 offset 3 value 0x00

ethtool -E ens33 magic 0x100f8086 offset 4 value 0x10

ethtool -E ens33 magic 0x100f8086 offset 5 value 0xac

这篇关于修改以太网卡mac地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070892

相关文章

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Linux文件名修改方法大全

《Linux文件名修改方法大全》在Linux系统中,文件名修改是一个常见且重要的操作,文件名修改可以更好地管理文件和文件夹,使其更具可读性和有序性,本文将介绍三种在Linux系统下常用的文件名修改方法... 目录一、引言二、使用mv命令修改文件名三、使用rename命令修改文件名四、mv命令和rename命

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命