ハードウェアの場所に基づいてネットワーク インターフェイスに任意の名前を割り当てるにはどうすればよいですか? (CentOS 7)

ハードウェアの場所に基づいてネットワーク インターフェイスに任意の名前を割り当てるにはどうすればよいですか? (CentOS 7)

4 つのオンボード NIC を備えた CentOS 7 を実行する複数の同一アプライアンスがあります。RHEL6 を実行するアプライアンスの旧バージョン (つまりethX) と同様の感覚を維持するために、RHEL6 で使用されるネットワーク命名スキームを使用したいと考えています。また、各アプライアンスで使用する汎用システム ディスクを作成した後に必要な変更の数を最小限に抑えたいと考えています。

CentOS 7 の命名スキームを理解していれば、命名スキームはハードウェアの場所に基づいて一貫しているため、ハードウェアが同一であれば、アプライアンスの各インスタンスに同じネットワーク インターフェイス名が付けられます。

顧客の要望により、アプライアンスのネットワーク インターフェイスの名前を CentOS 7 と RHEL6 バージョンで同じにする必要があります。

1つのアプローチは、カーネルコマンドラインをnet.ifnames=0次のように拡張することです。ここそして、自分のifcfg-ethXファイルを作成します。しかし、私の知る限り、これを行うには、構成ファイルを手動で変更する必要があります。従来の順序は固定されているものの任意であるため、さらに複雑になり、システムごとにこれらのファイルを変更する必要があります。:-/

私が考えたことの 1 つは、CentOS 7 の命名スキームを使用しながら、それぞれにエイリアスを追加して、ハードウェアの場所に基づいて任意の命名スキームを適用できるようにすることです。これは可能ですか?

同じデバイスと IP アドレスに 2 つの名前を付ける方法について、他に何かアイデアはありますか?

注: 同じデバイスに複数の IP アドレスを追加する方法については尋ねていません。これはかなり簡単です。

編集: 本当に名前を変更する必要がありますが、プログラムで変更したいと思います。

答え1

名前は「任意」かつ「ハードウェアの場所に基づく」という両方の意味を同時に持つことができますか? これらの言葉は互いに矛盾しています。

  • 名前eth#は、各ブート時の検出順序に基づいてカーネル自体によって割り当てられます。つまり、名前は「先着順」であり、ハードウェアの場所とは関係ありません。

    以前のudevバージョンでは、/etc/udev/rules.dこれらの割り当てをカードの MAC アドレスにバインドします。おそらくそのファイルを新しいシステムにコピーできるでしょう。

    また、アドレスまたは PCI の場所に基づいてパラメータを設定するカスタム udev ルールを作成することもできますNAME=。(将来、udev は、eth*すでに変更されていない場合は、インターフェイスの名前を に変更することを拒否する可能性があることに注意してください。また、許可されている場合でも、この名前変更は非常に脆弱であり、デバイスが異なる順序で検出された場合は失敗する可能性があります。)

  • ただし、私が知る限り、RHEL 6ではバイオスデバイス名物理ベースのインターフェース名を生成するため (カーネル スイッチbiosdevname=0)。RHEL 7 では、この目的のために systemd-udevd の組み込み net_id を使用します (カーネル スイッチnet.ifnames=0)。

    を取得するにはp1p2スタイル名を変更したyum install biosdevname場合は、カーネルコマンドライン(biosdevname=1 net.ifnames=0)から有効にすることができます。Red Hat ドキュメント

ネットワーク インターフェイスにはエイリアスを設定できません。

関連情報