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地址。
本教程操作環境: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?>?/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視頻教程》