¿Cómo asigno un nombre arbitrario a una interfaz de red según la ubicación del hardware? (CentOS 7)

¿Cómo asigno un nombre arbitrario a una interfaz de red según la ubicación del hardware? (CentOS 7)

Tengo varios dispositivos idénticos que ejecutan CentOS 7 con cuatro NIC integradas. Para mantener una sensación similar a una versión anterior del dispositivo que ejecuta RHEL6 (es decir, ethX), quiero usar el esquema de nombres de red utilizado por RHEL6. También quiero minimizar la cantidad de cambios necesarios después de crear un disco de sistema genérico para usar en cada dispositivo.

Si entiendo el esquema de nombres en CentOS 7, el esquema de nombres es consistente según la ubicación del hardware, por lo que si el hardware es idéntico, tendré los mismos nombres de interfaz de red para cada instancia del dispositivo.

Debido a las demandas de los clientes, necesito que las interfaces de red del dispositivo tengan el mismo nombre en las versiones CentOS 7 y RHEL6.

Un enfoque es extender la línea de comando del kernel net.ifnames=0como se describeaquíy luego crear mis propios ifcfg-ethXarchivos. Sin embargo, por lo que puedo decir, hacerlo requiere una modificación manual del archivo de configuración. Esto se complica aún más porque el orden heredado es fijo pero arbitrario, por lo que tendría que modificar estos archivos para cada sistema. :-/

Una idea que tuve fue usar el esquema de nombres de CentOS 7 pero luego agregar un alias a cada uno para que el esquema de nombres arbitrario pudiera aplicarse según la ubicación del hardware. ¿Es posible hacer esto?

¿Alguna otra idea sobre cómo puedo obtener dos nombres para el mismo dispositivo y dirección IP?

NOTA: No estoy preguntando cómo agregar varias direcciones IP al mismo dispositivo, lo cual es bastante sencillo.

EDITAR: Realmente necesito cambiarle el nombre, pero me gustaría hacerlo mediante programación.

Respuesta1

¿Puede un nombre ser "arbitrario" y "basado en la ubicación del hardware" al mismo tiempo? Estas palabras se contradicen entre sí.

  • Los eth#nombres los asigna el propio kernel según el orden de detección en cada arranque; en otras palabras, son "por orden de llegada" y no tienen nada que ver con la ubicación del hardware.

    Las versiones anteriores de udev se utilizaban para generar automáticamente un archivo en/etc/udev/rules.dpara vincular estas asignaciones a las direcciones MAC de las tarjetas. Probablemente pueda copiar ese archivo a los nuevos sistemas.

    También puede escribir reglas udev personalizadas para configurar el NAME=parámetro según la dirección o ubicación PCI. (Tenga en cuenta que en el futuro udev puede negarse a cambiar el nombre de una interfaz a eth*, si no lo hace ya. E incluso si se permite, este cambio de nombre es muy frágil y puede fallar si los dispositivos se descubren en un orden diferente).

  • Aunque, hasta donde yo sé, RHEL 6 usabanombredevbiospara generar los nombres de las interfaces físicas (conmutador de kernel biosdevname=0). RHEL 7 utiliza el net_id integrado de systemd-udevd para este propósito (conmutador de kernel net.ifnames=0).

    Para obtener elp1p2nombres de estilo, puede hacerlo yum install biosdevnamey luego habilitarlo a través de la línea de comando del kernel ( biosdevname=1 net.ifnames=0). Ver elDocumentación de Red Hat.

Las interfaces de red no pueden tener alias.

información relacionada