Difference between revisions of "Network Time Protocol daemon (Español)"

From ArchWiki
Jump to: navigation, search
(Sincronizar cada vez que arranque)
(17 intermediate revisions by the same user not shown)
Line 9: Line 9:
  
 
==Instalación==
 
==Instalación==
[[pacman|Instale]] {{pkg|ntp}}, disponible en los [[Official Repositories|repositorios oficiales]].
+
[[pacman (Español)|Instale]] {{pkg|ntp}}, disponible en los [[Official Repositories (Español)|repositorios oficiales]].
  
 
==Configuración==
 
==Configuración==
{{Tip|El paquete {{pkg|ntp}} instala de forma predeterminada {{ic|/etc/ntp.conf}} que debería hacer funcionar NTPd sin necesidad de aportar configuración adicional.}}
+
{{Sugerencia|El paquete {{pkg|ntp}} instala de forma predeterminada {{ic|/etc/ntp.conf}} que debería hacer funcionar NTPd sin necesidad de aportar configuración adicional.}}
  
 
===Configurar conexión a servidores NTP===
 
===Configurar conexión a servidores NTP===
Line 28: Line 28:
 
server 3.pool.ntp.org iburst
 
server 3.pool.ntp.org iburst
 
}}
 
}}
La opción {{ic|iburst}} está recomendada, ya que envía una serie (''«burst»'') de paquetes sólo si no se puede obtener una conexión con el primer intento. Por otro lado, la opción {{ic|burst}} siempre está presente, incluso en el primer intento, pero nunca debe utilizarse sin permiso explícito, dado que puede incluirse en blacklist.
+
La opción {{ic|iburst}} está recomendada, ya que envía una serie (''«burst»'') de paquetes solo si no se puede obtener una conexión con el primer intento. Por otro lado, la opción {{ic|burst}} siempre está presente, incluso en el primer intento, pero nunca debe utilizarse sin permiso explícito, dado que puede incluirse en blacklist.
  
 
===Configurar el propio servidor NTP===
 
===Configurar el propio servidor NTP===
Line 46: Line 46:
 
  restrict default kod nomodify notrap nopeer noquery
 
  restrict default kod nomodify notrap nopeer noquery
  
{{Nota|Aún con las opciones anteriores, estas todavía permiten a otras personas consultar el time server. Para evitarlo, es necesario añadir {{ic|noserve}} a fin de detener la función de servir el tiempo horario. También impide la sincronización horaria, ya que bloquea todos los paquetes ntpq y consultas ntpdc.}}
+
{{Nota|Aún con las opciones anteriores, estas todavía permiten a otras personas consultar el time server. Para evitarlo, es necesario añadir {{ic|noserve}} a fin de detener la función de servir el tiempo horario. También impide la sincronización horaria, ya que bloquea todos los paquetes, excepto las consultas de ntpd y ntpdc.}}
  
 
La documentación completa para la opción "restrict" se encuentra en {{ic|man ntp_acc}}. Consulte https://support.ntp.org/bin/view/Support/AccessRestrictions para obtener instrucciones detalladas.
 
La documentación completa para la opción "restrict" se encuentra en {{ic|man ntp_acc}}. Consulte https://support.ntp.org/bin/view/Support/AccessRestrictions para obtener instrucciones detalladas.
Line 86: Line 86:
 
===Otros recursos para la configuración de NTP===
 
===Otros recursos para la configuración de NTP===
 
En conclusión, no olvide consultar las páginas man: es probable que {{ic|man ntp.conf}} responda a cualquier duda que todavía pudiera tener (consulta las páginas man relacionadas: {{ic|man <nowiki>{ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}</nowiki>}}).
 
En conclusión, no olvide consultar las páginas man: es probable que {{ic|man ntp.conf}} responda a cualquier duda que todavía pudiera tener (consulta las páginas man relacionadas: {{ic|man <nowiki>{ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}</nowiki>}}).
 
Consulte el artículo de la [http://es.gentoo-wiki.com/wiki/P%C3%A1gina_Principal Wiki de Gentoo Linux] sobre este tema para obtener más información: [http://en.gentoo-wiki.com/wiki/NTP NTP]
 
  
 
==Usar sin demonio==
 
==Usar sin demonio==
Line 94: Line 92:
 
  # ntpd -qg
 
  # ntpd -qg
  
Esto tiene el mismo efecto que el programa {{ic|ntpdate}}, [http://support.ntp.org/bin/view/Dev/DeprecatingNtpdate que ahora está en desuso].
+
{{Nota|Esto tiene el mismo efecto que el programa {{ic|ntpdate}}, [http://support.ntp.org/bin/view/Dev/DeprecatingNtpdate que ahora está en desuso].}}
 
+
La opción {{ic|-g}} permite cambiar el reloj más allá del umbral de pánico (15 minutos por defecto) sin una advertencia. Tenga en cuenta que tal desplazamiento es anormal y puede indicar o bien un ajuste a una zona horaria incorrecta o un fallo del chip del reloj, o simplemente un largo periodo de abandono sin sincronizar. Si en estos casos no desea ajustar el reloj y evitar que imprima un error al syslog, quite {{ic|-g}}.
+
  
 
Después de actualizar el reloj del sistema, guarde el horario para el reloj del hardware de manera que se conserve al reiniciar:
 
Después de actualizar el reloj del sistema, guarde el horario para el reloj del hardware de manera que se conserve al reiniciar:
Line 103: Line 99:
 
===Sincronizar cada vez que arranque===
 
===Sincronizar cada vez que arranque===
  
{{Advertencia|
+
{{Advertencia|El uso de este método no se recomienda en los servidores y, en general, en las máquinas que necesitan funcionar de forma continua durante más de 2 o 3 días, ya que el reloj del sistema se actualiza solo una vez durante el arranque.}}
*El uso de este método no se recomienda en los servidores y en general en las máquinas que necesitan funcionar de forma continua durante más de 2 o 3 días, ya que el reloj del sistema se actualiza sólo una vez durante el arranque.
+
*Ejecute {{ic|ntpd -qg}} si se quiere evitar que funcione como un evento ''cron'', a menos que sepa cómo van a reaccionar las aplicaciones en ejecución a los cambios de horario instantáneo del sistema.}}
+
  
Para sincronizar el reloj del sistema cada vez que se inicia el sistema, añada la siguiente línea a {{ic|/etc/rc.local}} (consulte [[Autostarting]] para conocer métodos alternativos):
+
Escriba una unidad ''oneshot'' de [[Systemd (Español)|systemd]]:
 +
{{hc|/etc/systemd/system/ntp-once.service|2=
 +
[Unit]
 +
Description=Network Time Service (once)
 +
After=network.target nss-lookup.target
  
ntpd -qg &
+
[Service]
 +
Type=oneshot
 +
ExecStart=/usr/bin/ntpd -q -g -u ntp:ntp ; /sbin/hwclock -w
  
También debe asegurarse de que el demonio {{ic|hwclock}} está incluido en la [[Daemon#Starting_on_Boot|matriz DAEMONS]], a menos que algo ya se encargue de actualizar el reloj del hardware, por ejemplo, otro sistema operativo en arranque dual. Consulte también [[Time#hwclock daemon]].
+
[Install]
 +
WantedBy=multi-user.target}}
  
Para que este método funcione tiene que asegurarse que, cuando se ejecuta {{ic|rc.local}}, la conexión de red ya ha sido inicializada (por ejemplo, no debería tener en el archivo {{ic|/etc/rc.conf}}demonios relacionados con la red ejecutándose en segundo plano).
+
y actívela: {{bc|# systemctl enable ntp-once}}
  
Si por alguna razón no desea ejecutar el demonio {{ic|hwclock}}, añada la línea de abajo al archivo {{ic|/etc/rc.local}} en lugar de la línea {{ic|ntpd -qg &}}:
+
Tenga en cuenta que una unidad de [[systemd (Español)|systemd]] del tipo ''oneshot'' se ejecuta solo una vez. Por tanto, la opción {{ic|ntpd -q}} no se debe utilizar en este caso.
  
{ ntpd -qg; hwclock -w; } &
+
==Ejecutar como un demonio==
  
Esta sintaxis hace que ambas órdenes se ejecuten en segundo plano, pero asegura que se ejecutan en orden (y no al mismo tiempo). Tenga en cuenta que la ejecución de la orden {{ic|hwclock -w}} al arranque no es equivalente a ejecutar el demonio {{ic|hwclock}}, que se ejecuta en lugar de {{ic|hwclock --adjust}} al apagar el equipo.
 
 
==Ejecutar como un demonio==
 
 
Para iniciar ntpd:
 
Para iniciar ntpd:
 
{{bc|# systemctl start ntpd}}
 
{{bc|# systemctl start ntpd}}
Line 134: Line 132:
 
Utilice la herramienta ntpq para ver la lista de pares (''«peers»'') configurados:
 
Utilice la herramienta ntpq para ver la lista de pares (''«peers»'') configurados:
 
{{bc|$ ntpq -np}}
 
{{bc|$ ntpq -np}}
Las columnas delay, offset y jitter deben mostrar una fluctuación distinta de cero. Los servidores ntpd que se estén sincronizando aparecerán con un asterisco como prefijo.
+
Las columnas delay, offset y jitter deben mostrar una fluctuación distinta de cero. Los servidores ntpd que se estén sincronizando aparecerán con un asterisco como prefijo. Pueden pasar varios minutos antes que ntpd seleccione un servidor para sincronizarse, pruebe a comprobar pasados 17 minutos (1024 segundos).
  
 
===NetworkManager===
 
===NetworkManager===
 
{{Nota|ntpd debe seguir funcionando cuando la red no funciona, si el demonio hwclock está desactivado, por lo que no es necesario utilizar este último.}}
 
{{Nota|ntpd debe seguir funcionando cuando la red no funciona, si el demonio hwclock está desactivado, por lo que no es necesario utilizar este último.}}
''ntpd'' puede ser puesto up/down junto con una conexión de red mediante el uso de los [[NetworkManager#Network services with NetworkManager dispatcher|scripts de NetworkManager dispatcher]]. Puede instalar el script necesario desde [community]:
+
''ntpd'' puede ser puesto up/down junto con una conexión de red mediante el uso de los [[NetworkManager_(Español)#Servicios_de_red_con_NetworkManager_dispatcher|scripts de NetworkManager dispatcher]]. Puede ser necesario instalar {{Pkg|networkmanager-dispatcher-ntpd}} desde los [[Official Repositories (Español)| repositorios oficiales]].
 
+
{{bc|# pacman -S networkmanager-dispatcher-ntpd}}
+
  
 
===Ejecutar en un entorno chroot===
 
===Ejecutar en un entorno chroot===
Line 186: Line 182:
  
 
==Alternativas==
 
==Alternativas==
Alternativas disponible para ntpd son [[Chrony]], un dial-up amable y específicamente diseñado para sistemas que no están en línea todo el tiempo, y [[OpenNTPD]], que forma parte del proyecto OpenBSD y actualmente no mantenido para Linux.
+
Una alternativa disponible para NTPd es [[Chrony]], un dial-up amable y específicamente diseñado para sistemas que no están en línea todo el tiempo.
  
 
==Véase también==
 
==Véase también==
* [[Time]] (para más información sobre la gestión del tiempo del ordenador)
+
* [[Time (Español)]] (para más información sobre la gestión del tiempo del ordenador)
  
 
==Enlaces externos==
 
==Enlaces externos==

Revision as of 07:42, 15 July 2013

En este artículo describe cómo configurar y ejecutar NTPd (Network Time Protocol daemon), el método más común para sincronizar el horario del software de un sistema GNU/Linux con servidores de hora («time server») de Internet utilizando el Network Time Protocol; si se ha configurado correctamente, NTPd puede hacer que su ordenador funcione como si fuese un time server.

Instalación

Instale ntp, disponible en los repositorios oficiales.

Configuración

Sugerencia: El paquete ntp instala de forma predeterminada /etc/ntp.conf que debería hacer funcionar NTPd sin necesidad de aportar configuración adicional.

Configurar conexión a servidores NTP

El primer elemento a definir en el archivo /etc/ntp.conf serán los servidores a los que el equipo se va a conectar para sincronizar el tiempo (fecha y hora).

Los servidores NTP se clasifican en un sistema jerárquico con muchos niveles llamados strata (estrato): los dispositivos que se consideran fuentes independientes de tiempo horario son clasificados como fuentes de stratum 0; los servidores conectados directamente a dispositivos de stratum 0 son clasificados como fuentes de stratum 1; los servidores conectados a fuentes de stratum 1 se clasifican consiguientemente como fuentes de stratum 2 y así sucesivamente.

Se ha de entender que el stratum de un servidor no puede ser tomado como un indicador de su precisión o fiabilidad. Normalmente, los servidores de stratum 2 se utilizan con fines de sincronización generales: si no sabe aún los servidores a los que se va a conectar, debe mirar los servidores en pool.ntp.org (enlace alternativo) y seleccionar el grupo de servidores que esté más cercano a su zona.

A modo de ejemplo:

/etc/ntp.conf
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

La opción iburst está recomendada, ya que envía una serie («burst») de paquetes solo si no se puede obtener una conexión con el primer intento. Por otro lado, la opción burst siempre está presente, incluso en el primer intento, pero nunca debe utilizarse sin permiso explícito, dado que puede incluirse en blacklist.

Configurar el propio servidor NTP

Si va a configurar un servidor NTP, es necesario agregar local clock como un servidor, por lo que , si el ordenador pierde el acceso a internet, continuará el mismo como un servidor dando el horario a la red; añada local clock como un servidor de stratum 10 (use la orden fudge) de modo que nunca se hará uso de esa función a menos que el acceso a internet se pierda:

server 127.127.1.0
fudge  127.127.1.0 stratum 10

A continuación, defina las reglas que permiten a los clientes conectarse a su servicio (localhost es considerado igualmente un cliente) usando la orden restrict; le debe quedar en el archivo una línea como la siguiente:

restrict default nomodify nopeer noquery

Estas opciones impiden que nadie pueda modificar algo y evitan igualmente que alguien pueda consultar el estado de su time server: nomodify impide la reconfiguración de ntpd (con ntpq o ntpdc), y noquery impide conocer el estado dumping de los datos de ntpd (también con ntpq o ntpdc).

También puede agregar estas otras opciones:

restrict default kod nomodify notrap nopeer noquery
Nota: Aún con las opciones anteriores, estas todavía permiten a otras personas consultar el time server. Para evitarlo, es necesario añadir noserve a fin de detener la función de servir el tiempo horario. También impide la sincronización horaria, ya que bloquea todos los paquetes, excepto las consultas de ntpd y ntpdc.

La documentación completa para la opción "restrict" se encuentra en man ntp_acc. Consulte https://support.ntp.org/bin/view/Support/AccessRestrictions para obtener instrucciones detalladas.

Siguiendo con la configuración, debe decirle a ntpd qué debe permitir a través del propio servidor; la siguiente línea es suficiente si no va a configurar un servidor NTP:

restrict 127.0.0.1

Si desea forzar la resolución de DNS para el namespace de IPv6, escriba -6 antes de la dirección IP o nombre de host (-4 obliga a IPv4 en su lugar), por ejemplo:

restrict -6 default kod nomodify notrap nopeer noquery
restrict -6 ::1    # ::1 is the IPv6 equivalent for 127.0.0.1

Por último, especifique la ubicación del archivo drift (que realiza un seguimiento de la desviación del horario del sistema) y, opcionalmente, la ubicación del archivo de registro:

driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log

Un archivo de configuración muy básica se vería así (todos los comentarios han sido quitados para mayor claridad):

/etc/ntp.conf
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1  

driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log
Nota: La definición del archivo de registro no es obligatoria, pero es siempre una buena idea tener retroalimentación de las operaciones de ntpd.

Otros recursos para la configuración de NTP

En conclusión, no olvide consultar las páginas man: es probable que man ntp.conf responda a cualquier duda que todavía pudiera tener (consulta las páginas man relacionadas: man {ntpd|ntp_auth|ntp_mon|ntp_acc|ntp_clock|ntp_misc}).

Usar sin demonio

Para sincronizar el reloj del sistema en un momento dado, sin iniciar el demonio NTP, ejecute:

# ntpd -qg
Nota: Esto tiene el mismo efecto que el programa ntpdate, que ahora está en desuso.

Después de actualizar el reloj del sistema, guarde el horario para el reloj del hardware de manera que se conserve al reiniciar:

# hwclock -w

Sincronizar cada vez que arranque

Advertencia: El uso de este método no se recomienda en los servidores y, en general, en las máquinas que necesitan funcionar de forma continua durante más de 2 o 3 días, ya que el reloj del sistema se actualiza solo una vez durante el arranque.

Escriba una unidad oneshot de systemd:

/etc/systemd/system/ntp-once.service
[Unit]
Description=Network Time Service (once)
After=network.target nss-lookup.target 

[Service]
Type=oneshot
ExecStart=/usr/bin/ntpd -q -g -u ntp:ntp ; /sbin/hwclock -w

[Install]
WantedBy=multi-user.target
y actívela:
# systemctl enable ntp-once

Tenga en cuenta que una unidad de systemd del tipo oneshot se ejecuta solo una vez. Por tanto, la opción ntpd -q no se debe utilizar en este caso.

Ejecutar como un demonio

Para iniciar ntpd:

# systemctl start ntpd

Para activar ntpd al iniciar el sistema:

# systemctl enable ntpd

O, alternativamente, con la orden:

# timedatectl set-ntp 1

Comprobar si el demonio está sincronizando correctamente

Utilice la herramienta ntpq para ver la lista de pares («peers») configurados:

$ ntpq -np

Las columnas delay, offset y jitter deben mostrar una fluctuación distinta de cero. Los servidores ntpd que se estén sincronizando aparecerán con un asterisco como prefijo. Pueden pasar varios minutos antes que ntpd seleccione un servidor para sincronizarse, pruebe a comprobar pasados 17 minutos (1024 segundos).

NetworkManager

Nota: ntpd debe seguir funcionando cuando la red no funciona, si el demonio hwclock está desactivado, por lo que no es necesario utilizar este último.

ntpd puede ser puesto up/down junto con una conexión de red mediante el uso de los scripts de NetworkManager dispatcher. Puede ser necesario instalar networkmanager-dispatcher-ntpd desde los repositorios oficiales.

Ejecutar en un entorno chroot

Note: ntpd se debe ejecutar como usuario no root antes que intentar configuralo en un entorno chroot (predefinido en el paquete vanilla de Arch Linux), ya que desde entornos chroots es relativamente inútil para asegurar procesos ejecutados como root.

Edite /etc/conf.d/ntpd.conf y cambie

NTPD_ARGS="-g -u ntp:ntp"

por

NTPD_ARGS="-g -i /var/lib/ntp -u ntp:ntp"

A continuación, edite /etc/ntp.conf para cambiar la ruta de driftfile de modo que sea dirigida al directorio chroot, en lugar de a la raíz del sistema real. Cambie:

driftfile       /var/lib/ntp/ntp.drift

por

driftfile       /ntp.drift

Crear un entorno chroot adecuado para que getaddrinfo() funcione mediante la creación de directorios y archivos pertinentes (como root):

# mkdir /var/lib/ntp/etc /var/lib/ntp/lib /var/lib/ntp/proc
# touch /var/lib/ntp/etc/resolv.conf /var/lib/ntp/etc/services

y seguidamente montar los enlaces a los archivos arriba indicados:

/etc/fstab
...
#ntpd chroot mounts
/etc/resolv.conf  /var/lib/ntp/etc/resolv.conf none bind 0 0
/etc/services	  /var/lib/ntp/etc/services none bind 0 0
/lib		          /var/lib/ntp/lib none bind 0 0
/proc		  /var/lib/ntp/proc none bind 0 0
# mount -a

Por último, reinicie el demonio de nuevo:

# systemctl restart ntpd

Es relativamente difícil estar seguro de que su configuración driftfile está realmente trabajando sin tener que esperar un tiempo, dado que ntpd no lee ni escribe muy a menudo. Si se equivoca, se registrará un error, y si se hace bien, se actualizará la fecha y hora («timestamp»). Si no aparece ningún error al respecto después de un día completo de funcionamiento, y timestamp se actualiza, puede estar seguro de haberlo hecho correctamente.

Alternativas

Una alternativa disponible para NTPd es Chrony, un dial-up amable y específicamente diseñado para sistemas que no están en línea todo el tiempo.

Véase también

  • Time (Español) (para más información sobre la gestión del tiempo del ordenador)

Enlaces externos