
これは、Ubuntu サーバー 20.04.04 システムの新規インストールです。ネットワークを構成するために、networkd と netplan を使用しています。カスタム インストール手順は実行せず、.iso をロードして、プロンプトに従って Ubuntu サーバーをインストールしました。
これらのマシンがベンダーから出荷された時点では、Ubuntu はすでにインストールされており、ネットワーク インターフェイスには次の名前が付けられていましens1f0
たens1f1
。
root@oldHost2:~# sudo lshw -C network |grep "logical name"
logical name: ens1f0
logical name: ens1f1
logical name: bond0
しかし、OS を再インストールした後 (netplan を実行する前)、次のようになります。
root@freshHost1:~# sudo lshw -C network |grep "logical name"
logical name: ens1f0np0
logical name: ens1f1np1
logical name: bond0
すべてのサイトで、ens1f0
と を前提とするネットプラン構成を使用していますens1f0
。すべてのインターフェースをこれに一致させたいと思います。
set-name
ネットプランでインターフェース名を設定できることは知っています(https://ubuntu.com/server/docs/ネットワーク構成) ただし、何らかの方法で (Mac アドレスなどを使用して) インターフェイスを一致させる必要があるため、自動プロビジョニングが悪夢になります (不可能ではないにしても)。卵が先か鶏が先かというシナリオです。プロビジョニングするマシンが何百台もあり、Mac アドレスを知らなくてもネットプラン構成をテンプレート化したいと考えています。
netplan でインターフェースをグループ化することもできることは知っています:
ethernets:
eports:
match:
name: ens*
これは私のケースではうまくいくかもしれませんが、すべてのシステムがこのような単純な 2 つの NIC セットアップを備えているわけではないので、最善の対応策が何であるかはわかりません。
ServerFault への質問...
- この論理名は Netplan が実行される前に設定されるため、この名前を決定するものは何ですか? OS のインストール/プロビジョニング中にこれを上書きするにはどうすればよいですか?
- インターフェース名の
np0
と はどういう意味ですか?np1
答え1
これは、デバイスに関する情報に基づいて systemd によって決定されます。名前は、BIOS、インストールされている可能性のある他のデバイス、Linux バージョン、ドライバー バージョンなど、さまざまな要因によって影響を受ける可能性があります。https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.htmlsystemd が名前を構築する方法。
たとえば、スロット番号は PCIe スロットに関連付けられている場合と、そうでない場合があります。これは少なくとも BIOS/ACPI に多少は関連していると思いますが、他の要因もある可能性があります。私のマシンの 1 つでは、1 つのスロットにインストールされている NIC は enpN として列挙され、同じ NIC を別のスロットに移動すると ensN として列挙されます。
起動時に Thunderbolt デバイスが存在する場合など、特定の条件下では PCIe バス番号が異なる方法で割り当てられるケースがあると聞きました。結局のところ、これはシステム BIOS が Thunderbolt ポートに PCIe バス番号を正しく予約していないことが原因であると考えられます。
np0 と np1 に関して言えば、 p0 と p1 は devlink から取得した物理ポート名です__devlink_port_phys_port_name_get
。おそらく、 devlink サポートが NIC ドライバーに追加されたため、 np0/np1 が表示されるようになったと考えられます。古いシステムを同じカーネル バージョンに更新すると、名前も変更されるはずです。