SupermicroのIPMIカード、AOCIPMI20EのMACアドレスは、通常、eth0のMACアドレスを用いるようにマニュアルに書かれていたと思う。bondingをactive-backupモード(primaryオプション無し)で用いる場合には、active-slaveがeth1になってしまう場合があり、そのときには、eth0、eth1の両方からarpパケットが送信され、パケットロスが起きてしまう。

その際、別個のIP/MACアドレスをカードに割り当てたいが、どんなMACアドレスを振ったらいいのでしょう?

http://en.wikipedia.org/wiki/MAC_address

によると、02-xx-xx-xx-xx-xxであれば、Locally Administered MAC addressであるそうなので、この表記で右側の4オクテットにIPアドレスを16進でマッピングすれば良さそうである。

と言うわけで、次のスクリプトをつくってみました。

ip2mac.sh
#!/bin/bash

echo -n "02:00:"
printf "%.2x:" `echo $1 |sed -e 's/\./\ /g'`|sed -e 's/:$//g'
echo

使い方:

ktaka@x60:~$ ./ip2mac.sh 172.16.1.120
02:00:ac:10:01:78
ktaka@x60:~$ ./ip2mac.sh 192.168.20.30
02:00:c0:a8:14:1e