Linux下修改MAC地址

1285阅读 0评论2013-01-07 kangjunping
分类:

Linux下修改MAC地址

Author: Jaylin Zhou

Date: 10/17/2009

 

使用ifconfig命令

标准形式:

# ifconfig device_name hw ether MAC_address

 

例如:

# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE   

SIOCSIFHWADDR: Device or resource busy

因为eth0正在使用,所以需要先执行ifdown操作。

 

现在做一个试验,我们先来查看eth0的配置文件,

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

HWADDR=00:0c:29:6a:56:56

NETMASK=255.255.255.0

IPADDR=192.168.1.9

TYPE=Ethernet

 

eth0关闭,更改其物理网卡,

# ifdown eth0

# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

# service network restart

# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:AA:BB:CC:DD:EE  

          inet addr:192.168.1.9  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::2aa:bbff:fecc:ddee/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:217441 errors:0 dropped:0 overruns:0 frame:0

          TX packets:845 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:13095796 (12.4 MiB)  TX bytes:116175 (113.4 KiB)

          Interrupt:169 Base address:0x2000 

 

这个时候如果想重启eth0或者关闭eth0都会失败,

# service network restart

Shutting down interface eth0:  Device eth0 has MAC address 00:AA:BB:CC:DD:EE, instead of configured address 00:0C:29:6A:56:56. Ignoring.

                                                           [FAILED]

这是为什么呢?查看一下eth0的配置文件,发现HWADDR的值并没有改变,但是/etc/init.d/network这个程序是要读取这个配置文件的。

 

现在,对eth0的操作都不能生效了。想用ifconfig命令将MAC地址改回去也不可以,因为eth0一直开启。想到了一个办法,先把配置文件里的HWADDR值记住,再将配置文件里的HWADDR的值改为“00:AA:BB:CC:DD:EE”,然后再关闭eth0,这次可以正常关闭了。这时再用ifconfig命令将MAC地址改为原来的值,这里是“00:0C:29:6A:56:56”。启动后MAC变成了原来的MAC

# ifconfig eth0 hw ether 00:0C:29:6A:56:56

# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:6A:56:56  

          inet addr:192.168.1.9  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe6a:5656/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:218729 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1460 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:13206469 (12.5 MiB)  TX bytes:201006 (196.2 KiB)

          Interrupt:169 Base address:0x2000 

然后再修改配置文件里的HWADDR值,该成原来的值“00:0C:29:6A:56:56”。重新启动eth0,一切又恢复了原来。

上一篇:uboot bootargs and bootcmd
下一篇:《Video for Linux Two (V4L2) ——驱动编写指南》翻译整理文档