debianでeth0とeth1のNICを反転させる。

■eth0とeth1のNICを反転させる。
 squeezeでPCI接続の1GbpsのNICを追加した。
 同じように追加したNECのPCサーバでは問題無いが、IBM時代のLenovoではこの症状が出た。
 下記と異なるのは、「75」ではなく「70」なのだが、ファイル名が問題ではない。
 今回はeth0として誤って認識したNICのLANケーブルを取り外し、「interfaces」設定を空にして作業した。

 参考:ネットワーク設定 - Debian
 http://www.devsite.jankh.net/desetnetwork.html

■設定のバックアップ

$ sudo cp -pi /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak

■MACアドレスの確認
 ※以下はあえて隠したが、16bitの最後の2桁が違えば見分けも楽。
  今回はベンダーが同じなので、上位を見るのは余り意味が無かった。

$ env LANG=C /sbin/ifconfig | grep HWaddr | sed s/"\(HWaddr \).*"/"\1\[Mac Address\]"/g
eth0      Link encap:Ethernet  HWaddr [Mac Address]
eth1      Link encap:Ethernet  HWaddr [Mac Address]

■IPを持っているのがeth1であることを確認。

$ ip addr | grep eth1 | sed s/".*inet "//g | sed s/" .*"//g | tail -1
192.168.188.188/24

■以下の形式のeth1をeth0に書き替えて、eth0行と順序を入れ替えて、eth0をeth1に書き換える。

$ sudo grep eth1 /etc/udev/rules.d/70-persistent-net.rules.bak | \
  sed s/" "/"\n"/g | sed s/"00.*\""/"\[Mac Address\]"/
SUBSYSTEM=="net",
ACTION=="add",
DRIVERS=="?*",
ATTR{address}=="[Mac Address],
ATTR{dev_id}=="0x0",
ATTR{type}=="1",
KERNEL=="eth*",
NAME="eth1"
■「/etc/network/interfaces」のeth0をeth1に修正。
 再起動時に以下のようにrenameされていればOK。
 ※kernelの認識順を変えるので、システムの再起動をすること。
  「/etc/init.d/networking restart」では変わっているように見えるだけで、
  両方のNICが同じIPを持っていた。LANケーブルを抜いているなら確認してみると良い。

$ sudo shutdown -r now
$ dmesg | grep eth | grep renamed
[    3.418590] udev[471]: renamed network interface eth0 to eth0-eth1
[    3.419581] udev[472]: renamed network interface eth1 to eth0
[    3.469226] udev[471]: renamed network interface eth0-eth1 to eth1

■wolの設定は次回起動時に応答する設定なので、rename後のeth0に指定すればよい。
 「/etc/rc.local」に書き込む方法は以下と同じ。

 Debian Lenny をWOL起動する
 http://d.hatena.ne.jp/labunix/20110612

$ sudo ethtool eth0 | grep Wake-on
        Supports Wake-on: g
        Wake-on: g
$ sudo ethtool eth1 | grep Wake-on
        Supports Wake-on: pumbg
        Wake-on: g

■LennyとSqueezeでは以下のようにパスが異なる。
 「whereis ethtool」で事前に確認しておく。

 Lenny:/usr/sbin/ethtool -s eth0 wol g
 Squeeze:/sbin/ethtool -s eth0 wol g

■「/etc/rc.local」は次々回の再起動時に有効になるので、
 再起動して確認するにはコマンドを直接叩く。

$ sudo /sbin/ethtool -s eth0 wol g
$ dmesg | grep "wake\-up"
[ 1118.756392] tg3 0000:03:08.0: wake-up capability enabled by ACPI


■後はeth1の設定を行い、LANケーブルを接続すれば普通に使える。
 Lennyと異なり、以下は「non-free」から取得する必要がある。

$ dmesg | grep tg3 | grep "Failed to"
[    5.980331] tg3 0000:03:08.0: eth0: Failed to load firmware "tigon/tg3_tso5.bin"

$ grep "non\-free" /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ squeeze main non-free
$ sudo apt-get update
$ sudo apt-get install -y firmware-linux-nonfree