🗺️博客地图

📍方法一:ethtool命令

📍方法二:eeupdate工具

🖈eeupdate常用参数

🖈eeupdate常见用法

在实际生产过程中,由于某些原因可能需要修改网卡的 MAC 地址。本文介绍两种修改Intel网卡MAC地址的方法

方法一:ethtool命令

1、备份网卡eeprom,运行命令:

ethtool -e 网口名称 raw on > 网口名称.data

例如:ethtool -e eth5 raw on > /root/backup/eth5.data

2、检查网卡mac地址在网卡eeprom中的偏移量,运行命令:

ethtool -e 网口名称 | grep "mac地址"

例如:ethtool -e eth5 | grep "5c 35 9f 48 e2 11")

查看mac地址偏移量是否符合下面的要求

3、检查网卡的magic值( VenID与DevID ),magic值可以通过命令lspci -nn -vv | grep Eth查询,下列示例的magic需要根据实际情况进行修改,macgic值得确认

[root@localhost ~]# lspci -nn -vv | grep Eth

pcilib: sysfs_read_vpd: read failed: Input/output error

0b:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)

        Subsystem: Intel Corporation Ethernet Server Adapter X520-2 [8086:000c] 

13:00.0 Ethernet controller [0200]: VMware VMXNET3 Ethernet Controller [15ad:07b0] (rev 01)

        Subsystem: VMware VMXNET3 Ethernet Controller [15ad:07b0]

通过ethtool -i网卡名称 可以知道0b:00.0才是我们需要的,0b:00.0 那一列中 中括号包围的部分就是DevID与VenID ([8086:10fb]),按0x VenID DevID拼接就是:0x10fb8086

5、修改网卡mac
如果网卡是82599或X520,使用ethtool -e p1p1(p1p1是第一个接口的名称,根据实际情况修改),检查偏移量为0x0360开始的6个字节是否是当前mac地址(把当前的mac记录下来,以便后续还原)
如果确认无误,82599或X520修改MAC地址可以依次执行下列命令,最后1列的值是改成的MAC

           网卡      0xVenID与DevID     偏移量      字节     mac值
ethtool -E p1p1 magic 0x10fb8086 offset 0x360 length 1 value 0x48     
ethtool -E p1p1 magic 0x10fb8086 offset 0x361 length 1 value 0xf8
ethtool -E p1p1 magic 0x10fb8086 offset 0x362 length 1 value 0xdb
ethtool -E p1p1 magic 0x10fb8086 offset 0x363 length 1 value 0x7e
ethtool -E p1p1 magic 0x10fb8086 offset 0x364 length 1 value 0xda
ethtool -E p1p1 magic 0x10fb8086 offset 0x365 length 1 value 0x5c

如果网卡是X550T,则需要更改上面的magic值和offset值,依旧使用ethtool -e p1p1(p1p1是第一个接口的名称,根据实际情况修改),检查偏移量为0x0212开始的6个字节是否是当前mac地址(把当前的mac记录下来,以便后续还原)

如果确认无误,X550T网卡修改MAC可以依次执行下列命令,最后1列的值是改成的MAC

ethtool -E p1p1 magic 0x15638086 offset 0x0212 length 1 value 0xf8
ethtool -E p1p1 magic 0x15638086 offset 0x0213 length 1 value 0xf2
ethtool -E p1p1 magic 0x15638086 offset 0x0214 length 1 value 0x1e
ethtool -E p1p1 magic 0x15638086 offset 0x0215 length 1 value 0x12
ethtool -E p1p1 magic 0x15638086 offset 0x0216 length 1 value 0x0c
ethtool -E p1p1 magic 0x15638086 offset 0x0217 length 1 value 0x8c

如果网卡是X710 等其他Inter的网卡,通过上面的方法的方法无法在eeprom中找到唯一的MAC值,而且按照ethtool命令进行修改,但是有时这种方法可能会因各种原因而失败。那么可以通过方法二进行修改

方法二:eeupdate工具

1. 修改前,先备份要修改网卡的 eeprom 值:

运行命令

ethtool -e 网口名称 raw on > 网口名称.data

(例如 ethtool -e ens192 raw on > /opt/backup/ens192.data

2. 将压缩包上传到要修改 MAC 地址的服务器,解压:unzip Eeupdate_Linux64.zip

3. 进入 OEM_Mfg 目录:

cd Eeupdate_Linux64/OEM_Mfg

4. 给文件添加执行权限:

chmod +x install

chmod +x eeupdate64e

5. 执行安装:

./install 

(如果报错,先尝试往下面步骤继续操作)

6. 查看需要修改 MAC 网卡的 bus-info 值:

ethtool -i <网卡>

        查看网卡bus-info值:

[root@localhost OEM_Mfg]# ethtool -i ens192 | grep -i bus-info

bus-info: 0000:0b:00.0

bus-info 由四部分组成:按顺序分别是值域(0000),总线值(0b),设备值(00),功能值(0)

7. 查看需要修改 MAC 网卡原来的 MAC 值:

ip a 或者 ip link show <网卡> 或者 ifconfig

        查看网卡MAC地址

[root@localhost OEM_Mfg]# ip link show ens192 | grep link

    link/ether 00:50:56:89:b5:21 brd ff:ff:ff:ff:ff:ff

8. 执行 eeupdate64e 查看所有网卡设备

./eeupdate64e/ALL

        查找要修改MAC的网卡的NIC

[root@localhost OEM_Mfg]# ./eeupdate64e /ALL

Using: Intel (R) PRO Network Connections SDK v2.35.23

EEUPDATE v5.35.23.02

Copyright (C) 1995 - 2020 Intel Corporation

Intel (R) Confidential and not for general distribution.

NIC Bus Dev Fun Vendor-Device  Branding string

=== === === === ============= =================================================

  1  11  00  00   8086-1521    Intel(R) Ethernet Server Adapter I350-T4

命令输出显示的 Bus、Dev、Fun 分别就是对照网卡设备 bus-info 的总线值、设备值和功能值;那么将 NIC=1 设备的 Bus、Dev、Fun 转换为 16 进制就是 b00,对应的就是上面的 ens192 网卡的 0b:00.0

9. 除了上面,还可以直接查看 MAC 地址进行对照,比如查看 NIC=1 设备的 MAC 值:

./eeupdate64e /NIC=<要查看网卡的NIC值> /MAC_DUMP

        查看指定NIC网卡的MAC值

[root@localhost OEM_Mfg]# ./eeupdate64e /NIC=1 /MAC_DUMP

Using: Intel (R) PRO Network Connections SDK v2.35.23

EEUPDATE v5.35.23.02

Copyright (C) 1995 - 2020 Intel Corporation

Intel (R) Confidential and not for general distribution.

NIC Bus Dev Fun Vendor-Device  Branding string

=== === === === ============= =================================================

  1  11  00  00   8086-1521    Intel(R) Ethernet Server Adapter I350-T4

 1: LAN MAC Address is 00505689B521.

10. 找到要修改 MAC 网卡后,就可以执行命令修改 MAC:./eeupdate64e /NIC=<要修改网卡的NIC值> /MAC=<mac地址> (MAC 地址要小写)

        修改网卡MAC

[root@localhost OEM_Mfg]# ./eeupdate64e /NIC=1 /MAC=48f8db7eda5c

Using: Intel (R) PRO Network Connections SDK v2.35.23

EEUPDATE v5.35.23.02

Copyright (C) 1995 - 2020 Intel Corporation

Intel (R) Confidential and not for general distribution.

NIC Bus Dev Fun Vendor-Device  Branding string

=== === === === ============= =================================================

  1  11  00  00   8086-1521    Intel(R) Ethernet Server Adapter I350-T4

 1: Updating Mac Address to 48F8DB7EDA5C...Done.

 1: Updating Checksum and CRCs...Done.

11. 修改后,需要重启服务器,重启后,查看网卡 mac 是否修改成功

eeupdate常用参数

/HELP 或 /?:显示命令行帮助信息。
/ALL:选择系统中找到的所有适配器。
/NIC=XX:选择指定的适配器 (1-32)。
/MAC=macaddr:使用 macaddr 替换 EEPROM 中的 MAC 地址,不修改 EEPROM 中的其它内容。
/DUMP:将 EEPROM 存储器中的内容转存到文件中。如:./eeupdate64e /NIC=1 /DUMP
/MAC_DUMP:显示适配器的 MAC 地址。

eeupdate常见用法

查看所有适配器:

./eeupdate64e /ALL

命令输出会显示 nic 号对应的网卡

查看指定 nic 号网卡的 MAC:

./eeupdate64e /NIC=1 /MAC_DUMP

修改网卡 MAC:

在 CentOS 系统下,如果您想直接写入网卡 1 的 MAC 地址为 48F8DB7EDA5C,则可以使用以下命令:

eeupdate64e /NIC=1 /MAC=48f8db7eda5c

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐