- nForceチップセットにはEtherネットインターフェースが含まれていて,Linux2.6カーネルでこれを駆動しているのはdrivers/net/forcedeth.c
- nForceチップセットの中にはBIOSが正しくEtherアドレスを返答しないものや他と逆順で返答するものなどがあり,Etherアドレスの取得に失敗することがあるらしい.
- ブート時にEtherアドレスの取得に失敗する場合やブート事には成功していてもスリープからの復帰時などにEtherアドレス取得に失敗することがあるらしい.
- 物理的に一つのネットワークデバイスに複数のEtherアドレスが存在した状態になったり,Etherアドレスが切り替わってしまったりする場合があるらしい.
- どのように振る舞うかはforcedeth.cのバージョンにも依存する.linux-2.6.22に含まれているのはver 0.60 (2007/1/20)
- 失敗した場合00:00:6cで始まるEtherアドレスが使用される.後半はランダムに決定される.
- 00:00:6cはプライベート用Etherアドレス前半部の一つ
- 該当部分,forcedeth.c,ver0.60の5059行から
if (!is_valid_ether_addr(dev->perm_addr)) {
printk(KERN_ERR "%s: Invalid Mac address detected: %02x:%02x:%02x:%02x:%02x:%02x\n",
pci_name(pci_dev),
dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
printk(KERN_ERR "Please complain to your hardware vendor. Switching to a random MAC.\n");
dev->dev_addr[0] = 0x00;
dev->dev_addr[1] = 0x00;
dev->dev_addr[2] = 0x6c;
get_random_bytes(&dev->dev_addr[3], 3);
}
-
- このコードにより次のようなカーネルメッセージが残される.
linux kernel: 0000:00:04.0: Invalid Mac address detected: 00:00:00:00:00:00
linux kernel: Please complain to your hardware vendor. Switching to a random MAC.
- ランダムなEtherアドレスが使用される度にudevにより新しいインターフェースが追加されたと認識され,eth1,eth2...と新しいインターフェース番号が増え続けてしまう症状が発生することがあるらしい.
- udevの設定によってEtherアドレスを強制出来るらしい.Etherアドレスは小文字?
- リンク