linux可不可以修改设备mac地址
这篇文章主要介绍“linux可不可以修改设备mac地址”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“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地址
前言
一块网卡的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}<br>: enp0s25: mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000<br>link/ether f0:de:f1:ad:1d:f0 brd ff:ff:ff:ff:ff:ff<br>
link/ether 后面那一串用 : 分割的6字节十六进制数就是网卡的MAC地址了,也就是 f0:de:f1:ad:1d:f0
使用ip命令也能修改MAC地址,但是需要root权限:
1、禁用网卡
sudo ip link set dev ${interface} down<br>
2、修改MAC地址
有的网络运营商可能会拒绝为不正确的 MAC 分配 IP 地址,因此推荐前三个字节用真实的MAC地址前缀,后三个字节可以随机更改。
sudo ip link set dev ${interface} address ${new_mac}<br>
我们再查看一下网卡的MAC地址
ip link show ${interface}<br>: enp0s25: mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000<br>link/ether f0:de:f1:ff:ff:ff brd ff:ff:ff:ff:ff:ff<br>
你会发现网卡已经被改成新的MAC地址了.
3、最后重启网卡
sudo ip link set dev ${interface} up<br>
永久修改:
通过ethtool工具修改eeprom值
查看
ethtool -e 网卡名 查看eeprom里面的值<br>
修改
ethtool -E 网卡名 magic 0xVenID与DevID的8字节16进制整数 offset 偏移(如0×0000)value 值(如:0xAA)
magic的值:
~# lspci -s 02:05.0 -nn<p>02:05.0 Ethernet controller [0200]: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) [8086:100f] (rev 01)</p>
<p>上面的[8086:100f]:100f为VenID,8086为DevID,magic的值为:0x100f8086<br></p>
或者观察eeprom 0×0010地址处的值获得:
~# ethtool -e eth2 | grep 0x0010 | awk '{print "0x"$13$12$15$14}'<br>0x100f8086<br>
offset的值:
[root@SG2-21 /root]#ethtool -e eth0<br>Offset Values<br>------ ------<br>0x0000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <br>0x0010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <br>0x0020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <br>0x0030 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <br>0x0040 00 50 c2 2f 30 13 ff ff ff ff ff ff ff ff ff ff <br>0x0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <br>0x0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff <br>0x0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff<br>
举例:
修改eth0 MAC地址的命令:
ethtool -E eth0 magic 0x100f8086 offset 0x0040 value 0x00<br>ethtool -E eth0 magic 0x100f8086 offset 0x0041 value 0x0a<br>ethtool -E eth0 magic 0x100f8086 offset 0x0042 value 0x0b<br>ethtool -E eth0 magic 0x100f8086 offset 0x0043 value 0x00<br>ethtool -E eth0 magic 0x100f8086 offset 0x0044 value 0x01<br>ethtool -E eth0 magic 0x100f8086 offset 0x0045 value 0x03<br>
脚本:
#!/bin/bash<br>if [ -z "$1" ]; then<br>echo "Usage: $0 /"<br>echo " i.e. $0 eth0"<br>exit 1<br>fi<p>if ! ifconfig $1 > /dev/null; then<br>exit 1<br>fi</p>
<p>dev=$(ethtool -e $1 | grep 0x0010 | awk '{print "0x"$13$12$15$14}')<br>ethtool -E $1 magic $dev offset 0xAA value 0xBB</p>
<p>0xAA 就是eeprom位置<br>0xBB 就是新值<br></p>
Setting the MAC Address:For example
[root@SG2-21 /root]#setMAC 00:50:C2:2F:30:13<br> setmac to 00:50:C2:2F:30:13<br>
The script is:
#!/bin/bash<p> echo "setmac to $1"<br> numbers=(`echo $1 | tr ':' ' '`)<br> # echo ${numbers[1]}</p>
<p> ethtool -E eth0 magic 0x3A8EBEEF offset 0x40 value 0x${numbers[0]}<br> ethtool -E eth0 magic 0x3A8EBEEF offset 0x41 value 0x${numbers[1]}<br> ethtool -E eth0 magic 0x3A8EBEEF offset 0x42 value 0x${numbers[2]}<br> ethtool -E eth0 magic 0x3A8EBEEF offset 0x43 value 0x${numbers[3]}<br> ethtool -E eth0 magic 0x3A8EBEEF offset 0x44 value 0x${numbers[4]}<br> ethtool -E eth0 magic 0x3A8EBEEF offset 0x45 value 0x${numbers[5]}<br></p>
关于“linux可不可以修改设备mac地址”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注每日运维(www.mryunwei.com)行业资讯频道,小编每天都会为大家更新不同的知识点。