Linuxイーサネットの番号付けのリセット


7

ハードディスクを別のマシンに入れ、Linuxが新しいNICを認識すると、ethたとえばeth0->に新しい番号が付加されますeth1

これにより、システムのIPアドレスを取得するなど、個人用スクリプトの一部が破壊されます。

再起動または新しいNICが見つかるたびに番号をリセットする方法はありますか?

回答:


12

のudevルールを確認してください/etc/udev/rules.d

私のFedoraディストリビューションでは、自動的に書かれたルールがあります 70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:f1:cc:2f:1a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

これにより、イーサネットアドレスがデバイス名に明確にリンクされます。ファイルの先頭にあるコメントは、この動作を調整する方法の良い手がかりを提供します。


かっこいいです、ubuntuにもこのルールがあります。
-c2h2

2
@ c2h2目標がNICの番号を最初から付け直すだけの場合、最も簡単な解決策はこのファイルを削除してから再起動することです-起動プロセス中に自動的に再生成され、最初のNICはeth0。
クローミー

うん、それは完璧に動作します!
c2h2

2

これをスクリプトに追加します。システムによっては、rootとして実行する必要がある場合があります。

ethX=`ifconfig -s | awk 'NR==2 {print $1}'`

次に$ethX、NICの変数として使用できます。
これは、ifconfig -s行2と列1のテキストを除くすべての出力を取得して解析します。


1

私が理解していることから、Linuxはバスの番号付けを使用して、特定のマシンでのインターフェースの順序と番号付けを決定します。PCIバス、mini-PCI、またはその他のものを使用できます。最近、あらゆる種類と種類の並列起動スクリプトのために、ブートごとに時々物事が完全にランダムになりました(実際、同じマシン上でNICの名前は多かれ少なかれ同じですが、他のデバイスはそれほどではありません)。

明らかに、バス上のデバイスの順序はマシンごとに変わります。変更されないのはMACアドレスです。

私の解決策:

udevを使用している場合、ここで説明したルール(Debinの場合、ubuntuも同様)に類似したudev構成ルールを使用して、特定のインターフェースとNICのMACアドレス間のバインディングを強制できます。

警告Emptor:一部のNICでは、MACを編集できます。この場合、機能しません。

課外情報:実装が難しい代替案は、Matt Domsch / DellがFedoraに提案している新しいメカニズムを使用することです。

Ubuntuに関する限り、そのスキームを統合する提案もあります。上記1によると:Fedoraは先にbiosdevnameを出荷していますが、他のLinuxディストリビューションもそれを採用する予定です。これはすでにUbuntu 11.04にこれを統合するための青写真があり、OpenSUSEに含めるための機能要求もあると伝えられています。

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.