Proxmox hardware hang
1. Descripción del problema
En las últimas semanas noté que mi servidor Proxmox perdía la conexión de red de forma intermitente. Nunca le tomé importancia porque fácilmente se resolvía desconectando el cable Ethernet del patch panel y reconectándolo inmediatamente. Pero conforme más intensa era la utilización de la red, más frecuente se presentaba este problema.
Lo extraño es que la IP nunca cambiaba y la ruta tampoco se perdía. El servidor no parecía “caerse”, pero sí dejaba de pasar tráfico. Esto indicaba un problema a nivel de NIC o driver, no de configuración.
El verdadero problema apareció al revisar los logs del kernel:
Proxmox estaba registrando una falla constante del driver Intel e1000e, acompañada del mensaje:
Este mensaje confirma que la tarjeta de red Intel integrada se queda colgada a nivel de hardware, causando microcortes que afectan toda la comunicación.
2. Cómo encontré la causa
2.1 Verifiqué si el servidor realmente perdía su IP o su default gateway
Ejecuté:
La IP seguía siendo la misma y el default gateway estaba correcto. Esto descartaba DHCP, fallas en el bridge o en la configuración de red.
2.2 Revisé si la interfaz estaba cayéndose físicamente
Busqué eventos de cambios de link:
Y ahí apareció la verdadera causa:
Este mensaje es un bug reconocido en los NIC Intel I219-V/I219-LM, muy común en mini PC y placas base modernas.
El kernel repetía el error cada 2 segundos, confirmando que el controlador estaba entrando en un ciclo de recuperación interminable.
2.3 Validé que el tráfico pasaba por el NIC problemático
La interfaz afectada era:
Y el proxmox bridge vmbr0 dependía totalmente de ella:
Esto explicaba por qué toda la red se congelaba aunque las virtuales y contenedores siguieran vivos.
3. La solución definitiva
El problema es causado por dos funciones de ahorro de energía en los NIC Intel:
- EEE (Energy Efficient Ethernet)
- ASPM (Active State Power Management)
Ambas hacen que el chip se “duerma” y el driver e1000e registre el famoso hardware unit hang.
3.1 Desactivar EEE (obligatorio)
Primero apliqué el cambio temporal:
Luego lo hice permanente:
Y agregué un servicio systemd:
cat <<EOF > /etc/systemd/system/disable-eee.service
[Unit]
Description=Disable EEE on Intel NIC
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool --set-eee enp0s31f6 eee off
[Install]
WantedBy=multi-user.target
EOF
systemctl enable disable-eee.service
3.2 Desactivar ASPM (obligatorio)
Edite /etc/default/grub:
Y modifiqué esta línea:
Luego regeneré el grub:
Y reinicié el servidor:
4. Cómo validar que la solución funcionó
Después del reinicio verifiqué:
EEE desactivado
Debe mostrar:
Sin nuevos errores en el kernel
No deben aparecer más mensajes de:
5. Diagnostico encontrado
Este es un problema común en hardware reciente que usa NIC Intel integrados, especialmente en mini PC, placas base económicas y servidores compactos. La buena noticia es que la solución es definitiva y completamente estable.