web-dev-qa-db-ja.com

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

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

これは私の個人的なスクリプトのいくつかを分解します、例えば、システムのIPアドレスを取得します。

再起動OR new NICが見つかったときに、毎回番号をリセットする方法はありますか?

7
c2h2

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

私の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"

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

12
wallyk

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

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

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

2
jonescb

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

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

私の解決策:

Udevを使用している場合は、次のようなudev構成ルールを使用できます ここで説明 (Debinの場合、ubuntuも同様です)特定のインターフェイスとNICのMACアドレス間のバインドを強制します。

警告エンプター:一部のNICではMACの編集が許可されています。この場合、それは機能しません。

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

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

うまくいけば、これが役立つでしょう。

1
dawebber