文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>linux下 如何修改mac地址让它一直生效?

linux下 如何修改mac地址让它一直生效?

时间:2006-06-28  来源:afei_xyd

>ifconfig eth0 down > ifconfig eth0 hw ether **:**:**:**:**:** > ifconfig eth0 ipadderss netmask 255.255.255.0 > ifconfig eth0 up   note:有时候网络还是连接不上,可能和防火墙有密切关系。   原文作者:sunmoonsea    在论坛上看到大家关于如何修改mac地址:
sbin/ifconfig eth0 down
sbin/ifconfig eth0 hw ether 00 11 22 33 44 55
sbin/ifconfig eth0 up
通过ifconfig可以看到修改已经生效,可是重启机器后又恢复成了原来得mac.
不知道大家有什么好的方法?

 platinum 回复于:2006-05-30 10:32:27

写个 script,在开机后自动初始化一些你想要开机后自动完成的东西
参考 /etc/rc.local

 sunmoonsea 回复于:2006-05-30 10:56:23

rc.local中是否可以调整其先后顺序让mac执行于应用程序之前?

 platinum 回复于:2006-05-30 11:14:40

可以,修改 /etc/rc.sysinit 即可,把你想要的东西插到里面

 kenduest 回复于:2006-05-30 13:29:24

引用:原帖由 sunmoonsea 于 2006-5-30 09:47 发表
在论坛上看到大家关于如何修改mac地址:
sbin/ifconfig eth0 down
sbin/ifconfig eth0 hw ether 00 11 22 33 44 55
sbin/ifconfig eth0 up
通过ifconfig可以看到修改已经生效,可是重启机器后又恢复成了原来得m ... 

若是你是使用 RHEL 这类版本的话,请考虑先看一下 /etc/sysconfig/network-scripts/ifup 看一下:


# this isn't the same as the MAC in the configuration filename. It is
# available as a configuration option in the config file, forcing the kernel
# to think an ethernet card has a different MAC address than it really has.
if [ -n "${MACADDR}" ]; then
ip link set dev ${DEVICE} address ${MACADDR}
fi
if [ -n "${MTU}" ]; then
ip link set dev ${DEVICE} mtu ${MTU}
fi


可以发现到目前都是流行使用 ip 程式,已经逐渐不使用 ifconfig 程式了。

而你网路卡配置 /etc/sysconfig/network-scripts/ifcfg-eth0 应该就会使用像是:


DEVICE=eth0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
MACADDR=00:11:22:33:44:55


其中 MACADDR 应该就是你预期要改的的项目。把预期的网路卡卡号放进去就可以。

改好执行 /etc/init.d/network stop ; /etc/init.d/network start

若是您是使用 SUSE Linux 的话,SuSE 本身就已经给您一个很明确清楚的样板档案,档案名称为 /etc/sysconfig/network/ifcfg.template,该档案里面有提到配置说明。

比方你目前使用中的网路卡的 mac addr 是  00:11:22:33:44:55,那您的系统应该就会有 /etc/sysconfig/network/ifcfg-eth-id-00:11:22:33:44:55 档案,该档案内容会像是:


IPADDR=192.168.1.1
NETMASK=255.255.255.0


你要换网路卡卡号的话,就是多 LLADDR 该叙述。

IPADDR=192.168.1.1
NETMASK=255.255.255.0
LLADDR=00:48:54:11:22:33


改好后执行 rcnetwork stop ; rcnetwork start 应该就可以了 (用 ifup/ifdown 也可以)。

另外补充的是,使用 ip 程式配置网路介面 mac 组态的话,该配置设定实际底层会是:

ip link set eth0 address 00:48:54:11:22:33


提供给你参考。

==

 Ksharp 回复于:2006-05-30 14:19:28

顶一下,很专业

 sunmoonsea 回复于:2006-05-30 15:43:01

# remap, if the device is bound with a MAC address and not the right device num
# bail out, if the MAC does not fit
if [ -n "${HWADDR}" ]; then
    FOUNDMACADDR=`get_hwaddr ${REALDEVICE}`
    if [ "${FOUNDMACADDR}" != "${HWADDR}" ]; then
        curdev=`ip -o link | awk -F ':' -vIGNORECASE=1 '/$HWADDR/ { print $2 }'`        rename_device "${REALDEVICE}" "${HWADDR}" "${curdev}" || {
            echo $"Device ${DEVICE} has different MAC address than expected, ignoring."
            exit 1
        }
    fi
[root@mail1 network-scripts]# service network restart
Shutting down interface eth0:  Device eth0 has different MAC address than expected, ignoring.
                                                           [FAILED]
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Setting network parameters:                                [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Bringing up interface eth1:                                [  OK  ]

 sunmoonsea 回复于:2006-05-30 15:53:35

To platinum :按照你说得,将脚本插入到/etc/rc.d/rc.sysinit中后,重启后脚本自动执行,mac实现了自动修改.
To kenduest  : 我按照你说得方法在/etc/sysconfig/network-scripts/脚本中更改了mac,重启network服务后生效了,可是reboot后网卡依然是原来得mac.
我直接使用ip程式进行mac得修改,效果还是一样.

刚才看kenduest说得ifup脚本中有一段关于脚本系统时与realdevice得mac得比较,让我觉得如果在这里是不是可以做一下修改.

每次重启时,系统在读mac得时候并不是取得etc/sysconfig/network-scripts/ifcfg-eth0脚本中得mac地址

[ 本帖最后由 sunmoonsea 于 2006-5-30 15:56 编辑 ]

 kenduest 回复于:2006-05-30 16:14:24

1. 請貼出你的 ifcfg-eth0 檔案設定

2. 請貼出 ifconfig eth0 顯示結果

==

 sunmoonsea 回复于:2006-05-30 16:34:54

[root@mail1 network-scripts]# more ifcfg-eth0
# Advanced Micro Devices [AMD]|79c970 [PCnet32 LANCE]
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.16.4
NETMASK=255.255.255.0
GATEWAY=192.168.16.1
HWADDR=00:11:22:33:44:55
[root@mail1 network-scripts]#
[root@mail1 network-scripts]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:3D:E2:28
          inet addr:192.168.16.4  Bcast:192.168.16.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1176 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:243888 (238.1 Kb)  TX bytes:17065 (16.6 Kb)
          Interrupt:10 Base address:0x1400

我想将mac改成:00:11:22:33:44:55,使用命令修改后,重启后有变回了原来得mac,计算机启动时,是从哪里读取得mac地址哪?

[ 本帖最后由 sunmoonsea 于 2006-5-30 16:44 编辑 ]

 kenduest 回复于:2006-05-30 18:33:17


DEVICE=eth0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
MACADDR=00:11:22:33:44:55


你確定你有改成這樣嗎 ? 注意 MACADDR,這是指定要變更使用目前預期的 mac address。

==

 sunmoonsea 回复于:2006-05-31 13:18:28

[root@mail1 network-scripts]# more ifcfg-eth0
# Advanced Micro Devices [AMD]|79c970 [PCnet32 LANCE]
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.16.4
NETMASK=255.255.255.0
GATEWAY=192.168.16.1
HWADDR=00:11:22:33:44:55,
是啊,这就是我现在ifcfg-eth0中的内容.
通过试验,发现ifup中所读取得realdevice就是读取得ifcfg-eth0中得mac数值.但是重启电脑得时候读取得不是这个脚本里面得mac数值,大家能帮忙做一下试验吗?我在自己电脑上做了好多次都是这个结果!

 platinum 回复于:2006-05-31 13:20:31

引用:原帖由 kenduest 于 2006-5-30 18:33 发表

DEVICE=eth0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
MACADDR=00:11:22:33:44:55


你確定你有改成這樣嗎 ? 注意 MACADDR,這是指定要變更使用目前預期的 mac address。

== 

这里的 MAC 如果改成和物理 MAC 不同的内容,network start 的时候会报 FAILD,我曾经试过

 x-phenix 回复于:2006-05-31 13:28:05

厉害 :) 我什么时候能到这个水平呢?

 kenduest 回复于:2006-05-31 13:46:07

引用:原帖由 sunmoonsea 于 2006-5-31 13:18 发表
[root@mail1 network-scripts]# more ifcfg-eth0
# Advanced Micro Devices [AMD]|79c970 [PCnet32 LANCE]
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.16.4
NETMASK=255.255.255.0
GATEWAY=192.168.16.1
HWADDR=00:11:22:33:44:55


我还是没看到你写的 MACADDR 叙述不是 ? 你似乎都还是没写啊.... ??????

1. HWADDR 与 MACADDR 意思十万八千里... HWADDR 是指定系统有多张网路卡时, 只有网路卡 mac addr 为指定项目时才使用该 IP 分配设定。MACADDR 是说指定这个介面配置把网路卡 MAC 调整后才套用该 IP 配置。

2. 你用 pcnet32 driver ? 你该不会在 vmware 环境内 ? 我无法确定 vmware 环境内的 nic driver 是否有支援 mac 变更设定的功能,建议你找实际机器测试会比较好。

==

[ 本帖最后由 kenduest 于 2006-5-31 13:48 编辑 ]

 platinum 回复于:2006-05-31 13:48:11

引用:原帖由 kenduest 于 2006-5-31 13:46 发表
大哥, HWADDR 与 MACADDR 意思十万八千里... 

我看成了 HWADDR,关于 MACADDR 我还没有测试过,上面有些妄言了 ^_^

 kenduest 回复于:2006-05-31 14:02:43

引用:原帖由 platinum 于 2006-5-31 13:48 发表
我看成了 HWADDR,关于 MACADDR 我还没有测试过,上面有些妄言了 ^_^ 

不会啦, 互相讨论求进步 :-)

端午节快乐啊 :-)

==

 kenduest 回复于:2006-05-31 14:08:23

引用:原帖由 x-phenix 于 2006-5-31 13:28 发表
厉害 :) 我什么时候能到这个水平呢? 

其實看一下 ifup 等相關 script 寫法應該就知道為何要這樣設定了 :-)

這就是 open source 好處,怎樣配置的流程都可以看的一清二楚.

==

 platinum 回复于:2006-05-31 14:36:40

引用:原帖由 kenduest 于 2006-5-31 14:02 发表

不会啦, 互相讨论求进步 :-)

端午节快乐啊 :-)

== 

谢谢 kenduest ^_^

不水了,目前由于没环境试验,还希望楼主尽快将试验结果告诉大家

 playmud 回复于:2006-06-01 12:56:11

[root@mylinux default]# cat ifcfg-eth0
# Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile)
DEVICE=eth0
BOOTPROTO=none
BROADCAST=10.130.255.255
#HWADDR=00:11:25:2E:6E:18
IPADDR=10.130.1.212
NETMASK=255.255.0.0
NETWORK=10.130.0.0
MACADDR=11:22:33:44:55:66
ONBOOT=yes
USERCTL=yes
IPV6INIT=no
PEERDNS=yes
GATEWAY=10.130.254.254
TYPE=Ethernet
[root@mylinux default]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:11:25:2E:6E:18
          inet addr:10.130.1.212  Bcast:10.130.255.255  Mask:255.255.0.0
          inet6 addr: fe80::211:25ff:fe2e:6e18/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:916 errors:0 dropped:0 overruns:0 frame:0
          TX packets:242 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:171860 (167.8 KiB)  TX bytes:41960 (40.9 KiB)
          Base address:0x8000 Memory:c0220000-c0240000

非虚拟机。

 Andsun 回复于:2006-06-01 14:03:13

路过支持一下~~~~

 sunmoonsea 回复于:2006-06-06 11:25:57

引用:原帖由 kenduest 于 2006-5-31 13:46 发表

我还是没看到你写的 MACADDR 叙述不是 ? 你似乎都还是没写啊.... ??????

1. HWADDR 与 MACADDR 意思十万八千里... HWADDR 是指定系统有多张网路卡时, 只有网路卡 mac addr 为指定项目时才使用该 IP 分配设 ... 

to kenduest:
这几天出差了,一直没有做试验,刚看了一下,却是因为/network-scripts/if-eth0中没有注意到hwaddress与macaddress得区别.
换成macaddress后reboot后mac更改值生效了.顺便说一下,我这里用得是vmware

 ycxm 回复于:2006-06-29 10:50:55

好啊, 太好了, 有关vmware 在网络上的应用多贴点啊

现在 二个 三个系统 应用的很多啊

 zhangzhu1984 回复于:2006-07-21 09:29:41

引用:原帖由 kenduest 于 2006-5-30 13:29 发表

若是你是使用 RHEL 这类版本的话,请考虑先看一下 /etc/sysconfig/network-scripts/ifup 看一下:


# this isn't the same as the MAC in the configuration filename. It is
# available as a co ...

这位的方法我试过,我的是FC4,修改了之后,在ifdown eth0的时候会报一个错误:与原地址不符。但是MAC地址的确修改成了的

matrix_lhx 回复于:2006-07-21 14:27:33

为什么我用的SUSE Linux 在打开ifcfg-eth-id-。。。。这个文件后,写入不了东西呢?
我还想问一下在SUSE下什么代表网关呢?还是GATEWAY吗?或者是其它的单词。因为我在安装SUSE的时候没有出现关于网关的配置项!

kenduest 回复于:2006-07-21 17:33:43

引用:原帖由 zhangzhu1984 于 2006-7-21 09:29 发表
这位的方法我试过,我的是FC4,修改了之后,在ifdown eth0的时候会报一个错误:与原地址不符。但是MAC地址的确修改成了的

你改过 MACADDR,那请把 HWADDR 也改好与 MACADDR 相同吧。或者是根本就不要写 HWADDR ,这样才不会让问题更复杂。

==

[ 本帖最后由 kenduest 于 2006-7-21 17:34 编辑 ]

kenduest 回复于:2006-07-21 17:37:08

引用:原帖由 matrix_lhx 于 2006-7-21 14:27 发表
为什么我用的SUSE Linux 在打开ifcfg-eth-id-。。。。这个文件后,写入不了东西呢?

因为你根本不是 root 身分?

引用:我还想问一下在SUSE下什么代表网关呢?还是GATEWAY吗?或者是其它的单词。因为我在安装SUSE的时候没有出现关于网关的配置项!

你应该先看一下 suse 官方本身提供的 system/network administration guide,里面都说很清楚相关配置。若真的不清楚请自行用 yast 去修改网路配置吧。

==

big 回复于:2006-07-28 19:52:42

如果是软件需要的话,我可以给你一个改过的intel 82559。

 
相关阅读 更多 +
排行榜 更多 +
超级冒险王安卓版

超级冒险王安卓版

休闲益智 下载
玩具小镇手机版

玩具小镇手机版

休闲益智 下载
这一关特上头手机版

这一关特上头手机版

休闲益智 下载