108.1 Lección 2
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
108 Servicios esenciales del sistema |
Objetivo: |
108.1 Mantener la hora del sistema |
Lección: |
2 de 2 |
Introducción
Mientras que las computadoras personales son capaces de mantener una hora razonablemente precisa, la informática de producción y los entornos de red requieren que se mantenga una hora muy precisa. La hora más precisa se mide con relojes de referencia, que suelen ser relojes atómicos. El mundo moderno ha ideado un sistema en el que todos los dispositivos informáticos conectados a Internet pueden sincronizarse con estos relojes utilizando lo que se conoce como el Protocolo de Tiempo de Red (NTP). Un sistema informático con NTP podrá sincronizar sus relojes de sistema con la hora proporcionada por los relojes de referencia. Si la hora del sistema y la hora medida en estos servidores son diferentes, entonces el ordenador adelentará o atrasará su hora interna del sistema de forma gradual hasta que la hora coincida con la de red.
NTP utiliza una estructura jerárquica para distribuir la hora. Los relojes de referencia están conectados a servidores situados en la parte superior de la jerarquía. Estos servidores son máquinas de estrato 1 y normalmente no son accesibles al público. Sin embargo, las máquinas del estrato 1 son accesibles por las máquinas del estrato 2, estas a su vez son accesibles a las de estrato 3, y así sucesivamente. Los servidores de estrato 2 son accesibles al público, al igual que las máquinas de menor jerarquía. Cuando se configura NTP para una red grande, es una buena práctica tener un pequeño número de ordenadores conectados a los servidores de estrato 2+, y luego hacer que esas máquinas proporcionen NTP a todas las demás máquinas. De esta manera, se pueden minimizar las demandas sobre las máquinas de estrato 2.
Hay algunos términos importantes que surgen cuando se habla de NTP. Algunos de estos términos se usan en los comandos que implementaremos para comprobar el estado de NTP en nuestras máquinas:
- Offset
-
Se refiere a la diferencia absoluta entre la hora del sistema y la hora NTP. Por ejemplo, si el reloj del sistema marca las 12:00:02 y la hora NTP marca las 11:59:58, el desfase entre los dos relojes es de cuatro segundos.
- Step
-
Si el desfase de horario entre el proveedor NTP y un consumidor es superior a 128ms, entonces NTP realizará un único cambio significativo en la hora del sistema, en lugar de atrasar o adelantar la hora del sistema. Esto se llama stepping.
- Slew
-
Se refiere a los cambios realizados en la hora del sistema cuando el offset entre la hora del sistema y la NTP es inferior a 128 ms. Si este es el caso, los cambios se harán gradualmente. Esto se conoce como slewing.
- Insane Time
-
Si el offset entre la hora del sistema y la hora NTP es superior a 17 minutos, la hora del sistema se considera insane y el demonio NTP no introducirá ningún cambio en la hora del sistema. Habrá que tomar medidas especiales para que la hora del sistema esté dentro de los 17 minutos de la hora correcta.
- Drift
-
Se refiere al fenómeno por el que dos relojes se desincronizan con el tiempo. Esencialmente, si dos relojes están inicialmente sincronizados pero luego se desincronizan con el tiempo, entonces se está produciendo una deriva del reloj.
- Jitter
-
La fluctuación se refiere a la cantidad de desviación desde la última vez que se consultó un reloj. Así, si la última sincronización NTP se produjo hace 17 minutos, y el desfase entre el proveedor y el consumidor NTP es de 3 milisegundos, entonces 3 milisegundos es el jitter.
Ahora discutiremos algunas de las formas específicas en que Linux implementa NTP.
timedatectl
Si su distribución de Linux utiliza timedatectl
, entonces por defecto implementa un cliente SNTP en lugar de una implementación completa de NTP. Esta es una implementación menos compleja de la hora de red y significa que su máquina no servirá NTP a otros ordenadores conectados.
En este caso, SNTP no funcionará a menos que el servicio timesyncd
se esté ejecutando. Como con todos los servicios systemd, podemos verificar que se está corriendo con:
$ systemctl status systemd-timesyncd ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Thu 2020-01-09 21:01:50 EST; 2 weeks 1 days ago Docs: man:systemd-timesyncd.service(8) Main PID: 1032 (systemd-timesyn) Status: "Synchronized to time server for the first time 91.189.89.198:123 (ntp.ubuntu.com)." Tasks: 2 (limit: 4915) Memory: 3.0M CGroup: /system.slice/systemd-timesyncd.service └─1032 /lib/systemd/systemd-timesyncd Jan 11 13:06:18 NeoMex systemd-timesyncd[1032]: Synchronized to time server for the first time 91.189.91.157:123 (ntp.ubuntu.com). ...
El estado de la sincronización SNTP de timedatectl
puede verificarse con show-timesync
:
$ timedatectl show-timesync --all LinkNTPServers= SystemNTPServers= FallbackNTPServers=ntp.ubuntu.com ServerName=ntp.ubuntu.com ServerAddress=91.189.89.198 RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=34min 8s NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-23, RootDelay=8.270ms, RootDispersion=18.432ms, Reference=91EECB0E, OriginateTimestamp=Sat 2020-01-25 18:35:49 EST, ReceiveTimestamp=Sat 2020-01-25 18:35:49 EST, TransmitTimestamp=Sat 2020-01-25 18:35:49 EST, DestinationTimestamp=Sat 2020-01-25 18:35:49 EST, Ignored=no PacketCount=263, Jitter=2.751ms } Frequency=-211336
Esta configuración puede ser adecuada para la mayoría de las situaciones, pero como se ha señalado anteriormente, será insuficiente si se espera sincronizar varios clientes en una red. En este caso se recomienda instalar un cliente NTP completo.
NTP Daemon
La hora del sistema se compara con la hora de la red en un horario regular. Para que esto funcione debemos tener un daemon que se ejecute en segundo plano. En muchos sistemas Linux, el nombre de este demonio es ntpd
. Este permitirá a una máquina no sólo ser un consumidor de tiempo (es decir, capaz de sincronizar su propio reloj desde una fuente externa), sino también proveer el tiempo a otras máquinas.
Supongamos que nuestro ordenador está basado en systemd y que utiliza systemctl
para controlar los demonios. Instalaremos los paquetes ntp
utilizando el gestor de paquetes apropiado y luego nos aseguraremos de que nuestro demonio ntpd
se está ejecutando comprobando su estado:
$ systemctl status ntpd ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-12-06 03:27:21 EST; 7h ago Process: 856 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 867 (ntpd) CGroup: /system.slice/ntpd.service `-867 /usr/sbin/ntpd -u ntp:ntp -g
En algunos casos puede ser necesario iniciar y habilitar ntpd
. En la mayoría de las máquinas Linux esto se logra con:
# systemctl enable ntpd && systemctl start ntpd
Las consultas NTP se realizan en el puerto TCP 123. Si NTP falla, asegúrese de que este puerto está abierto y a la escucha.
Configuración NTP
NTP es capaz de sondear varias fuentes y seleccionar las mejores candidatas para utilizarlas en el ajuste de la hora del sistema. Si se pierde una conexión de red, NTP utiliza los ajustes anteriores de su historial para estimar los ajustes futuros.
Dependiendo de su distribución de Linux, la lista de servidores de tiempo de red se almacenará en diferentes lugares. Supongamos que ntp
está instalado en su máquina.
El archivo /etc/ntp.conf
contiene información de configuración sobre cómo su sistema se sincroniza con la hora de la red. Este archivo puede ser leído y modificado usando cualquier editor de texto plano.
Por defecto, los servidores NTP utilizados se especificarán en una sección como ésta:
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst
La sintaxis para añadir servidores NTP es la siguiente:
server (IP Address) server server.url.localhost
Las direcciones de los servidores pueden ser direcciones IP o URL si se ha configurado correctamente el DNS. En este caso, siempre se consultará el servidor.
Un administrador de red también podría considerar el uso (o la creación) de un pool. En este caso, suponemos que hay varios proveedores NTP, todos ellos ejecutando demonios NTP y con la misma hora. Cuando un cliente consulta un pool, se selecciona un proveedor al azar. Esto ayuda a distribuir la carga de la red entre muchas máquinas para que ninguna máquina del pool esté manejando todas las consultas NTP.
Comúnmente, /etc/ntp.conf
se cargará con un pool de servidores llamado pool.ntp.org
. Así, por ejemplo, servidor 0.centos.pool.ntp.org
es un pool NTP por defecto proporcionado a las máquinas CentOS.
pool.ntp.org
Los servidores NTP utilizados por defecto son un proyecto de código abierto. Puede encontrar más información en ntppool.org.
Considere si el Pool NTP es apropiado para su uso. Si el negocio, la organización o la vida humana depende de tener la hora correcta o puede ser perjudicada por estar incorrecta, no debería "simplemente sacarla de Internet". El NTP Pool es generalmente de muy alta calidad, pero es un servicio dirigido por voluntarios en su tiempo libre. Por favor, hable con sus proveedores de equipos y servicios para conseguir un servicio local y fiable para usted. Consulte también nuestras condiciones de servicio. Recomendamos los servidores de tiempo de Meinberg, pero también puede encontrar servidores de tiempo de End Run, Spectracom y muchos otros.
ntpdate
Durante la configuración inicial, la hora del sistema y la de NTP pueden estar muy desincronizadas. Si el offset entre la hora del sistema y la del NTP es superior a 17 minutos, el demonio NTP no realizará cambios en la hora del sistema. En este caso será necesaria la intervención manual.
En primer lugar, si ntpd
se está ejecutando será necesario detener el servicio. Utilice systemctl stop ntpd
para hacerlo.
A continuación, utilice ntpdate pool.ntp.org
para realizar una única sincronización inicial, donde pool.ntp.org
se refiere a la dirección IP o URL de un servidor NTP. Puede ser necesaria más de una sincronización.
ntpq
ntpq
es una utilidad para monitorizar el estado de NTP. Una vez que el demonio NTP se ha iniciado y configurado, ntpq
se podrá utilizar para comprobar su estado:
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +37.44.185.42 91.189.94.4 3 u 86 128 377 126.509 -20.398 6.838 +ntp2.0x00.lv 193.204.114.233 2 u 82 128 377 143.885 -8.105 8.478 *inspektor-vlan1 121.131.112.137 2 u 17 128 377 112.878 -23.619 7.959 b1-66er.matrix. 18.26.4.105 2 u 484 128 10 34.907 -0.811 16.123
En este caso -p
(print) imprimirá un resumen de los pares. Las direcciones de host también pueden ser devueltas como direcciones IP usando -n
.
remote
-
nombre de host del proveedor NTP.
refid
-
ID de referencia del proveedor NTP.
st
-
Estrato del proveedor.
when
-
Número de segundos desde la última consulta.
poll
-
Número de segundos entre consultas.
reach
-
ID de estado para indicar si se ha alcanzado un servidor. Las conexiones exitosas aumentarán este número en 1.
delay
-
Tiempo en ms entre la consulta y la respuesta del servidor.
offset
-
Tiempo en ms entre la hora del sistema y la hora NTP.
jitter
-
Offset en ms entre la hora del sistema y la NTP en la última consulta.
ntpq
también tiene un modo interactivo, al que se accede cuando se ejecuta sin opciones ni argumentos. La opción ?
devolverá una lista de comandos que ntpq
reconocerá.
chrony
chrony
es otra forma de implementar NTP. Se instala por defecto en algunos sistemas Linux, pero está disponible para su descarga en las principales distribuciones. chronyd
es el demonio de chrony, y chronyc
es la interfaz de línea de comandos. Puede ser necesario iniciar y habilitar chronyd
antes de interactuar con chronyc
.
Si la instalación de chrony tiene una configuración por defecto, el comando chronyc tracking
proporcionará información sobre NTP y la hora del sistema:
$ chronyc tracking Reference ID : 3265FB3D (bras-vprn-toroon2638w-lp130-11-50-101-251-61.dsl.) Stratum : 3 Ref time (UTC) : Thu Jan 09 19:18:35 2020 System time : 0.000134029 seconds fast of NTP time Last offset : +0.000166506 seconds RMS offset : 0.000470712 seconds Frequency : 919.818 ppm slow Residual freq : +0.078 ppm Skew : 0.555 ppm Root delay : 0.006151616 seconds Root dispersion : 0.010947504 seconds Update interval : 129.8 seconds Leap status : Normal
Esta salida contiene mucha información, más de la que está disponible en otras implementaciones.
Reference ID
::
El ID de referencia y el nombre con el que el ordenador está actualmente sincronizado.
Stratum
-
Número de saltos a un ordenador con un reloj de referencia conectado.
Ref time
-
Es la hora UTC a la que se realizó la última medición de la fuente de referencia.
System time
-
Retraso del reloj del sistema desde el servidor sincronizado.
Last offset
-
Offset estimado de la última actualización del reloj.
RMS offset
-
Promedio a largo plazo del valor de offset.
Frequency
-
Se trata de la tasa en la que el reloj del sistema pudiera estar incorrecto si el cronyd no lo corrigiera. Se proporciona en ppm (partes por millón).
Residual freq
-
Frecuencia residual que indica la diferencia entre las mediciones de la fuente de referencia y la frecuencia que se utiliza actualmente.
Skew
-
Límite de error estimado de la frecuencia.
Root delay
-
Total de los retrasos de la ruta de red hacia el ordenador del estrato, desde el que se está sincronizando el ordenador.
Leap status
-
Es el estado de salto que puede tener uno de los siguientes valores: normal, insertar segundo, borrar segundo o no sincronizado.
También podemos ver información detallada sobre la última actualización NTP válida:
# chrony ntpdata Remote address : 172.105.97.111 (AC69616F) Remote port : 123 Local address : 192.168.122.81 (C0A87A51) Leap status : Normal Version : 4 Mode : Server Stratum : 2 Poll interval : 6 (64 seconds) Precision : -25 (0.000000030 seconds) Root delay : 0.000381 seconds Root dispersion : 0.000092 seconds Reference ID : 61B7CE58 () Reference time : Mon Jan 13 21:50:03 2020 Offset : +0.000491960 seconds Peer delay : 0.004312567 seconds Peer dispersion : 0.000000068 seconds Response time : 0.000037078 seconds Jitter asymmetry: +0.00 NTP tests : 111 111 1111 Interleaved : No Authenticated : No TX timestamping : Daemon RX timestamping : Kernel Total TX : 15 Total RX : 15 Total valid RX : 15
Por último, chronyc sources
devolverá información sobre los servidores NTP que se utilizan para sincronizar la hora:
$ chronyc sources 210 Number of sources = 0 MS Name/IP address Stratum Poll Reach LastRx Last sample ===============================================================================
Por el momento, esta máquina no tiene fuentes configuradas. Podemos añadir fuentes desde pool.ntp.org
abriendo el fichero de configuración de chrony. Este suele estar ubicado en /etc/chrony.conf
. Cuando abrimos este archivo, deberíamos ver que algunos servidores están listados por defecto:
210 Number of sources = 0 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== # Most computers using chrony will send measurement requests to one or # more 'NTP servers'. You will probably find that your Internet Service # Provider or company have one or more NTP servers that you can specify. # Failing that, there are a lot of public NTP servers. There is a list # you can access at http://support.ntp.org/bin/view/Servers/WebHome or # you can use servers from the 3.arch.pool.ntp.org project. ! server 0.arch.pool.ntp.org iburst iburst ! server 1.arch.pool.ntp.org iburst iburst ! server 2.arch.pool.ntp.org iburst iburst ! pool 3.arch.pool.ntp.org iburst
Estos servidores también nos servirán de guía para la sintaxis a la hora de introducir nuestros propios servidores. Sin embargo, en este caso simplemente eliminaremos los !
al principio de cada línea, descomentando así estas líneas y utilizando los servidores por defecto del proyecto pool.ntp.org
.
Además, en este archivo podemos elegir cambiar la configuración por defecto en cuanto a skew y drift, así como la ubicación del driftfile y keyfile.
En esta máquina, necesitamos hacer una gran corrección inicial del reloj. Optaremos por descomentar la siguiente línea:
! makestep 1.0 3
Después de realizar los cambios en el archivo de configuración, reinicie el servicio chronyd
y utilice chronyc makestep
para escalar manualmente el reloj del sistema:
# chronyc makestep 200 OK
Y a continuación, utilice el chronyc tracking
como antes para verificar que los cambios se han producido.
Ejercicios guiados
-
Introduzca el término apropiado para cada definición:
Definición Término Un ordenador que compartirá la hora de la red con usted
Distancia de un reloj de referencia, en saltos o pasos.
Diferencia entre la hora del sistema y la hora de la red
Diferencia entre la hora del sistema y la hora de red desde el último sondeo NTP
Grupo de servidores que proporcionan la hora de la red y que comparten la carga entre ellos
-
Especifique cuál de los comandos utilizaría para dar salida a los siguientes valores:
Valor chronyc tracking
timedatectl show-timesync --all
ntpq -pn
chrony ntpdata
chronyc sources
Jitter
Drift
Interval of Poll
Offset
Stratum
IP Address of Provider
Root Delay
-
Está configurando una red empresarial que consta de un servidor Linux y varios ordenadores de sobremesa Linux. El servidor tiene una dirección IP estática de 192.168.0.101. Usted decide que el servidor se conectará a
pool.ntp.org
y luego proporcionará la hora NTP a los ordenadores de sobremesa. Describa la configuración del servidor y de los ordenadores de sobremesa. -
Una máquina Linux tiene la hora incorrecta. Describa los pasos que daría para solucionar el problema de NTP.
Ejercicios de exploración
-
Investigue las diferencias entre SNTP y NTP.
SNTP NTP -
¿Por qué un administrador de sistemas podría elegir no utilizar
pool.ntp.org
? -
¿Cómo podría un administrador de sistemas decidir unirse o contribuir de alguna manera al proyecto
pool.ntp.org
?
Resumen
En esta lección aprendió:
-
Qué es NTP y por qué es importante.
-
Configurar el demonio NTP utilizando el proyecto
pool.ntp.org
. -
Usar
ntpq
para verificar la configuración NTP. -
Emplear
chrony
como un servicio NTP alternativo.
Comandos usados en esta lección:
timedatectl show-timesync --all
-
Muestra la información SNTP si se utiliza
timedatectl
. ntpdate <address>
-
Realiza una actualización manual de pasos NTP de una sola vez.
ntpq -p
-
Imprime un historial de sondeos recientes de NTP.
-n
sustituirá las URLs por direcciones IP. chronyc tracking
-
Muestra el estado de NTP si se utiliza chrony.
chronyc ntpdata
-
Muestra información NTP sobre el último sondeo.
chronyc sources
-
Muestra información sobre los proveedores NTP.
chronyc makestep
-
Realiza una actualización manual del paso NTP de una sola vez si utiliza chrony.
Respuesta a los ejercicios guiados
-
Introduzca el término apropiado para cada definición:
Definición Término Un ordenador que compartirá la hora de la red con usted
Provider
Distancia de un reloj de referencia, en saltos o pasos.
Stratum
Diferencia entre la hora del sistema y la hora de la red
Offset
iferencia entre la hora del sistema y la hora de la red desde el último sondeo NTP
Jitter
Grupo de servidores que proporcionan la hora de la red y que comparten la carga entre ellos
Pool
-
Especifique cuál de los comandos utilizaría para dar salida a los siguientes valores:
Valor chronyc tracking
timedatectl show-timesync --all
ntpq -pn
chrony ntpdata
chronyc sources
Jitter
X
X
Drift
Interval of Poll
X
X
X
X
X
Offset
X
X
X
Stratum
X
X
X
X
X
IP Address of Provider
X
X
X
X
Root Delay
X
X
-
Está configurando una red empresarial que consta de un servidor Linux y varios ordenadores de sobremesa Linux. El servidor tiene una dirección IP estática de 192.168.0.101. Usted decide que el servidor se conectará a
pool.ntp.org
y luego proporcionará la hora NTP a los ordenadores de sobremesa. Describa la configuración del servidor y de los ordenadores de sobremesa.Asegúrese de que el servidor tiene un servicio ntpd en ejecución, en lugar de SNTP. Utilice los pools de
pool.ntp.org
en el archivo/etc/ntp.conf
o/etc/chrony.conf
. Para cada cliente, especifique192.168.0.101
en cada archivo/etc/ntp.conf
o/etc/chrony.conf
. -
Una máquina Linux tiene la hora incorrecta. Describa los pasos que daría para solucionar el problema de NTP.
En primer lugar, asegúrese de que la máquina está conectada a Internet. Utilice
ping
para ello. Compruebe que el servicio ntpd o SNTP se está ejecutando utilizandosystemctl status ntpd
osystemctl status systemd-timesyncd
. Es posible que aparezcan mensajes de error que proporcionen información útil. Por último, utilice un comando comontpq -p
ochrony tracking
para verificar si se ha realizado alguna solicitud. Si la hora del sistema es drásticamente diferente de la hora de la red, puede ser que la hora del sistema se considere “insane” y no se cambie sin intervención manual. En este caso, utilice un comando de la lección anterior o un comando comontpdate pool.ntp.org
para realizar una única sincronización ntp.
Respuestas a los ejercicios de exploración
-
Investigue las diferencias entre SNTP y NTP.
SNTP NTP Menos precisa
Más precisa.
Requiere menos recursos
Requiere más recursos.
No puede actuar como proveedor de tiempo
Puede actuar como proveedor de tiempo.
Sólo puede medir el tiempo por pasos (steps time)
Puede medir el tiempo por pasos o por pasos (slews time)
Solicita la hora a una sola fuente
Puede controlar varios servidores NTP y utilizar el proveedor óptimo.
-
¿Por qué un administrador de sistemas podría elegir no utilizar
pool.ntp.org
?Desde ntppool.org: Si es absolutamente crucial tener la hora correcta, debería considerar una alternativa. Del mismo modo, si su proveedor de Internet tiene un servidor de tiempo, se recomienda utilizarlo en su lugar.
-
¿Cómo podría un administrador de sistemas decidir unirse o contribuir de alguna manera al proyecto
pool.ntp.org
?Desde www.ntppool.org: Su servidor debe tener una dirección IP estática y una conexión permanente a Internet. La dirección IP estática no debe cambiar en absoluto o al menos menos una vez al año. Además, los requisitos de ancho de banda son modestos: 384 - 512 Kbit de ancho de banda. Los servidores de estrato 3 o 4 son bienvenidos.