2011年7月24日日曜日

CentOS 6.0 で NIC と ethX の対応を変更する

CentOS 5 以下では、/etc/sysconfig/network-scripts/ifcfg-ethX の HWADDR= に MAC アドレスを指定することで、NIC と ethX の対応関係を変更することができました。しかし、CentOS 6.0 では、HWADDR= による入れ替えはできなくなりました。
CentOS 6.0 では、/etc/udev/rules.d/S70-persistent-net.rules の NAME= により、入れ替えを行うことができます。
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a3:8b:6c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a3:8b:6d", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
なお、ifcfg-ethX に、HWADDR= を指定することはできるものの、実際の MAC と一致しているかどうかのチェックのみ行うようになっています。
/etc/sysconfig/network-scripts/ifup-eth より抜粋します。
...
# bail out, if the MAC does not fit
if [ -n "${HWADDR}" ]; then
    FOUNDMACADDR=$(get_hwaddr ${REALDEVICE})
    if [ "${FOUNDMACADDR}" != "${HWADDR}" -a "${FOUNDMACADDR}" != "${MACADDR}" ]; then
            echo $"Device ${DEVICE} has different MAC address than expected, ignoring."
            exit 1
    fi
fi
...
上記が CentOS 6.0 の記述内容ですが、CentOS 5 では次のようになっており、rename_device() という関数により入れ替えが行われていました。
...
# 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=`get_device_by_hwaddr ${HWADDR}`
        if [ -n "$curdev" ]; then
          rename_device "${REALDEVICE}" "${HWADDR}" "${curdev}" || {
            echo $"Device ${DEVICE} has different MAC address than expected, ignoring."
            exit 1
          }
        else
            echo $"Device ${DEVICE} has different MAC address than expected, ignoring."
            exit 1
        fi
    fi
fi
...
参考URL: https://access.redhat.com/kb/docs/DOC-17338

2011-08-07追記
固定化する方法について、書きましたので、よろしければ参照ください。
CentOS 6.0 で NIC と ethX の対応を固定化する

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ