¿Qué controla la convención de nomenclatura de NIC después de una nueva instalación de Ubuntu 20.04?

¿Qué controla la convención de nomenclatura de NIC después de una nueva instalación de Ubuntu 20.04?

Este es un sistema de instalación nueva del servidor Ubuntu 20.04.04. Estoy usando networkd y netplan para configurar la red. No realicé ningún paso de instalación personalizado, simplemente cargué el .iso e instalé el servidor Ubuntu siguiendo las indicaciones.

Cuando el proveedor envió estas máquinas, Ubuntu ya estaba instalado y las interfaces de red tenían el nombre ens1f0siguiente ens1f1:

root@oldHost2:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0
       logical name: ens1f1
       logical name: bond0

Sin embargo, después de reinstalar el sistema operativo (antes de ejecutar netplan), aparece...

root@freshHost1:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0np0
       logical name: ens1f1np1
       logical name: bond0

En todos mis sitios, utilizamos una configuración de netplan que asume ens1f0y ens1f0. Me gustaría que todas las interfaces coincidieran con esto.

Sé que puedes configurar el nombre de la interfaz set-nameen netplan (como se define enhttps://ubuntu.com/server/docs/network-configuration), sin embargo, es necesario que ya coincida con la interfaz de alguna manera (usando la dirección Mac, etc.), lo que hará que el aprovisionamiento automático sea una pesadilla (si no imposible). Un escenario del huevo y la gallina. Tengo cientos de máquinas que aprovisionar y me gustaría crear una plantilla de configuración de mi plan de red sin conocer las direcciones de Mac.

Sé que también puedes agrupar las interfaces en netplan:

  ethernets:
    eports:
      match:
        name: ens*

Lo cual puede funcionar en mi caso, pero no todos los sistemas tienen una configuración simple de dos NIC como esta, por lo que no estoy seguro de cuál será el mejor curso de acción.

Mis preguntas a ServerFault...

  • Dado que este nombre lógico se establece incluso antes de ejecutar Netplan, ¿qué determina este nombre? ¿Cómo puedo anularlo durante la instalación/aprovisionamiento del sistema operativo?
  • ¿Qué significa np0y np1en los nombres de las interfaces?

Respuesta1

Esto lo determina systemd en función de la información sobre el dispositivo. El nombre puede verse influenciado por varios factores diferentes, incluido el BIOS, otros dispositivos que puedan estar instalados, la versión de Linux y la versión del controlador. Verhttps://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.htmlpara saber cómo systemd construye los nombres.

Por ejemplo, los números de ranura pueden estar asociados o no con ranuras PCIe. Creo que esto al menos está algo relacionado con BIOS/ACPI, pero podría haber otros factores. En una de mis máquinas, una NIC instalada en una ranura se enumera como enpN, y la misma NIC cuando se mueve a una ranura diferente se enumera como ensN.

He oído hablar de casos en los que los números de bus PCIe se asignan de manera diferente bajo ciertas condiciones, como la presencia de un dispositivo Thunderbolt durante el arranque. En última instancia, esto probablemente sea culpa del BIOS del sistema por no reservar correctamente los números de bus PCIe para el puerto Thunderbolt.

En cuanto a lo que estás viendo con np0 y np1, p0 y p1 son nombres de puertos físicos que provienen de devlink __devlink_port_phys_port_name_get. Presumiblemente se agregó soporte devlink al controlador NIC, lo que provocó que apareciera np0/np1. Si actualiza el sistema anterior a la misma versión del kernel, el nombre también debería cambiar.

información relacionada