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)行业资讯频道,小编每天都会为大家更新不同的知识点。