Manual de FreeBSD
Anterior | Capítulo 29. Networking avanzado | Siguiente

# 29.12. NTP

Escrito por Tom Hukins.

## 29.12.1. Resumen

Según pasa el tiempo el reloj de un computador está expuesto a ligeros desplazamientos. NTP (Protocolo de Hora en Red, en inglés Network Time Protocol) es un protocolo que permite asegurar la exactitud de nuestro reloj.

Existen varios servicios de internet que confían y se pueden beneficiar de relojes de computadores precisos. Por ejemplo un servidor web puede recibir peticiones de un determinado fichero si ha sido modificado posteriormente a una determinada fecha u hora. Servicios como cron(8) ejecutan órdenes en determinados instantes. Si el reloj no se encuentra ajustado estas órdenes pueden ejecutarse fuera de la hora prevista.

FreeBSD viene con el servidor NTP ntpd(8) que se puede utilizar para preguntar a otros servidores NTP, de tal forma que podemos ajustar nuestro reloj según la hora de otros servidores e incluso proporcionar servicio de hora nosotros mismos.

## 29.12.2. Elección de los servidores de hora adecuados

Para sincronizar nuestro reloj necesitamos comunicarnos con uno o más servidores NTP. El administrador de nuestra red o nuestro proveedor de servicios de Internet muy posiblemente hayan configurado algún servidor NTP para estos propósitos. Consulte la documentación de que disponga. Existe una lista de servidores NTP públicamente accesibles que se pueden utilizar para buscar un servidor NTP que se encuentre geográficamente próximo. Asegúrese de que conoce la política de uso de estos servidores públicos ya que en algunos casos es necesario pedir permiso al administrador antes de de poder utilizarlos, principalmente por motivos estadísticos.

Le recomendamos seleccionar servidores NTP que no se encuentren conectados entre sí por si alguno de los servidores que use sea inaccesible o su reloj se averíe. ntpd(8) utiliza las respuestas que recibe de otros servidores de una forma inteligente. servidores de una forma inteligente (Tiene a hacer más caso a los más fiables.

## 29.12.3. Configuración de la máquina

### 29.12.3.1. Configuración básica

Si sólamente deseamos sincronizar nuestro reloj cuando se arranca la máquina se puede utilizar ntpdate(8). Esto puede ser adecuado en algunas máquinas de escritorio que se reinician frecuentemente y donde la sincronización no suele ser un objetivo prioritario pero normalmente la mayoría de las máquinas deberían ejecutar ntpd(8).

La utilización de ntpdate(8) en tiempo de arranque es también una buena idea incluso para las máquinas que ejecutan ntpd(8). El programa ntpd(8) modifica el reloj de forma gradual, mientras que ntpdate(8) ajusta directamente el reloj sin importar que tamaño tenga la diferencia de tiempo existente entre la máquina y el servidor de tiempo de referencia.

Para activar ntpdate(8) en tiempo de arranque, añada `ntpdate_enable="YES"` al fichero `/etc/rc.conf`. También es necesario especificar todos los servidores que deseamos utilizar para realizar el proceso de sincronización y cualquier parámetro que deseemos pasar a ntpdate(8) utilizando la variable `ntpdate_flags`.

### 29.12.3.2. Configuración general

NTP se configura mediante el archivo `/etc/ntp.conf` utilizando el formato descrito en ntp.conf(5). A continuación se muestra un sencillo ejemplo:

    server ntplocal.ejemplo.com prefer
    server timeserver.ejemplo.org
    server ntp2a.ejemplo.net

    driftfile /var/db/ntp.drift

La opción `server` especifica qué servidores se van a utilizar, especificando un servidor por línea. Si se especifica un servidor con el argumento `prefer`, como en `ntplocal.ejemplo.com` dicho servidor se prefiere sobre los demás. No obstante la respuesta de su servidor preferido se descartará si difiere sustancialmente de la respuesta recibida por parte del resto de los servidores especificados; en caso contrario sólo se tendrá en cuenta la respuesta del servidor preferido sin importar la información suministrada por el resto. El argumento `prefer` se utiliza normalmente en servidores NTP altamente precisos, como aquellos que poseen hardware de tiempo específico.

La opción `driftfile` especifica qué fichero se utiliza para almacenar el desplazamiento de la fracuencia de reloj de la máquina. El programa ntpd(8) utiliza este valor para automáticamente compensar el desvío que experimenta de forma natural el reloj de la máquina, permitiendo mantener una precisión acotada incluso cuando se pierde la comunicación con el resto de referencias externas.

La opción `driftfile` especifica qué fichero se utiliza para almacenar la información sobre espuestas anteriores de servidores NTP. Este fichero contiene información útil para la implementación de NTP. No debería ser modificada por ningún otro proceso.

### 29.12.3.3. Control de acceso al servidor NTP

Por defecto nuestro servidor de NTP puede ser accedido por cualquier máquina de Internet. La opción `restrict` se puede utilizar para controlar controlar qué máquinas pueden acceder al servicio.

Si queremos denegar el acceso a todas las máquinas existentes basta con añadir la siguiente línea a `/etc/ntp.conf`:

    restrict default ignore

Si sólo queremos permitir el acceso al servicio de hora a las máquinas de nuestra red y al menos tiempo nos queremos asegurar de que dichos clientes no pueden a su vez configurar la hora del servidor o utilizarse ellos mismos como nuevos servidores de hora basta con añadir lo siguiente en lugar de lo anterior:

    restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap

donde `192.168.1.0` es la dirección IP de nuestra red y `255.255.255.0` es la máscara de red.

`/etc/ntp.conf` puede contener varias opciones de tipo `restrict`. Para más detalles consulte la sección `Soporte de Control de Acceso` de ntp.conf(5).

## 29.12.4. Ejecución del servidor de NTP

Para asegurarnos de que el servidor de NTP se ejecuta en tiempo de arranque se debe añadir la línea `xntpd_enable="YES"` al fichero `/etc/rc.conf`. Si deseamos pasar opciones adicionales a ntpd(8) se puede modificar la variable `xntpd_flags` del fichero `/etc/rc.conf`.

Para ejecutar el servidor sin reiniciar la máquina ejecute `ntpd` junto con todos aquellos parámetros que haya especificado en la variable de arranque `xntpd_flags` del fichero `/etc/rc.conf`. Por ejemplo:

    # ntpd -p /var/run/ntpd.pid

> Nota: Bajo FreeBSD 5.X se han renombrado algunas opciones del fichero `/etc/rc.conf`. Se debe reemplazar cualquier aparición `xntpd` por por `ntpd`.

## 29.12.5. Utilización de ntpd junto con una conexión temporal a Internet

El programa ntpd(8) no necesita una conexión permanente a Internet para poder funcionar correctamente. No obstante si la conexión a Internet se encuentra configurada con marcación bajo demanda es una buena idea impedir que el tráfico de NTP lance una marcación automática o que mantenga la conexión viva. Si se utiliza el PPP de entorno de usuario se pueden utilizar las directivas `filter` dentro del fichero `/etc/ppp/ppp.conf` para evitar esto. Por ejemplo:

     set filter dial 0 deny udp src eq 123
     # Evita que el trÃ¡fico NTP inice una llamada saliente
     set filter dial 1 permit 0 0
     set filter alive 0 deny udp src eq 123
     Evita que el trÃ¡ficoNTP entrante mantenga abierta la conexiÃ³n
     set filter alive 1 deny udp dst eq 123
     Evita que el trÃ¡fico NTP saliente mantenga abierta la conexiÃ³n
     set filter alive 2 permit 0/0 0/0

Para ás detalles consulte la sección `PACKET FILTERING` de ppp(8) y los ejemplos que se encuentran en `/usr/share/examples/ppp/`.

> Nota: Algunos proveedores de acceso a Internet bloquean paquetes que utilizan números de puertos bajos impidiendo que los paquetes de vuelta alcancen nuestra máquina.

## 29.12.6. Información adicional

Hay documentación sobre el servidor NTP en formato HTML en `/usr/share/doc/ntp/`.

Anterior | Inicio | Siguiente
DNS | Subir | Traducción de direcciones de red

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.