108.1 Lección 2
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
108 Servicios Esenciales del Sistema |
Objetivo: |
108.1 Mantener el tiempo 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
Diferencia 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.