当前位置:Linux教程 - 网络配置 - 网络配置 - 用MAC来定网卡编号

网络配置 - 用MAC来定网卡编号

用MAC来定网卡编号
2004-04-23 15:18 pm
来自:Linux文档
现载:Www.8s8s.coM
地址:无名

不知道你有否在 Linux 設定過兩張或多張同一型號網卡的經驗嗎?
若有,或許有時會搞不清楚哪張是 eth0 哪張是 eth1 ?
又,你是否有想到過用網卡的 MAC 地址來設定呢?

若以上問題(尤其是最後一個)你感興趣的話,那,我這裡教你一個法子試試看:

1) 編寫一個 renameif 的 script 並存於 /usr/local/sbin/renameif ,
其內容如下:
代码:
#!/bin/bash
PROG=/sbin/nameif
P_ARG="-s"
MACTAB=/etc/mactab
IF_LIST=$(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 ,將 interface 跟 MAC address 填好,例如:
eth0 00:00:21:d2:30:da
eth1 00:00:21:d5:1b:b8
且分別於 /etc/sysconfig/network-scripts/ifcfg-eth* 裡設定 HWADDR=

3) 修改 /etc/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 serice 。
要是還不行,那就給他 reboot 一下吧﹗呵~~~ ^_^

注意之處:
1) 以上只在 redhat 8.0 上測試過,不保證適用於其它版本。
2) /etc/modules.conf 還是建議設 alias (可用相同 module,這正是本串重點。)
3) 建議將 MAC 寫在 /etc/mactab 內,
並同時設定 /etc/sysconfig/network-scripts/ifcfg-eth* 裡的 HWADDR= 句子。
MAC 只能用小寫,除非你去修改 ifdown 裡的 fgrep 命令參數。