PR

[Linux] eth0 が無くなった場合の対処

ホントはダメなのだけれど面倒だからHDD だけ新しい環境に移動してしまうことがある。とりあえず動作してくれるLinux には毎度感謝するのだが、今回は問題が発生した。

内容としては起動するがSSH で接続できなくなってしまったというもの。調査すると、どうやらping で接続先ホスト名の解決ができないようだから、ネットワークの問題らしい。

スポンサードリンク

ネットワークの確認

ifconfig を参照するとeth0 がない。

eth1      Link encap:イーサネット  ハードウェアアドレス XX:XX:XX:XX:XX:c7
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:1113239 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:1071324 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          メモリ:d0400000-d0420000
lo        Link encap:ローカルループバック
vmnet1    Link encap:AMPR NET/ROM  ハードウェアアドレス
vmnet8    Link encap:AMPR NET/ROM  ハードウェアアドレス

※一部略
※vmnet1、8 はUbuntu にインストールしたVMware Server2 によるもの

eth1 の設定変更

ここで、eth0 のかわりにeth1 が居ることに気がつく。この時点での対処法は主に2つあり、1つはeth0 とeth1 を入れ替えるもの。1つはeth1 として認識されているNIC をeth0 として再定義するもの。

入れ替え

前者はeth0 であるべき構成になっているものをeth1 に変更するもの。試したところ確かにネットワークに接続できたが、どこにeth0 を指定して通信するものがあるかわからないから気分の良いものではない。

再定義

後者は、MAC アドレスと紐つけるなど固有情報を記憶するように仕様変更があったらしく、その影響とのこと。以前の環境だった eth0 はこの場合不要だから、eth0 を削除してeth1 とされているものをeth0 であるように定義しなおせば良い。

設定変更方法

方法1

$ vi /etc/network/interfaces としてeth1 をeth0 に書き換える

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.1.133
netmask 255.255.255.0
gateway 192.168.1.1

方法2

$ sudo vi /etc/udev/rules.d/70-persistent-net.rules として以前のeth0 をコメントアウトか削除し、eth1 を新たにeth0 として定義する(今回採用した方法はこちら)

# 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 0x14e4:0x1677 (tg3)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:XX:XX:XX:XX:44", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10ef (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:XX:XX:XX:XX:c7", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
※コマンド結果など一部再構成しています

参考文献

コメント