Este artículo explica cómo cambiar los nombres asignados a las interfaces de red físicas en Proxmox VE cuando el orden automático no coincide con la disposición lógica esperada.
El problema
A partir de Proxmox VE 8.2, el sistema utiliza fijación de nombres de interfaces (network interface pinning) para asignar nombres estables (nic0, nic1, nic2...) a las interfaces de red físicas basándose en su dirección MAC. Esto evita que los nombres cambien después de actualizaciones de kernel, drivers o BIOS.
Sin embargo, en algunos casos la numeración asignada automáticamente no coincide con el orden lógico de las ranuras PCI o la distribución física de las tarjetas de red.
Cómo funciona la fijación de nombres
Proxmox utiliza la herramienta pve-network-interface-pinning para generar archivos .link de systemd que asocian una dirección MAC con un nombre de interfaz estable.
Los archivos generados por la herramienta se almacenan en:
/usr/local/lib/systemd/network/Cada archivo sigue el patrón 50-pve-nicX.link (o 50-pmx-nicX.link en instalaciones anteriores) con el siguiente formato:
[Match]
MACAddress=02:00:00:00:00:01
Type=ether
[Link]
Name=nic5- La sección
[Match]identifica la interfaz física por su dirección MAC y tipo. - La sección
[Link]define el nombre que se asignará a esa interfaz durante el arranque.
Método 1: Usar la herramienta oficial (recomendado)
La forma más segura de renombrar una interfaz es usar la herramienta oficial con la opción --target-name:
pve-network-interface-pinning generate --interface nic5 --target-name nic6Este comando:
- Genera el archivo
.linkcorrespondiente - Actualiza automáticamente
/etc/network/interfaces - Actualiza la configuración del firewall del host
- Actualiza la configuración de SDN si está en uso
Después de ejecutar el comando, verifique los cambios propuestos:
diff /etc/network/interfaces /etc/network/interfaces.newSi los cambios son correctos, reinicie el servidor para aplicarlos:
rebootRevertir cambios antes de reiniciar
Si detecta problemas en los archivos .new generados, puede revertir eliminando los archivos temporales y los .link creados:
rm /etc/network/interfaces.new
rm /usr/local/lib/systemd/network/50-pve-nic*.linkMétodo 2: Edición manual de archivos .link
Para intercambiar nombres entre dos interfaces existentes, puede editar manualmente los archivos .link.
Paso 1: Verificar los archivos existentes
ls /usr/local/lib/systemd/network/Paso 2: Crear respaldos
cp /usr/local/lib/systemd/network/50-pve-nic5.link{,.bak}
cp /usr/local/lib/systemd/network/50-pve-nic6.link{,.bak}Paso 3: Intercambiar los nombres
Modifique el valor Name= en cada archivo:
sed -i 's/Name=nic5/Name=nic6/' /usr/local/lib/systemd/network/50-pve-nic5.link
sed -i 's/Name=nic6/Name=nic5/' /usr/local/lib/systemd/network/50-pve-nic6.linkPaso 4: Actualizar el initramfs
Los archivos .link se copian al initramfs, por lo que es necesario actualizarlo:
update-initramfs -u -k allPaso 5: Reiniciar el servidor
rebootNotas importantes
-
Los bridges se actualizan automáticamente: Si las interfaces están asignadas a bridges (
vmbr0,vmbr1, etc.) en/etc/network/interfaces, no necesita modificar esa configuración. Los bridges referencian el nombre de la interfaz, por lo que seguirán el intercambio automáticamente. -
Nombres recomendados: Si asigna nombres personalizados, use nombres que comiencen con
enoethpara que Proxmox reconozca la interfaz como dispositivo físico en la GUI. Evite nombres que puedan colisionar con el esquema de systemd (comoeno,enp,ens). -
El prefijo puede variar: Dependiendo de la versión de Proxmox, los archivos pueden usar el prefijo
50-pve-o50-pmx-. Verifique conlsantes de editar. -
Firewall y SDN: Si usa el firewall de Proxmox o SDN, verifique que las referencias a las interfaces se actualicen en
/etc/pve/nodes/<nodename>/host.fwy/etc/pve/sdn/.
Solución de problemas
Los cambios no se aplican después del reinicio
- Verifique que editó los archivos en la ruta correcta.
- Confirme que ejecutó
update-initramfs -u -k all. - Revise los logs:
journalctl -b | grep systemd-network.
No encuentro los archivos .link
Si el directorio /usr/local/lib/systemd/network/ está vacío, la fijación de nombres no está configurada. Puede generarla con:
pve-network-interface-pinning generateConflicto entre archivos .link
Si existen archivos con prefijos diferentes (50-pve- y 50-pmx-) para la misma interfaz, elimine los duplicados y conserve solo uno.