linux可以修改設備mac地址嗎

linux可以修改設備mac地址,其修改方法:1、通過“ifconfig eth0 down ifconfig eth0 hw ether xx:xx:xx:xx ifconfig eth0 up”指令臨時修改mac地址;2、使用ip命令修改MAC地址;3、通過ethtool工具修改eeprom值即可永久修改mac地址。

linux可以修改設備mac地址嗎

本教程操作環境:linux5.9.8系統、Dell G3電腦。

linux可以修改設備mac地址嗎?

linux下修改網卡MAC地址

前言

一塊網卡的mac地址在出廠時已經寫入,有時候是寫入可以擦寫的eeprom中,但是要有相當的專業技術或專業的設備。

對于一些綁定了mac地址,更換了設備后又不想更換mac的,就需要修改mac地址了。

臨時修改(重啟失效):

方法一:
ifconfig eth0 down
ifconfig eth0 hw ether xx:xx:xx:xx
ifconfig eth0 up

方法二:

使用ip命令就能查看MAC地址了:

ip?link?show?${Interface} :?enp0s25:?<no-carrier>?mtu?1500?qdisc?fq_codel?state?DOWN?mode?DEFAULT?group?default?qlen?1000 link/ether?f0:de:f1:ad:1d:f0?brd?ff:ff:ff:ff:ff:ff</no-carrier>

link/ether 后面那一串用 : 分割的6字節十六進制數就是網卡的MAC地址了,也就是 f0:de:f1:ad:1d:f0

使用ip命令也能修改MAC地址,但是需要root權限:

1、禁用網卡

sudo?ip?link?set?dev?${interface}?down

2、修改MAC地址

有的網絡運營商可能會拒絕為不正確的 MAC 分配 IP 地址,因此推薦前三個字節用真實的MAC地址前綴,后三個字節可以隨機更改。

sudo?ip?link?set?dev?${interface}?address?${new_mac}

我們再查看一下網卡的MAC地址

ip?link?show?${interface} :?enp0s25:?<broadcast>?mtu?1500?qdisc?fq_codel?state?DOWN?mode?DEFAULT?group?default?qlen?1000 link/ether?f0:de:f1:ff:ff:ff?brd?ff:ff:ff:ff:ff:ff</broadcast>

你會發現網卡已經被改成新的MAC地址了.

3、最后重啟網卡

sudo?ip?link?set?dev?${interface}?up

永久修改:

通過ethtool工具修改eeprom值

查看

ethtool?-e?網卡名?查看eeprom里面的值

修改

ethtool -E?網卡名?magic?0xVenID與DevID的8字節16進制整數?offset?偏移(如0×0000)value?值(如:0xAA)

magic的值:

~#?lspci??-s?02:05.0?-nn  02:05.0?Ethernet?controller?[0200]:?Intel?Corporation?82545EM?Gigabit?Ethernet?Controller?(Copper)?[8086:100f]?(rev?01)  上面的[8086:100f]:100f為VenID,8086為DevID,magic的值為:0x100f8086

或者觀察eeprom 0×0010地址處的值獲得:

~#?ethtool?-e?eth1?|?grep?0x0010?|?awk?'{print?"0x"$13$12$15$14}' 0x100f8086

offset的值:

[root@SG2-21?/root]#ethtool?-e?eth0 Offset??????????Values ------??????????------ 0x0000??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0010??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0020??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0030??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0040??????????00?50?c2?2f?30?13?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0050??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0060??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff? 0x0070??????????ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff?ff

舉例:

修改eth0 MAC地址的命令:

ethtool?-E?eth0?magic?0x100f8086?offset?0x0040?value?0x00 ethtool?-E?eth0?magic?0x100f8086?offset?0x0041?value?0x0a ethtool?-E?eth0?magic?0x100f8086?offset?0x0042?value?0x0b ethtool?-E?eth0?magic?0x100f8086?offset?0x0043?value?0x00 ethtool?-E?eth0?magic?0x100f8086?offset?0x0044?value?0x01 ethtool?-E?eth0?magic?0x100f8086?offset?0x0045?value?0x03

腳本:

#!/bin/bash if?[?-z?"$1"?];?then echo?"Usage:?$0?/<interface></interface>" echo?"???????i.e.?$0?eth0" exit?1 fi  if?!?ifconfig?$1?&gt;?/dev/null;?then exit?1 fi  dev=$(ethtool?-e?$1?|?grep?0x0010?|?awk?'{print?"0x"$13$12$15$14}') ethtool?-E?$1?magic?$dev?offset?0xAA?value?0xBB  0xAA?就是eeprom位置 0xBB?就是新值

?Setting the MAC Address:For example

??[root@SG2-21?/root]#setMAC?00:50:C2:2F:30:13 ??setmac?to?00:50:C2:2F:30:13

The script is:

??#!/bin/bash  ??echo?"setmac?to?$1" ??numbers=(`echo?$1?|?tr?':'?'?'`) ??#?echo?${numbers[1]}  ??ethtool?-E?eth0?magic?0x3A8EBEEF?offset?0x40?value?0x${numbers[0]} ??ethtool?-E?eth0?magic?0x3A8EBEEF?offset?0x41?value?0x${numbers[1]} ??ethtool?-E?eth0?magic?0x3A8EBEEF?offset?0x42?value?0x${numbers[2]} ??ethtool?-E?eth0?magic?0x3A8EBEEF?offset?0x43?value?0x${numbers[3]} ??ethtool?-E?eth0?magic?0x3A8EBEEF?offset?0x44?value?0x${numbers[4]} ??ethtool?-E?eth0?magic?0x3A8EBEEF?offset?0x45?value?0x${numbers[5]}

相關推薦:《Linux視頻教程》

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享