Red Hat Training

A Red Hat training course is available for RHEL 8

11.5. Configuración de la cronía

El archivo de configuración por defecto para chronyd es /etc/chrony.conf. La opción -f puede utilizarse para especificar una ruta de archivo de configuración alternativa. Consulte la página de manual chrony.conf(5) para conocer otras opciones. Para una lista completa de las directivas que se pueden utilizar, consulte El archivo de configuración chronyd.

A continuación se muestra una selección de opciones de configuración de chronyd:

Comentarios
Los comentarios deben ir precedidos de #, %, ; o !
permitir

Opcionalmente, especifique un host, una subred o una red desde la que permitir las conexiones de NTP a una máquina que actúe como servidor de NTP. El valor por defecto es no permitir conexiones.

Ejemplos:

permitir 192.0.2.0/24

Utilice este comando para conceder acceso a una red específica.

allow 2001:0db8:85a3::8a2e:0370:7334

Utilice este comando para conceder acceso a un IPv6.

El puerto UDP número 123 debe estar abierto en el firewall para permitir el acceso del cliente:

#  firewall-cmd --zone=public --add-port=123/udp

Si quiere abrir el puerto 123 de forma permanente, utilice la opción --permanent:

#  firewall-cmd --permanent --zone=public --add-port=123/udp
cmdallow
Es similar a la directiva allow (véase la sección allow), excepto que permite el acceso de control (en lugar de NTP acceso de cliente) a una subred o host en particular. (Por "acceso de control" se entiende que chronyc puede ejecutarse en esos hosts y conectarse con éxito a chronyd en este equipo) La sintaxis es idéntica. También existe una directiva cmddeny all con un comportamiento similar a la directiva cmdallow all.
dumpdir
Ruta de acceso al directorio para guardar el historial de mediciones en los reinicios de chronyd (suponiendo que no se realicen cambios en el comportamiento del reloj del sistema mientras no se esté ejecutando). Si se va a utilizar esta capacidad (mediante el comando dumponexit en el archivo de configuración, o el comando dump en chronyc), el comando dumpdir debe utilizarse para definir el directorio donde se guardan los historiales de medición.
dumponexit
Si este comando está presente, indica que chronyd debe guardar el historial de mediciones para cada una de sus fuentes de tiempo registradas cada vez que el programa salga. (Véase el comando dumpdir más arriba).
hwtimestamp
La directiva hwtimestamp permite el marcado de tiempo por hardware para una sincronización extremadamente precisa. Para más detalles, consulte la página del manual chrony.conf(5).
local

La palabra clave local se utiliza para permitir que chronyd aparezca sincronizado con el tiempo real desde el punto de vista de los clientes que lo sondean, incluso si no tiene una fuente de sincronización actual. Esta opción se utiliza normalmente en el ordenador "maestro" en una red aislada, donde se requiere que varios ordenadores se sincronicen entre sí, y el "maestro" se mantiene en línea con el tiempo real mediante la entrada manual.

Un ejemplo del comando es:

estrato local 10

Un valor grande de 10 indica que el reloj está a tantos saltos de un reloj de referencia que su hora no es fiable. Si el ordenador tiene alguna vez acceso a otro ordenador que, en última instancia, esté sincronizado con un reloj de referencia, es casi seguro que estará en un estrato inferior a 10. Por lo tanto, la elección de un valor alto como 10 para el comando local evita que la hora propia de la máquina se confunda con la hora real, si alguna vez se filtra a los clientes que tienen visibilidad de los servidores reales.

registro

El comando log indica que se debe registrar cierta información. Acepta las siguientes opciones:

medidas
Esta opción registra las mediciones en bruto de NTP y la información relacionada en un archivo llamado measurements.log.
estadísticas
Esta opción registra información sobre el procesamiento de la regresión en un archivo llamado statistics.log.
rastreando
Esta opción registra los cambios en la estimación de la tasa de ganancia o pérdida del sistema, y cualquier giro realizado, en un archivo llamado tracking.log.
rtc
Esta opción registra información sobre el reloj en tiempo real del sistema.
refclocks
Esta opción registra las mediciones del reloj de referencia crudas y filtradas en un archivo llamado refclocks.log.
tempcomp

Esta opción registra las mediciones de temperatura y las compensaciones de velocidad del sistema en un archivo llamado tempcomp.log.

Los archivos de registro se escriben en el directorio especificado por el comando logdir.

Un ejemplo del comando es:

registro de mediciones seguimiento de estadísticas
logdir

Esta directiva permite especificar el directorio donde se escriben los archivos de registro.

Un ejemplo del uso de esta directiva es:

logdir /var/log/chrony
hace un paso

Normalmente, chronyd hará que el sistema corrija gradualmente cualquier desfase temporal, ralentizando o acelerando el reloj según sea necesario. En determinadas situaciones, el reloj del sistema puede estar tan desviado que este proceso de giro tardaría mucho tiempo en corregir el reloj del sistema. Esta directiva obliga a chronyd a acelerar el reloj del sistema si el ajuste es mayor que un valor umbral, pero sólo si no hubo más actualizaciones del reloj desde que se inició chronyd que un límite especificado (se puede utilizar un valor negativo para desactivar el límite). Esto es particularmente útil cuando se utiliza el reloj de referencia, porque la directiva initstepslew sólo funciona con fuentes NTP.

Un ejemplo del uso de esta directiva es:

makestep 1000 10

Esto haría que el reloj del sistema se adelantara si el ajuste es mayor de 1000 segundos, pero sólo en las primeras diez actualizaciones del reloj.

maxchange

Esta directiva establece el máximo desplazamiento permitido corregido en una actualización del reloj. La comprobación se realiza sólo después del número especificado de actualizaciones para permitir un gran ajuste inicial del reloj del sistema. Cuando se produce un desfase mayor que el máximo especificado, se ignorará durante el número de veces especificado y luego chronyd se dará por vencido y saldrá (se puede utilizar un valor negativo para no salir nunca). En ambos casos se envía un mensaje a syslog.

Un ejemplo del uso de esta directiva es:

maxchange 1000 1 2

Después de la primera actualización del reloj, chronyd comprobará el desplazamiento en cada actualización del reloj, ignorará dos ajustes mayores de 1000 segundos y saldrá en otro.

maxupdateskew

Una de las tareas de chronyd es calcular lo rápido o lento que funciona el reloj del ordenador en relación con sus fuentes de referencia. Además, calcula una estimación de los límites de error en torno al valor estimado.

Si el rango de error es demasiado grande, indica que las mediciones aún no se han asentado y que la tasa de ganancia o pérdida estimada no es muy fiable.

El parámetro maxupdateskew es el umbral para determinar si una estimación es demasiado poco fiable para ser utilizada. Por defecto, el umbral es de 1000 ppm.

El formato de la sintaxis es:

maxupdateskew skew-in-ppm

Los valores típicos de skew-in-ppm pueden ser 100 para una conexión telefónica con servidores a través de una línea telefónica, y 5 o 10 para un ordenador en una LAN.

Cabe señalar que éste no es el único medio de protección contra el uso de estimaciones poco fiables. En todo momento, chronyd mantiene un registro tanto de la tasa de ganancia o pérdida estimada, como del límite de error de la estimación. Cuando se genera una nueva estimación tras otra medición de una de las fuentes, se utiliza un algoritmo de combinación ponderada para actualizar la estimación maestra. Por lo tanto, si chronyd tiene una estimación maestra muy fiable y se genera una nueva estimación que tiene grandes límites de error, la estimación maestra existente dominará en la nueva estimación maestra.

minsources

La directiva minsources establece el número mínimo de fuentes que deben considerarse seleccionables en el algoritmo de selección de fuentes antes de que se actualice el reloj local.

El formato de la sintaxis es:

minsources number-of-sources

Por defecto, number-of-sources es 1. Establecer minsources a un número mayor puede servir para mejorar la fiabilidad, ya que varias fuentes tendrán que corresponder entre sí.

noclientlog
Esta directiva, que no toma argumentos, especifica que los accesos de los clientes no deben ser registrados. Normalmente se registran, lo que permite informar de las estadísticas mediante el comando clients en chronyc y permitir que los clientes utilicen el modo intercalado con la opción xleave en la directiva server.
reselectdist

Cuando chronyd selecciona la fuente de sincronización entre las fuentes disponibles, preferirá la que tenga una distancia de sincronización mínima. Sin embargo, para evitar la reselección frecuente cuando hay fuentes con una distancia similar, se añade una distancia fija a la distancia de las fuentes que no están seleccionadas en ese momento. Esto se puede establecer con la opción reselectdist. Por defecto, la distancia es de 100 microsegundos.

El formato de la sintaxis es:

reselectdist dist-in-seconds
peso del estrato

La directiva stratumweight establece cuánta distancia debe añadirse por estrato a la distancia de sincronización cuando chronyd selecciona la fuente de sincronización entre las fuentes disponibles.

El formato de la sintaxis es:

peso del estrato dist-in-seconds

Por defecto, dist-in-seconds es de 1 milisegundo. Esto significa que las fuentes con un estrato más bajo suelen ser preferidas a las fuentes con un estrato más alto, incluso cuando su distancia es significativamente peor. Si se ajusta stratumweight a 0, chronyd ignora el estrato al seleccionar la fuente.

rtcfile

La directiva rtcfile define el nombre del archivo en el que chronyd puede guardar los parámetros asociados al seguimiento de la precisión del reloj en tiempo real (RTC) del sistema.

El formato de la sintaxis es:

rtcfile /var/lib/chrony/rtc

chronyd guarda la información en este archivo cuando sale y cuando se emite el comando writertc en chronyc. La información guardada es el error del RTC en alguna época, esa época (en segundos desde el 1 de enero de 1970), y la velocidad a la que el RTC gana o pierde tiempo. No todos los relojes de tiempo real están soportados ya que su código es específico del sistema. Tenga en cuenta que si se utiliza esta directiva, el reloj de tiempo real no debe ser ajustado manualmente, ya que esto interferiría con chronypara medir la velocidad a la que el reloj de tiempo real se desplaza si se ajusta a intervalos aleatorios.

rtcsync
La directiva rtcsync está presente en el archivo /etc/chrony.conf por defecto. Esto informará al kernel que el reloj del sistema se mantiene sincronizado y el kernel actualizará el reloj en tiempo real cada 11 minutos.

11.5.1. Configurar la seguridad de Chrony

chronyc puede acceder a chronyd de dos maneras:

  • Protocolo de Internet, IPv4 o IPv6.
  • Socket de dominio Unix, al que puede acceder localmente el usuario root o chrony.

Por defecto, chronyc se conecta al socket del dominio Unix. La ruta por defecto es /var/run/chrony/chronyd.sock. Si esta conexión falla, lo que puede ocurrir por ejemplo cuando chronyc se ejecuta bajo un usuario no root, chronyc intenta conectarse a 127.0.0.1 y luego a ::1.

Sólo los siguientes comandos de supervisión, que no afectan al comportamiento de chronyd, están permitidos desde la red:

  • actividad
  • lista de manuales
  • rtcdata
  • alisado
  • fuentes
  • sourcestats
  • rastreando
  • waitsync

El conjunto de hosts de los que chronyd acepta estos comandos puede configurarse con la directiva cmdallow en el archivo de configuración de chronyd, o el comando cmdallow en chronyc. Por defecto, los comandos se aceptan sólo desde localhost (127.0.0.1 o ::1).

Todos los demás comandos sólo se permiten a través del socket de dominio Unix. Cuando se envía a través de la red, chronyd responde con un error Not authorised, incluso si es desde localhost.

Acceder a chronyd de forma remota con chronyc

  1. Permita el acceso desde direcciones IPv4 e IPv6 añadiendo lo siguiente al archivo /etc/chrony.conf:

    bindcmdaddress 0.0.0.0

    o

    bindcmdaddress ::
  2. Permitir comandos desde la dirección IP remota, red o subred utilizando la directiva cmdallow.

    Añada el siguiente contenido al archivo /etc/chrony.conf:

    cmdallow 192.168.1.0/24
  3. Abra el puerto 323 en el firewall para conectarse desde un sistema remoto.

    #  firewall-cmd --zone=public --add-port=323/udp

    Si desea abrir el puerto 323 de forma permanente, utilice la dirección --permanent.

    #  firewall-cmd --permanent --zone=public --add-port=323/udp

Tenga en cuenta que la directiva allow es para el acceso a NTP mientras que la directiva cmdallow es para permitir la recepción de comandos remotos. Es posible hacer estos cambios temporalmente usando chronyc ejecutando localmente. Edite el archivo de configuración para hacer cambios permanentes.