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.
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.
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
.
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:
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.
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
:
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:
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).
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
Bajo FreeBSD 5.X se han renombrado algunas opciones del
fichero /etc/rc.conf
. Se debe reemplazar
cualquier aparición xntpd
por
por ntpd
.
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:
Para ás detalles consulte la sección
PACKET FILTERING
de ppp(8) y los ejemplos que
se encuentran en
/usr/share/examples/ppp/
.
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.
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>.