Ubuntu技巧:Ubuntu上通过ethtool工具更改82580网卡MAC

如果想在Ubuntu下永久更改网卡MAC要如何实现,在网上搜了一些方法,单是大部分都是使用脚本配置;无意间搜到ethtool可以读写网卡eeprom的数据,我尝试直接从网卡的EEPROM中做手脚,成功更改mac后,不管系统如何更换,网卡Mac都会永久更改。ethtool 工具有一个-E 指令, 可以通过此指令修改网卡的eeprom. 前提是此网卡驱动编写了ethtool驱动接口,并具有eeprom。

参考网站:

https://blog.csdn.net/sdvch/article/details/48712555

https://m.jb51.net/article/141793.htm

https://www.jianshu.com/p/b515676409c8

具体实现方法步骤:

1,找到网卡的VenID:DevID

这个是ethtool可以通过设备号来索引到eeprom的具体位置,可以通过如下两种方式获取:

可以分别通过2种方式取得:

1) lspci 查看

lspci  -nn -v |grep "Ethernet Controller"

打印如下:

02:05.0 Ethernet controller [0200]: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) [8086:150e] (rev 01)

2)Intel 网卡eeprom已经包含了VenID:DevID, 具体可以查看每个网卡的芯片及开发手册

ethtool -e eth0 | grep 0x0010 | awk '{print "0x"$13$12$15$14}'

打印如下:0x150e8086,此即为magic 后需填的参数。

2,查看网卡eeprom的数据,确定mac的偏移地址

用ifconfig命令查看eth0网卡的mac如下:

eth0 Link encap:以太网  硬件地址 a0:00:00:c9:00:00

用如下命令查看eeprom的数据内容,确定Mac数据偏移量:

sudo ethtool -e eth0 offset 0x0000 length 512
A000 00C9 0000 0D20 FFFF 3029 FFFF FFFF
3029 0000 27EB 0000 8086 150E 8086 B3C2
FFFF FFFF 5C00 00C1 6AE2 0044 4C00 0698
3DBF 7000 1A0E 0000 0783 10A6 0000 0602
E384 2401 0000 0C00 0480 FFFF FFFF 0888
1C40 003C 0000 1404 0000 0000 1000 FFFF
0100 4000 1332 4003 0100 4000 FFFF 068C
0100 4000 0100 4000 FFFF 0140 FFFF FFFF
FFFF FFFF 021A 8000 FFFF FFFF FFFF FFFF
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
08A8 06AC FFFF FFFF 0800 FFFF FFFF 0839
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF
A000 00C9 0100 FFFF FFFF FFFF FFFF FFFF

从以上数据可以看出这里的mac数据在第一行的位置(不同网卡mac数据存放位置在eeprom不一样,需谨慎更改

3,更改mac数据并重新上电,验证mac和网络是否正常
通过如下指令更改每个mac数据:

sudo ethtool -E eth0 magic 0x150e8086 offset 0x04 value 0xd0

更改后我的网卡重新上电后读到的mac如下:

eth0 Link encap:以太网  硬件地址 a0:00:00:c9:d0:00

每次更改一个值,为了确保改的位置是正确的(不正确极大可能将网卡eeprom写乱,错误数据会导致系统复位后网卡无法加载,再无法找到网卡设备,这个后果比较严重,只能重新用DOS烧写eeprom来回复网卡),使用步骤2的查看指令来校验自己更改的位置和数据是否准确,单次写错不要紧,在不复位情况下将值重新写回来即可,更改完后重启系统,系统起来后如果一切正常,网卡可正常加载并联网及证明修改成功。

猜你喜欢

转载自blog.csdn.net/qq_28643619/article/details/103077659
今日推荐