不知道你有否在 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 命令参数。