Configuración de NTP (Network Time Protocol) en Linux

De Wiki do Ciclo ASIR do IES de Rodeira

Índice

INTRODUCCIÓN

O protocolo de tempo de rede (Network Time Protocol) utilízase pra sincronizar a hora e a data dun ordenador con outro ou cunha fonte que faga de referencia de tempo. Pode utilizarse por exemplo, pra ter todos os ordenadores dunha rede local con exactamente a mesma hora e data. Este protocolo proporciona unha velocidade de resposta sobre 1ms nunha LAN e de unhas poucas decenas de ms nunha WAN, proporcionando a data e a hora en formato UTC (Universal Coordinated Time) ou Tempo Universal Coordinado recibido dunha fonte externa de tempo (como pode ser un reloxo atómico). As configuracións habituais NTP utilizan varios servidores redundantes e diversas rutas de rede pra conseguir unha gran fiabilidade e resistencia ós fallos. Algunhas configuracións poden incluir autenticación criptográfica pra prever ataques.

É posible consultar en Internet unha Lista de Servidores de Tempo públicos que podes utilizar pra sincroniza-lo teu servidor ou equipo. O paquete ntp suministra tamén as utilidades ntptrace e ntpdc que poden axudar a localizar un servidor de tempo a partir do teu equipo.

Normalmente todas as distribucións de Linux incorporan un paquete que da a posibilidade de preparar un equipo tanto pra facer de cliente NTP como pra facer de servidor. A descripción aquí feita se corresponde cunha distribución RedHat 7.3 con ntp-4.1.1-1.

CONFIGURACIÓN DE CLIENTES E DE SERVIDORES NTP

A configuración tanto dos clientes como dos servidores pode variar moito según o que se desexe facer e pode ser moi complexa. Sen embargo, a maior parte da xente necesita so unhas poucas características de NTP, de maneira que divideremos este artigo en dúas partes:

Configuración Rápida

Ainda que é posible que algunhas configuracións non precisen dun ficheiro de configuración, a maioría o necesitan. Este ficheiro de configuración é (RedHat 7.3) o /etc/ntp.conf, e en principio únicamente necesita que lle indiquemos o servidor de tempo que imos a utilizar, por exemplo: server 193.49.205.19 ou server servidor.de.tempo Cando o demo ntpd se sincroniza mide e corrixe os posibles erros de frecuencia e escribe o valor actual nun ficheiro. Si o demonio se detén e se volve a arrancar, inicializa a frecuencia dende este ficheiro. Por esta razón tamén se engade ó ficheiro de configuración a seguinte liña:

  driftfile /etc/ntp/drift

Normalmente isto é todo o que hai que facer, a non ser que teñamos algún problema coa conectividade da rede ou coa configuración do sistema operativo. O problema máis común é que algún firewall nos impida a comunicación co servidor. NTP utiliza o porto UDP 123, coma orixe e coma destiño, e a única interacción co sistema operativo é pra cambia-lo reloxo do sistema. A mellor maneira de probar que NTP está a traballar é coa utilidade ntpq, sendo tamén útil en determiñados casos ntpdc e a execución do demonio ntpd coa opción -d pra facer un seguimento das operacións do demo. No RedHat 7.3 no momento de instala-lo paquete se xenera xa o ficheiro /etc/ntpd.conf, e o directorio /etc/ntp. Debes modificar o ntpd.conf pra incluir a definición dos servidores que vas utilizar. Este ficheiro está moi ben comentado, de xeito que é fácil modificalo (busca a cadea mytrustedtimeserverip pra situarte no lugar en que debes definir o server que queiras utilizar). E importante acordarse de modificar o arranque pra que se inicie o servicio ntp, en RedHat 7.3 hai un script ntpd en /etc/init.d

Configuración Detallada

Hai unha xerarquía de servidores NTP, con cada servidor adoptando un stratum' que indica o lonxe que se atopa da fonte externa de UTC. Os servidores do Stratum-1 teñen acceso directo a unha fonte externa de tempo (como pode ser un reloxo atómico), os servidores Stratum-2 obteñen o tempo dos servidores Stratum-1, os Stratum-3 dos Stratum-2'' e así sucesivamente. O número de estratos está limitado a 15. Cada cliente debe elexir un servidor ó que sincronizarse. Os servidores NTP poden asociarse entre eles de varios modos:

  • symmetric-active mode indicalle ó servidor remoto que se desexa obte-lo seu UTC e que se está disposto a suministrarlle o propio UTC.
  • client-mode quere decir que únicamente queremos obte-lo UTC do servidor remoto.

Cando se inicia ntpd, se lee a configuración de /etc/ntpd.conf. Aquí terás que declara-los Servers que queiras consultar pra face-la sincronización. Normalmente, se poñen polo menos 3 servidores, sendo mellores os servidores máis cercanos. Non se considera unha boa política por parte dos postos de traballo solicitar sincronización de servidores Stratum-1, xa que normalmente están moi cargados. A configuración realízase indicando os servidores e o driftfile do xeito indicado na Configuración Rápida. Si o que desexamos e tanto recibir sincronización dun servidor como proporcionarlla, os servers se declaran coa palabra peer en lugar de server. Si temos unha fonte local de UTC, é unha boa práctica declarar ós servidores de fora do noso dominio como peer e os de dentro como server pra proporcionarlle unha maior redundancia e tolerancia ós fallos o ntp sobre Internet ó mesmo tempo que minimizamos a probabilidade de erro no noso dominio. O demonio ntpd ten unha utilidade de monitorización que permite acceder a diversa información mediante o comando ntpdc, pra desactivalo poderemos incluír no ntp.conf disable monitor. Tamén é posible restrinxi-lo acceso a determiñadas IP/Máscaras coa palabra clave restrict, por exemplo:

restrict default ignore fará que por defecto non se permite o acceso xeral restrict default notrust nomodify fará que por defecto todas as IP non son confiables e non se lles permitirá facer modificacións. restrict 128.100.0.0 mask 255.255.0.0 nomodify fará que esa rede sexa fiable para o tempo, pero non se lle permite modificacións. restrict 127.0.0.1 indicará que esa dirección (a local) non está restrinxida. restrict 193.49.205.19 mask 255.255.255.255 nomodify notrap noquery permitirá sincronizarnos con ese equipo, pero él non poderá preguntar nin modifica-lo servicio no noso sistema.

Unha vez restrinxido o acceso pode(n) declararse o servidor(es) con server servidor.

Outras entradas comúns no ntp.conf son a definición dun server 'fantasma' que é o propio equipo no estato 10:

  server 127.127.1.0
  fudge 127.127.1.0 stratum 10

O driftfile ...

  driftfile /etc/ntp/drift
  broadcastdelay 0.008

e si se utiliza ou non autenticación

  authenticate yes
Boxinfo info.png
E posible que nos quedemos sen conexión a fontes de tempo externas, nese caso, pode configurarse o servidor NTP da rede para que utilice o seu relox interno mediante tos orphan <stratum>. Si non se alcanza ningún servidor de polo menos <stratum> se utilizará o relox interno. Normalmente se utiliza 2 como <stratum>

Unha vez feito esto (configurado o ntp.conf) pode iniciarse o servicio ntp facendo /etc/init.d/ntp start e verificar que funciona coas utilidades /usr/sbin/ntpdc (escribe logo help na liña de comandos) e /usr/sbin/ntpq (help na liña de comandos). Por último podes activar o servicio facendo os enlaces necesarios en rcX.d ou mediante un configurador de servicios como o que ten o Webmin.