Alterar temporalmente la hora en un contenedor LXC¶
El procedimiento que se describe a continuación muestra como ajustar temporalmente la fecha y hora de un contenedor LXC para, por ejemplo, validar el comportamiento del sistema ante una fecha simulada.
Modificar la hora del sistema dentro de un contenedor LXC en PVE es una operación delicada, ya que los contenedores comparten el kernel
con el host. Un cambio directo con date -s suele fallar por falta de privilegios (Operation not permitted) o, si el contenedor es privilegiado,
puede afectar accidentalmente al host.
Para simular una hora distinta sin tocar el reloj real del sistema ni del host, la opción más segura y recomendada es usar libfaketime.
Esta herramienta intercepta las llamadas al sistema de las aplicaciones para que «vean» una fecha ficticia.
A continuación, se describe el proceso para implementar esta alteración temporal.
Instalar libfaketime en el contenedor¶
apt update && apt install -y libfaketime
Configurar las variables de entorno para la sesión actual¶
libfaketime funciona inyectando una librería (.so) mediante la variable LD_PRELOAD y definiendo la hora falsa con FAKETIME.
Localiza la ruta de la librería instalada (suele estar en /usr/lib/x86_64-linux-gnu/faketime/ o /usr/lib/faketime/).
Exportar las variables en el shell (ejemplo para simular el 1 de Noviembre de 2025 a las 12:00:00):
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1
export FAKETIME="2025-11-01 12:00:00"
Verificar la alteración¶
Ejecutar el comando date para comprobar que la aplicación ve la hora modificada:
date
La salida debería mostrar la fecha y hora especificadas en FAKETIME.
Restaurar la hora real¶
La alteración solo afecta a la sesión actual y a los procesos que hereden estas variables. Para volver a la normalidad, simplemente limpia las variables:
unset LD_PRELOAD
unset FAKETIME
Al ejecutar date de nuevo, verás la hora real del sistema.
⚠️ Advertencias importantes
No uses
date -s: En contenedores LXC no privilegiados, el comandodate -sfallará con Operation not permitted . En contenedores privilegiados, puede alterar el reloj del host y desestabilizar todo el nodo PVE.Limitaciones de
libfaketime: Esta librería funciona con aplicaciones enlazadas dinámicamente. Algunos binarios estáticos (como ciertas versiones de Java o Go) pueden ignorar la inyección o fallar al iniciarse . En caso de necesitar alterar la hora para evaluar un servicio específico (ej. un servidor web), se deberá iniciar ese servicio con las variablesLD_PRELOADyFAKETIMEdefinidas.
Persistencia: Los cambios realizados con export desaparecen al cerrar la sesión. Si necesitas que un proceso mantenga la hora falsa, debes definir las variables en el script de inicio de dicho proceso o en el archivo de configuración de libfaketime (.faketimerc), pero esto puede complicar la gestión del contenedor.