¿Cómo configuro un servidor NTP local?


16

Instalé el servidor NTP en Ubuntu Server 10.04 usando:

sudo apt-get install ntp

El demonio NTP parece estar funcionando y escuchando en el puerto 123.

Sin embargo, no pude obtener el tiempo de otra máquina:

sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

¿Hay alguna configuración necesaria para hacer?

Respuestas:


19

Aquí hay un buen tutorial de los foros de Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Pasta de copia flagrante:

Cómo: configurar un servidor NTP

Este tutorial describe cómo configurar su máquina como un servidor local de Protocolo de hora de red (NTP) y / o cómo usar el demonio NTP para mantener regularmente una hora precisa del sistema.

¿Qué es el NTP?

El Protocolo de hora de red (NTP) es un protocolo diseñado para sincronizar con precisión los relojes de hora local con los servidores de hora en red. La red NTP de servidores de tiempo se configura de manera jerárquica, de modo que cualquier usuario puede ingresar al sistema como servidor en algún nivel (consulte la página de Wikipedia para obtener más detalles).

La jerarquía NTP se separa en diferentes niveles, llamados estratos de reloj. El nivel más preciso, Stratum 0, está reservado para relojes atómicos, etc. El siguiente nivel, Stratum 1, generalmente es utilizado por máquinas en red conectadas localmente a los relojes Stratum 0. Stratum 2 ... 15 son máquinas NTP que están conectadas, a su vez, a relojes de nivel inferior y entre sí.

Esta guía describe cómo sincronizar con precisión con las máquinas Stratum 1 y 2, y mantener el reloj del sistema lo más preciso posible durante todo el día. También se incluyen secciones sobre cómo permitir que su máquina funcione como un servidor Stratum 2/3 para otras máquinas en su red local.

¿Tengo que hacer un servidor NTP?

¡No absolutamente no! Si está satisfecho con los relojes en su red que tienen una diferencia desconocida con respecto a la hora estándar (y entre sí), entonces no tiene que configurar un servidor NTP. Configuré uno en mi computadora portátil para sincronizar varias máquinas en una red local dentro de <1 ms para un experimento de bioingeniería. Hay varias otras ventajas, además, que se describen a continuación.

Motivación:

Regularmente, los cuadros de Ubuntu no modificados usan ntpdate ( /usr/sbin/ntpdate) para sincronizar el reloj periódicamente con algún servidor de hora externo. Este enfoque sincroniza el reloj con una resolución del curso (generalmente una vez al día).

Los relojes de las computadoras son imperfectos y derivarán del servidor de hora (correcto) durante el día. Además, las tasas de deriva en los relojes de diferentes computadoras difieren, de modo que al final del día pueden existir diferencias significativas entre las diferentes máquinas conectadas en red localmente, lo que puede interferir con ciertas operaciones (por ejemplo, alguna vez hay una queja provisional cuando se mueve el código fuente entre diferentes máquinas?

Es posible ejecutar el demonio NTP localmente en una máquina en su red. Esto tiene múltiples ventajas: primero, el demonio NTP "aprende" gradualmente la tasa de deriva de su máquina local y puede corregirla durante todo el día. La sincronización con los servidores de tiempo de nivel superior se realiza varias veces al día, y se pueden usar muchos servidores de tiempo diferentes simultáneamente para hacer que la sincronización sea más precisa. De esta manera, el demonio NTP actúa como un cliente de tiempo preciso, manteniendo el reloj de su sistema lo más cerca posible de la hora estándar.

Además de mantener un reloj preciso del sistema, el demonio NTP permite que una máquina en su red (si lo desea) funcione como un servidor horario NTP. Hacerlo permitirá que otras máquinas en su red local se sincronicen con su servidor de hora LAN de una manera muy rápida y precisa, ya que la latencia de la red se minimiza. De esta manera, las diferencias en los relojes entre máquinas en su red se mantienen lo más mínimas posible. Mac, e incluso los cuadros de Windows también pueden sincronizarse con un servidor NTP, si configura uno.

Existen otras motivaciones, menos personales, para configurar una máquina como servidor NTP. Primero, hacerlo puede disminuir la tensión en los servidores NTP de nivel superior, ya que otras máquinas en su LAN pueden sincronizarse con un servidor de hora establecido localmente. Además, ntpdate ha quedado en desuso a favor del uso del indicador -q para ntpd (que imita su funcionalidad). Por lo tanto, incluso si no desea ejecutar ntpd constantemente en segundo plano, ntpdate eventualmente será reemplazado por ntpd, por lo que es posible que desee familiarizarse con él ahora

Cómo mantener un reloj preciso del sistema con ntpd

  1. Instale el demonio NTP

Primero, instale el demonio NTP (ntpd):

sudo aptitude install ntpd

Como se mencionó anteriormente, ntpd puede actuar como un cliente (sincronizando la hora del sistema) y como un servidor (proporcionando una hora precisa para otras máquinas).

Opcionalmente, es posible que también desee eliminar el programa de sincronización de tiempo anterior (obsoleto), ntpdate. Quizás sea más prudente hacerlo después de que ntpd funcione

sudo aptitude remove ntpdate
  1. Configurar el demonio correctamente

El archivo de configuración para ntpd se encuentra en /etc/ntp.conf. El archivo Ubuntu predeterminado probablemente requiera alguna modificación para un rendimiento óptimo.

La primera sección que puede modificar es la lista de servidores con los que se sincronizará. La sección predeterminada probablemente se ve de la siguiente manera:

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

Para obtener el tiempo más preciso posible, es preferible comunicarse con varios servidores NTP diferentes y mantenerlos lo más cerca posible de su ubicación física. Hay varias listas de servidores diferentes en línea, probablemente la mejor se encuentra aquí. Existe cierto debate sobre la cantidad adecuada de servidores a utilizar. Uno es mejor que dos, y tres o más probablemente es una buena idea, siempre y cuando no te excedas. Un ejemplo de algunos servidores de tiempo que utilicé a continuación:

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

Una vez que se hayan encontrado algunos servidores buenos, agréguelos a la lista, colocando 'iburst'después el más prometedor. Por ejemplo:

server nist1-dc.WiTime.net iburst

Esto hará que ntpd se sincronice muy rápidamente con este servidor después de iniciarse. De lo contrario, ntpd tenderá lentamente a llegar a un acuerdo con la lista de servidores (como es su naturaleza), y puede tardar entre 15 y 20 minutos en sincronizarse lo suficientemente bien como para actuar como un servidor de tiempo para el resto de su red.

Además, agregue algunas líneas adicionales al final de su lista de servidores para proporcionar su hora local actual como predeterminada si pierde temporalmente la conectividad a Internet:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Esto evitará cualquier maldad si está ejecutando ntpd en una computadora portátil u otra máquina con períodos intermitentes de desconexión de Internet.

En general, la lista de servidores debería ser similar a la siguiente (esta es la mía, sus servidores probablemente serán diferentes):

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. Asegúrese de que la configuración funcione

Ahora que tiene una lista de servidores adecuada en su /etc/ntp.confarchivo, ¡es hora de ejecutar el demonio y ver si se sincroniza correctamente! Asegúrese de tener una conexión a Internet activa y luego ejecute:

sudo /etc/init.d/ntp restart

Luego, monitoree el registro de su sistema para ver si se sincroniza con un servidor horario:

tail -f /var/log/syslog

En aproximadamente 10-15 segundos (o hasta 15-20 minutos si olvidó poner 'iburst' después de su servidor favorito), debería ver algo como lo siguiente en el registro de su sistema:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

Si este mensaje nunca llega, aún no se ha sincronizado correctamente con la red del servidor NTP. Consulte la lista de pares NTP con los que se está comunicando utilizando lo siguiente:

ntpq -c lpeer

Si los campos 'delay', 'offset' y 'jitter' no son cero y no has sincronizado, probablemente significa que solo debes esperar un tiempo. ¡Verifique nuevamente que haya insertado el argumento 'iburst' en su lista de servidores! Mis compañeros, como referencia, se parecen a lo siguiente:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. ¡Compartir! (Opcional)

Una vez que ntpd se esté ejecutando y esté sincronizado con los servidores de tiempo que ha seleccionado, puede configurarlo para que actúe como un servidor de tiempo para otras máquinas. Para hacerlo, agregue una sección como la siguiente para /etc/ntp.conf:

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. ¡Sincronizar! (Opcional)

Una vez que haya configurado un servidor NTP usando los pasos 1-4, puede sincronizar las otras máquinas en su red con su servidor de varias maneras. Describo algunos de ellos a continuación:

ntpd:

Si tiene instalado ntpd en otra máquina, puede usar su primer servidor en la lista de servidores de su archivo ntp.conf, o puede sincronizar una vez con la opción -q, de la siguiente manera:

ntpd -q [IP address of your server]

ntpdate:

Si todavía tiene ntpdate instalado en otra máquina, puede usarlo para sincronizar con su servidor de la siguiente manera:

ntpdate [IP address of your server]

Nota: si está ejecutando ntpd en una máquina y, por alguna razón, todavía quiere usar ntpdate para configurar la hora, debe usar la opción -u.

Ventanas:

Las máquinas con Windows usan una versión simplificada de NTP llamada Protocolo simple de tiempo de red (SNTP) y pueden sincronizarse con servidores NTP. Para sincronizar con su nuevo servidor, haga doble clic en la hora y vaya a la pestaña "Hora de Internet". Ponga la dirección IP de su servidor en el campo "Servidor". He adjuntado una captura de pantalla de la sincronización de Windows XP con un servidor de hora LAN, si alguien está interesado.

¡Eso es! Todo el proceso no es difícil, pero puede ser confuso para alguien que no ha tratado mucho con la red NTP antes. ¡Espero que esto ayude! Avíseme si tiene algún problema para configurar su servidor.

Miguel

Enlaces

Los siguientes enlaces me parecen útiles ... ¡tú también puedes!

https://help.ubuntu.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http: //lists.ntp.isc. org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm


Gracias por el enlace. En realidad, ¡no cambié mi configuración! Simplemente funcionó después de un tiempo.
Khaled

en su servidor ntp puede ejecutarlo ntpdate -s a_stratum_1_server_addresspara forzarlo a sincronizarse inmediatamente. luego en su otra máquina (cliente), ejecutar 'ntpdate -q your_local_ntp_server` debería responder con algo similar aserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds

Una respuesta de solo enlace puede quedar desactualizada. Incluya la información importante en la respuesta misma.
Zeta

5

Hay muchos enlaces sobre esto y me parece que complican el procedimiento. En mi caso, tengo una máquina que actúa como un servidor proxy y un firewall, y todos los demás se conectan a Internet a través de él. No quería abrir puertos en el firewall. Por lo tanto, el servidor proxy debe ser el tiempo (NTP) del servidor y las otras máquinas ( clientes ) consiguen el tiempo de él.

Debe instalar ntp en todas las máquinas, y también debe instalar ntpq en todas ellas.

Primero, vea si ntp está funcionando. De forma predeterminada, ntpd (el demonio ntp) se ejecutará tan pronto como se instale, y los valores predeterminados deberían funcionar. Sin embargo, ntp no funciona al instante, así que espera un momento. Entonces, el comando:

ntpq -c lpeer

debería darte un resultado similar a este:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

o:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

Si es así, está conectado y su servidor de hora está obteniendo la hora. Si no, use

ps -e | grep "ntp" 

para asegurarse de que ntp se esté ejecutando e intente nuevamente. También intente reiniciar ntp:

sudo /etc/init.d/ntp restart

Puede tomar algún "tiempo" (¡perdón!) antes de que se establezca la conexión. El demonio no sondea los servidores con mucha frecuencia. La columna "cuándo" en la salida anterior muestra el tiempo en segundos desde que se sondeó el servidor.

Ahora, debe hacer que el servidor horario envíe la hora a sus otras máquinas.

Edite el archivo /etc/ntp.confen el servidor. Tienes que agregar una línea para tu red. En mi caso, tengo una red 10.0.0.0. En el archivo ntp.conf, agregué la línea:

broadcast 10.255.255.255

Debe agregar una línea de transmisión para cada segmento de su red. Si su red es simple como la mía, una línea como la anterior es todo lo que necesita. Ahora, reinicie ntp usando el comando anterior, y verifique nuevamente usando ntpq, y debería ver:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

Voila, está transmitiendo.

Ahora, debe hacer que cada máquina cliente obtenga el tiempo de su servidor de transmisión. En cada uno, edite el archivo:

/etc/ntp.conf

y verá algunas líneas que especifican los servidores.

agregar una línea

server 10.10.10.1

o cualquiera que sea la dirección de su servidor. Luego reinicie ntp en la máquina cliente usando el comando anterior. Alternativamente, puede obtener la ID del proceso y simplemente matarlo y ejecutarlo nuevamente. Lo que sea.

Luego, después de suficiente tiempo, verifique con ntpq:

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

y puede ver que el cliente está usando el servidor horario.

Esto lleva algo de tiempo.


Puede ejecutar ntpdate -s a_stratum_1_server_addresssu servidor ntp para forzarlo a sondear y sincronizar inmediatamente.
Keith Reynolds

¿Este tipo de transmisión es compatible con todos los conmutadores? Por ejemplo, la mayoría de los conmutadores / enrutadores bloquean la transmisión UDP.
Tanasis

1

La respuesta aceptada (en julio de 2018) no funcionó para mí. Este otro método funcionó bien en Ubuntu 16.04 LTS en julio de 2018:

Instale NTP si no está instalado:

sudo apt-get update
sudo apt-get install ntp

Edite el archivo de configuración para permitir que el servicio NTP reciba solicitudes:

sudo nano /etc/ntp.conf --syntax=sh

Descomenta esta línea:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
# broadcast 192.168.111.255

a:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 192.168.111.255

Reinicie el servicio NTP :

sudo /etc/init.d/ntp restart

Ahora su servidor NTP debe estar funcionando y permitir que otras computadoras se sincronicen con la suya. Cualquiera de las pruebas anteriores, como la ntpdate -u YourComputerdebería funcionar bien.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.