ハードディスクを別のマシンに置き、Linuxが新しいNICを認識すると、eth
に新しい番号が付けられます。たとえばeth0
-> eth1
これは私の個人的なスクリプトのいくつかを分解します、例えば、システムのIPアドレスを取得します。
再起動OR new NICが見つかったときに、毎回番号をリセットする方法はありますか?
/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"
これは、イーサネットアドレスをデバイス名に明確にリンクします。ファイルの上部にあるコメントは、この動作を調整する方法の良い手がかりを提供します。
これをスクリプトに追加します。システムによっては、rootとして実行する必要がある場合があります。
ethX=`ifconfig -s | awk 'NR==2 {print $1}'`
次に、NICへの変数として$ethX
を使用できます。
これはifconfig -s
の出力を取得し、2行目と1列目のテキストを除くすべてを解析します。
私の理解では、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に含めるための機能要求もあります。
うまくいけば、これが役立つでしょう。