用MAC来定网卡编号

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

不知道你有否在 Linux 设定过两张或多张同一型号网卡的经验吗?

若有,或许有时会搞不清楚哪张是 eth0 哪张是 et1 ?

又,你是否有想到过用网卡的 MAC 地址来设定呢?

若以上问题(尤其是最后一个)你感兴趣的话,那,我里教你一个法子试试看:

1) 编写一个 renameif 的 script 并存于 /usr/local/sbin/renameif ,

其内容如:

#!/bin/bash

PROG=/sbin/nameif

P_ARG="-s"

MACTAB=/etc/mactab

IFLIST=$(sed 's/#.*$//' $MACTAB)

stop_if () {

while [ "$2" ]; do

/sbin/ifconfig -a | grep -q "$1" && /sbin/ifconfig $1 down

shift 2

done

}

rn_myif () {

while [ "$2" ]; do

$PROG $P_ARG {1//eth/my} $2

shift 2

done

}

rn_eth () {

while [ "$2" ]; do

$PROG $P_ARG $1 $2

shift 2

done

}

stop_if $IF_LIST

rn_myif $IF_LIST

rn_eth $IF_LIST

并加上 x 权限:

# chmod +x /usr/local/sbin/renameif

2) 编写 /etc/mactab ,将 inteface 跟 MAC address 填好,例如:

eth0 00:00:21:d2:30:da

eth1 00:00:21:d5:1b:b8

且分于 /etc/sysconfig/network-scripts/ifcfg-eth* 里设定 HWADDR=

如 HWADDR=00:00:21:d2:30:da

3) 修改 /tc/sysconfig/network-scripts/ifup ,

找到如下这行:

/sbin/nameif "${REALDEVICE}" "${HWADDR}" || {

在该行前面加 renameif 的路径,使之变成如下:

RNIF_SH=/usr/local/sbin/renameif

test -x ${RNIF_SH} && ${RNIF_SH} &;/dev/null

/sbin/nameif "${REALDEVICE}" "${HWADDR}" || {

5) 重新启动 network 服务:

# service network stop

# service network start

若改不过来,那就先用 rmmod 将 module 拔掉再跑 network service 。

要是还不行,那就给他 reboot 一下吧﹗呵~~~ _^

注意之处:

1) 以上只在 redhat 8.0 上测试过,不保证适用于其它版本。

2) /etc/modules.cnf 还是建议设 alias (可用相同 module,这正是本串重点。)

3) 建议将 MAC 写在 /etc/mactab 内,

并时设定 /etc/sysconfig/network-scripts/ifcfg-eth* 里的 HWADDR= 句子。

MAC 只能用小写,除非你去修改 ifdown 的 fgrep 命令参数。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航