PCIアドレスに基づいてNIC名を決定する

PCIアドレスに基づいてNIC名を決定する

以前のシステムをRHEL 5.4から5.8にアップグレードしています。 3つのNICがインストールされており、それぞれ定義されたIPアドレスに関連付けられた配線があります。

アップグレード後、カードは同じPCIアドレスにありますが、オペレーティングシステムでNIC名が正しくありません。

network old  new
net A   eth0 eth1
net B   eth1 eth2
net C   eth2 eth0

使用されるPCIアドレスは05.03.0あり、Net C残りの2つは03.03.0あります03.03.1

ファイルがありません/etc/udev/rules.d/70-persistent-net.rules

各インターフェイスが使用するPCIアドレスを指定する方法はありますか?

修正する

IPとMAC​​アドレスの値を含むファイルが見つかりました/etc/sysconfig/hwconf/etc/sysconfig/network-scripts/ifcfg-eth?hwconfはPCIアドレスも指定しますが、起動時に無視されるようです。

他のカードを使用する場合、変更されるMACアドレスではなく動作を決定するために実際に使用されるPCIの場所としてNICを指定できることを願っています。

答え1

これは通常、PCIアドレスではなくMACアドレスを使用して行われます。

  1. RHEL 5.8が/etc/udev/rules.d/70-pertant-net.rulesファイルをサポートしている場合は、そのファイルを生成できます。

    別のコンピュータからコピーして、MACアドレスに基づいて正しいデバイス名が割り当てられるように編集します。

    そのファイルで実際に必要なのは、次の3行です。 (新しい行を無視すると、すべて1行になります。)

    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:23:cd:b0:23:b9", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

    NICと要件に合わせてATTR {addresss}とNAME = "eth [012]"を変更してください。

    RHEL 5.4または5.8にあるかどうかはわかりませんが、/lib/udev/write_net_rulesというスクリプトがあることを確認することをお勧めします。存在する場合、実行すると70-percious-netが生成されます。ルールファイルなので、各ネットワークカードの名前を編集するだけです。

    を使用してMACアドレスを取得し、ifconfig | grep 'eth.*HWaddr'それをコピーして70-pertant-net.rulesファイルに貼り付けることができます。

    完了したら、すべてのインターフェイスを再起動またはシャットダウンし、カーネルドライバモジュールをアンロードし、モジュールを再ロードして(現在のインターフェイスにデバイス名が割り当てられている)インターフェイスを復元できます。

  2. udevファイルと70-pertant-net.rulesファイルを使用する前に、wireless-toolsパッケージから呼び出されるプログラムを使用しましたifrename(無線だけでなくすべてのNICで動作します)。 /etc/iftab ファイルを使用して、MAC アドレスにネットワーク インターフェイスの名前を変更します。ほとんど動作しますが、udevメソッドほど安定していません。

    RHEL用にパッケージされているかどうかはわかりませんが、以下にあります。http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html

  3. 私はNICでこの方法を直接使用していませんが、udevを使用してPCIアドレスに基づいてデバイス名を継続的に指定することもできます。まず、/etc/udev/rules/70-percious-net.rulesがある場合は削除します。次に、/etc/udev/rules に新しいファイルを作成します。名前を 70-pertant-net-by-pci.rules と指定することもできます。

    次の行を追加します。

    タスク=="追加"、サブシステム=="ネットワーク"、バス=="pci"、コア=="0000:03:03.0"、名前="eth0"
    タスク=="追加"、サブシステム=="ネットワーク"、バス=="pci"、コア=="0000:03:03.1"、名前="eth1"
    タスク=="追加"、サブシステム=="ネットワーク"、バス=="pci"、コア=="0000:05:03.0"、名前="eth2"
    

    一部の最新のLinux(Ubuntu 13.04以降など)では、BUS修飾子を削除する必要があるため、ルールは次のとおりです。

    タスク=="追加"、サブシステム=="ネットワーク"、カーネル=="0000:03:03.0"、名前=="eth0"
    

    その後、上記のようにドライバモジュールを再起動または削除して再ロードします。

    詳細は以下で確認できます。http://linux-tips.org/article/73/pertant-device-naming-with-udev- しかし、ページはかなり古く、古いudevinfoコマンドを参照しています。udevadm info代わりに使用

答え2

RedHat 5では、MACとインターフェイス名で十分です。私はそこからudevまたはPCI指定子を操作したことがありません。

HWADDRをMACに設定し、DEVICEをターゲットデバイス名に設定します。

名前に関しては/etc/sysconfig/ネットワーク*構成名に意味のある別名を使用できます。ifcfg - エイリアス

関連情報