sincronizar hora red

Acerca del protocolo NTP

NTP (Network Time Protocol) es un protocolo utilizado para la sincronización de relojes de sistemas computacionales a través de redes. El servicio trabaja a través del puerto 123, únicamente por UDP.

NTP utiliza un sistema jerárquico de relojes, llamados estratos

Estratos
  • Estrato 0: son dispositivos como relojes, GPS
  • Estrato 1: Se sincronizan con los dispositivos estratos 0
  • Estrato 2: Se sincronizan con los estratos 1
  • Estrato 3:
  • Estrato 4:

URL: http://www.ietf.org/rfc/rfc1305.txt Estratos.

UTC

UTC (Coordinated Universal Time, o Tiempo Universal Coordinado) es un estándar de alta precisión de tiempo atómico. Tiene segundos uniformes definidos por TAI (Tiempo Atómico Internacional, o International Atomic Time), con segundos intercalares o adicionales que se anuncian a intervalos irregulares para compensar la desaceleración de la rotación de la Tierra, así como otras discrepancias. Estos segundos adicionales permiten a UTC estar casi a la par del Tiempo Universal (UT, o Universal Time), el cual es otro estándar pero basado sobre el ángulo de rotación de la Tierra, en lugar de el paso uniforme de los segundos.

URL: http://es.wikipedia.org/wiki/UTC

Sincronizar Hora

Centos 7

En centos 7 tenemos el comando timedatectl. Si simplemente ejecutamos timedatectl el resultado será algo como

#>timedatectl
      Local time: lun 2018-08-20 11:27:18 WEST
  Universal time: lun 2018-08-20 10:27:18 UTC
        RTC time: lun 2018-08-20 10:27:18
       Time zone: Atlantic/Canary (WEST, +0100)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  dom 2018-03-25 00:59:59 WET
                  dom 2018-03-25 02:00:00 WEST
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  dom 2018-10-28 01:59:59 WEST
                  dom 2018-10-28 01:00:00 WET
   

  • Para cambiar la hora timedatectl set-time <hora>
     timedatectl set-time 13:21:00
  • Para cambiar la zona horaria timedatectl set-timezone <zona horaria>
    timedatectl set-timezone Atlantic/Canary

Centos 6

Verificar la zona horaria

  1. Primero, sacamos una copia del fichero actual, por si hubiera que volver atrás:

mv /etc/localtime  /etc/localtime.old

  1. Crear un enlace simbólico a la zona que queremos que tenga nuestro servidor:

ln -sf  /usr/share/zoneinfo/Atlantic/Canary  /etc/localtime

  1. Verificamos el archivo /etc/sysconfig/clock
    ZONE="Atlantic/Canary"
    UTC=true
    ARC=false

Ajustar la hora con nuestro servidor...

 ntpdate -u es.pool.ntp.org
En caso de no tener instalado el paquete ntpdate
yum install ntp

Atención con ntpdate ponemos la hora del sistema no la del reloj interno de la máquina. Para sincronizar la hora del reloj interno con la hora del sistema ejecutar
hwclock --systohc

Hay dos formas de hacer que se sincronice continuamente

I.- Mediante una tarea programada

# crontab -e
En el edito ponemos la siguiente instrucción
    */1 * * * * root /usr/sbin/ntpdate -u 2.pool.ntp.org

y por último reiniciamos el servicio

/etc/init.d/crond restart

II.- con el demonio ntpd
  • Crear el directorio para el ajuste horario en caso de no estar creado

mkdir /var/lib/ntp/drift -pchown -R ntp.ntp /var/lib/ntp

  • Actualizar el fichero de configuración para NTP, esto está en /etc/ntp.conf
## Fichero original de http://tecnoquia.blogspot.com/search?q=ntp
## Indica que solo el localhost puede usar el servicio.
## Es la forma de indicar que no se quieren escuchar peticiones
## UDP, lo que nos convertiria en servidores tambien
restrict default nomodify notrap noquery
restrict 127.0.0.1

#### Quien sera nuestra referencia horaria
server  ipodnsservidordominio     # El Servidor NTP Corporativo
server pool.ntp.org
server  127.127.1.0      # Nuestro reloj interno

## Nuestro reloj interno lo metemos en un stratum alto
## por si es que no estuviera disponible el Coporativo
fudge   127.127.1.0 stratum 10

## Aqui se indica donde se escribe esa correccion.
## Normalmente se escribe un valor cada hora.
## OJO CON LOS PERMISOS DEL FICHERO.
driftfile /var/lib/ntp/drift

## Sin autenticacion
authenticate  no

Otro fichero de configuración similar es el siguiente

# Se establece la política predeterminada para cualquier
# servidor de tiempo utilizado: se permite la sincronización
# de tiempo con las fuentes, pero sin permitir a la fuente 
# consultar (noquery), ni modificar el servicio en el 
# sistema (nomodify) y declinando proveer mensajes de 
# registro (notrap).
restrict default nomodify notrap noquery

# Permitir todo el acceso a la interfaz de retorno del sistema.
restrict 127.0.0.1

# Se le permite a la red local sincronizar con el servidor
# pero sin permitirles modificar la configuración del
# sistema, y sin usar a éstos como iguales para sincronizar.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Sincronizar con el reloj local indisciplinad sólo como
# respaldo cuando ninguna de las fuentes reales están
# disponibles.
fudge   127.127.1.0 stratum 10 
server  127.127.1.0

# Fichero de variaciones.
driftfile /var/lib/ntp/drift
broadcastdelay  0.008


# Fichero de claves si acaso fuesen necesarias para realizar
# consultas
keys            /etc/ntp/keys

# Lista de servidores de tiempo de estrato 1 o 2.
# Se recomienda tener al menos 3 servidores listados.
# Mas servidores en:
#		http://kopernix.com/?q=ntp
#		http://www.eecis.udel.edu/~mills/ntp/servers.html

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

# Permisos que se asignarán para cada servidor de tiempo. 
# En los ejemplos, no se permite a las fuente consultar, ni 
# modificar el servicio en el sistema ni enviar mensaje de 
# registro.
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 2.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

# Se Activa la difusión hacia los clientes
broadcastclient

Actualizar el fichero /etc/ntp/step-tickers, ejecutando:

 echo 'ntp.carm.es' > /etc/ntp/step-tickers8.

Iniciar el servicio y configurar para que arranque con el sistema:

 /etc/init.d/ntpd start
chkconfig --level 35 ntpd on

Hay que habilitar en el cortafuegos de la máquina el puerto udp 123 tanto entrante como saliente
el servidor de hora oficial para España es hora.roa.es (150.214.94.5)

problemas y soluciones

Sincronizar con Windows 2008

las versiones del paquete ntp 4.2.6p2 no funcionan con servidores Windows 2008 R2. Para solucionarlo hay que sustituir el paquete por una nueva versión como 4.2.7p326.

sudo apt-get remove ntp ntpdate
wget http://archive.ntp.org/ntp4/ntp-dev/ntp-dev-4.2.7p326.tar.gz
tar xzvf ntp-dev-4.2.7p326.tar.gz
cd ntp-dev-4.2.7p326/
./configure --enable-clockctl
sudo make && make install

si no podemos sincronizar con ntp podemos usar rdate
yum install rdate 
rdate -n <pdc> 

Referencias