eth0がeth1に変わってしまう

マザーボード等、ハードウェアを一新して以前のシステムを移行した。基本的にはうまくいったが、ネットワークにつながらない。ifconfigで見るとeth0がない。しかし、ブートメッセージではeth0で認識していることがわかる。試しに、/etc/network/interfacesの設定ををeth1にしてみたらうまく認識してくれた。

でも、理由がわからないのは気持ち悪い。

(eth1の設定で)ブートメッセージを追っかけると、最初はeth0で認識しているが、途中でeth1を生かしていることがわかる(MACアドレスは一応伏字)。

% dmesg | grep eth\[0-9\]
sky2 eth0: addr 00:1f:c6:xx:xx:xx
sky2 eth1: enabling interface
ADDRCONF(NETDEV_UP): eth1: link is not ready
sky2 eth1: Link is up at 1000 Mbps, full duplex, flow control both
ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
eth1: no IPv6 routers present

いろいろ調べた結果、etchからはインタフェース名とMACアドレスをヒモ付けるようになったらしい。

/etc/udev/rules.d/z25_persistent-net.rules

このファイルに設定が書き込まれている。

SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:20:ed:xx:xx:xx", NAME="eth0″

SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:1f:c6:xx:xx:xx", NAME="eth1″

対処法は、

  • そのまま、eth1で使う。
  • 存在しないインタフェースがeth0で残っているのは気持ち悪いのでeth0を再設定したい。
    • 古いeth0の行を削除し、eth1をeth0と書き換えてリブートする。
    • 両方の行を削除し、リブートする。
    • /etc/udev/rules.d/z25_persistent-net.rules 自体を削除してリブートする。

のいずれか。ブート時に、このファイルに存在しないインタフェースを見つけたり、このファイルそのものがない場合は新規生成したりして、うまいこと整合性をとってくれる。

これによって、インタフェースを増減してもインタフェース名が変わってしまうことはなくなったが知らないと今回のようにはまる。ブートメッセージで最初はeth0として認識しているので余計混乱してしまった。

XenでetchをDomainUにしている人は、リブートのたびにMACアドレスが変わるのでethの番号が増えてしまうらしい。

参照:
Debian/NetworkInterfaceName – TachTrac – Trac
ドメインU のMACアドレス問題

Debian/etch

Posted by k1