Como configuro um servidor NTP local?

11

Eu instalei o servidor NTP no Ubuntu Server 10.04 usando:

sudo apt-get install ntp

O daemon NTP parece estar funcionando e escutando na porta 123.

No entanto, não consegui obter tempo de outra máquina:

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

Existe alguma configuração necessária para fazer?

    
por Khaled 23.11.2010 / 17:50

2 respostas

9

Aqui está um bom tutorial dos fóruns do Ubuntu: link

Copiar-massas flagrantes:

COMO: Configurar um servidor NTP

Este tutorial descreve como configurar sua máquina como um servidor NTP (Network Time Protocol) local e / ou como usar o daemon NTP para manter regularmente um horário preciso do sistema.

O que é o NTP?

O Network Time Protocol (NTP) é um protocolo projetado para sincronizar com precisão os relógios de ponto locais com servidores de horário em rede. A rede NTP de servidores de tempo é configurada como uma forma hierárquica, de tal forma que qualquer usuário pode entrar no sistema como um servidor em algum nível (veja a página da Wikipedia para mais detalhes).

A hierarquia de NTP é separada em diferentes níveis, chamados estratos de clock. O nível mais preciso, Stratum 0, é reservado para relógios atômicos, etc. O próximo nível, Stratum 1, é geralmente usado por máquinas conectadas localmente aos relógios Stratum 0. Stratum 2 ... 15 são máquinas NTP que estão ligadas, por sua vez, a relógios de nível inferior e uns aos outros.

Este guia descreve como sincronizar com precisão com as máquinas Stratum 1 e 2 e manter o mais preciso possível do relógio do sistema ao longo do dia. As seções também estão incluídas sobre como permitir que sua máquina opere como um servidor Stratum 2/3 para outras máquinas em sua rede local.

Eu tenho que criar um servidor NTP?

Não ... absolutamente não! Se você estiver satisfeito com os relógios da sua rede que tenham alguma diferença desconhecida em relação ao horário padrão (e entre eles), não será necessário configurar um servidor NTP. Eu configurei uma no meu laptop para sincronizar várias máquinas em uma rede local em & lt; 1 ms para um experimento de bioengenharia. Existem várias outras vantagens, além disso, que são descritas abaixo.

Motivação:

Regularmente, caixas de Ubuntu não modificadas usam ntpdate ( /usr/sbin/ntpdate ) para sincronizar o relógio periodicamente com algum servidor de horário externo. Essa abordagem sincroniza o relógio com uma resolução de curso (geralmente uma vez por dia).

Os relógios do computador são imperfeitos e se desviam do servidor de horário (correto) durante o dia. Além disso, as taxas de desvio nos relógios de diferentes computadores diferem, de modo que até o final do dia podem existir diferenças significativas entre diferentes máquinas locais, o que pode interferir em certas operações (por exemplo, ter uma queixa de makefile ao mover o código fonte entre máquinas diferentes?).

É possível executar o daemon NTP localmente em uma máquina em sua rede. Isso tem várias vantagens: primeiro, o daemon NTP gradualmente "aprende" a taxa de desvio de sua máquina local e pode corrigi-la ao longo do dia. A sincronização com servidores de horário de nível superior ocorre várias vezes ao dia, e muitos servidores de horário diferentes podem ser usados simultaneamente para tornar a sincronização mais precisa. Desta forma, o daemon NTP atua como um cliente de tempo preciso, mantendo o relógio do sistema o mais próximo possível do tempo padrão.

Além de manter um relógio de sistema preciso, o daemon NTP permite que uma máquina em sua rede (se desejar) opere como um servidor de horário NTP. Isso permitirá que outras máquinas na rede local sincronizem com o servidor de horário da LAN de maneira rápida e precisa, pois a latência da rede é minimizada. Desta forma, as diferenças nos relógios entre máquinas na sua rede são mantidas o mínimo possível. Mac e até mesmo as caixas do Windows também podem sincronizar com um servidor NTP, caso você configure uma.

Existem outras motivações menos pessoais para configurar uma máquina como um servidor NTP. Primeiro, isso pode diminuir a pressão em servidores NTP de nível mais alto, já que outras máquinas em sua LAN podem sincronizar com um servidor de horário estabelecido localmente. Além disso, o ntpdate foi preterido em favor do uso do sinalizador -q para o ntpd (que imita sua funcionalidade). Assim, mesmo que você não queira rodar o ntpd constantemente em segundo plano, o ntpdate será eventualmente substituído pelo ntpd, então você pode querer se familiarizar com ele agora

Como manter um relógio do sistema preciso com o ntpd

  1. Instale o daemon NTP

Primeiro, instale o daemon NTP (ntpd):

sudo aptitude install ntpd

Como mencionado anteriormente, o ntpd pode atuar tanto como um cliente (sincronizando o horário do sistema) quanto como um servidor (fornecendo um tempo preciso para outras máquinas).

Opcionalmente, você também pode querer remover o programa de sincronização de tempo anterior (descontinuado), ntpdate. Talvez seja mais sensato fazer isso depois que você tiver o ntpd funcionando

sudo aptitude remove ntpdate
  1. Configure o daemon corretamente

O arquivo de configuração para o ntpd está localizado em /etc/ntp.conf . O arquivo padrão do Ubuntu provavelmente requer algumas modificações para um ótimo desempenho.

A primeira seção que você pode querer modificar é a lista de servidores com os quais sincronizar. A seção padrão provavelmente tem a seguinte aparência:

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

Para obter o tempo mais preciso possível, é preferível se comunicar com vários servidores NTP diferentes e mantê-los o mais próximo possível de sua localização física. Existem várias listas de servidores diferentes on-line, provavelmente o melhor está localizado aqui. Há algum debate sobre o número adequado de servidores a serem usados. Um é melhor que dois, e três ou mais provavelmente é uma boa ideia, desde que você não exagere demais. Um exemplo de alguns servidores de tempo que usei segue:

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

Quando alguns bons servidores forem encontrados, adicione-os à lista, colocando 'iburst' após o mais promissor. Por exemplo:

server nist1-dc.WiTime.net iburst

Isso fará com que o ntpd seja sincronizado muito rapidamente com este servidor após a inicialização. Caso contrário, o ntpd tenderá lentamente a chegar ao acordo com a lista de servidores (como é sua natureza), e pode levar de 15 a 20 minutos para sincronizar bem o suficiente para funcionar como um servidor de horário para o resto da sua rede.

Além disso, adicione algumas linhas extras à parte inferior da lista de servidores para fornecer sua hora local atual como padrão caso você perca temporariamente a conectividade com a Internet:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Isso evitará qualquer inconveniência se você estiver executando o ntpd em um laptop ou outra máquina com períodos intermitentes de desconexão da Internet.

Em suma, a lista de servidores deve ser semelhante à seguinte (isso é meu, seus servidores provavelmente serão 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. Verifique se a configuração funciona

Agora que você tem uma lista de servidores apropriada em seu arquivo /etc/ntp.conf , é hora de executar o daemon e ver se você sincroniza corretamente! Verifique se você tem uma conexão ativa com a Internet e execute:

sudo /etc/init.d/ntp restart

Em seguida, monitore seu log do sistema para ver se você sincroniza com um servidor de horário:

tail -f /var/log/syslog

Em cerca de 10 a 15 segundos (ou até 15 a 20 minutos se você esqueceu de colocar 'iburst' depois do seu servidor favorito), você deve ver algo como o seguinte no log do sistema:

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

Se esta mensagem nunca chegar, você ainda não sincronizou corretamente com a rede do servidor NTP. Verifique a lista de pares de NTP com os quais você está se comunicando, usando o seguinte:

ntpq -c lpeer

Se os campos 'delay', 'offset' e 'jitter' forem diferentes de zero e você não tiver sincronizado, isso provavelmente significa que você só precisa esperar um pouco. Verifique novamente se você inseriu o argumento 'iburst' na sua lista de servidores! Meus colegas, por referência, são parecidos com os seguintes:

     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. Compartilhe! (opcional)

Quando o ntpd estiver em execução e estiver sincronizado com os servidores de horário selecionados, você poderá configurá-lo para funcionar como um servidor de horário para outras máquinas. Para fazer isso, adicione uma seção como a seguinte a /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)

Depois de configurar um servidor NTP usando as etapas de 1 a 4, você poderá sincronizar as outras máquinas em sua rede com o servidor de várias maneiras. Eu esquematizo alguns deles abaixo:

ntpd:

Se você tiver o ntpd instalado em outra máquina, poderá usar seu primeiro servidor na lista de servidores do seu arquivo ntp.conf ou sincronizar uma vez com a opção -q, da seguinte maneira:

ntpd -q [IP address of your server]

ntpdate:

Se você ainda tiver o ntpdate instalado em outra máquina, poderá usá-lo para sincronizar com o servidor da seguinte forma:

ntpdate [IP address of your server]

Nota: se você estiver executando o ntpd em uma máquina e, por algum motivo, ainda quiser usar o ntpdate para definir a hora, use a opção -u.

Windows:

As máquinas Windows usam uma versão simplificada do NTP chamada Simple Network Time Protocol (SNTP) e podem sincronizar com os servidores NTP. Para sincronizar com o seu novo servidor, clique duas vezes na hora e vá para a guia "Horário da Internet". Coloque o endereço IP do seu servidor no campo "Servidor". Anexei uma captura de tela do Windows XP sincronizando com um servidor de horário da LAN, caso alguém esteja interessado.

É isso! Todo o processo não é difícil, mas pode ser confuso para alguém que não tenha lidado muito com a rede NTP antes. Eu espero que isso ajude! Deixe-me saber se você tem algum problema ao configurar seu servidor.

Mike

Links

Eu achei os links a seguir úteis ... você também pode!

link link link link link

    
por RobotHumans 23.11.2010 / 17:54
5

Existem muitos links sobre isso e parece-me que eles complicam o procedimento. No meu caso, eu tenho uma máquina que atua como um servidor proxy e um firewall, e todos os meus outros se conectam à internet através dela. Eu não queria abrir portas no firewall. Portanto, o servidor proxy deve ser o tempo (ntp) servidor e as outras máquinas ( clientes ) obtêm o tempo a partir dele.

Você deve instalar o ntp em todas as máquinas, e você deve instalar o ntpq em todas elas também.

Primeiro, veja se o ntp está funcionando. Por padrão, o ntpd (o daemon ntp) será executado assim que for instalado, e os padrões deverão funcionar. No entanto, o ntp não funciona instantaneamente, então espere um pouco. Então, o comando:

ntpq -c lpeer

deve fornecer uma saída semelhante a esta:

     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

ou:

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

Se sim, você está conectado e seu servidor de horário está recebendo o tempo. Se não, use

ps -e | grep "ntp" 

para ter certeza de que o ntp está sendo executado e tente novamente. Também tente reiniciar o ntp:

sudo /etc/init.d/ntp restart

pode levar algum "tempo" (desculpe!) antes que a conexão seja estabelecida. O daemon não pesquisa os servidores com muita frequência. A coluna "when" na saída acima mostra o tempo em segundos desde que o servidor foi pesquisado.

Agora, você precisa fazer com que o servidor de horário envie a hora para suas outras máquinas.

Edite o arquivo /etc/ntp.conf no servidor. Você tem que adicionar uma linha para sua rede. No meu caso, eu tenho uma rede 10.0.0.0. No arquivo ntp.conf, adicionei a linha:

broadcast 10.255.255.255

Você deve adicionar uma linha de transmissão para cada segmento da sua rede. Se sua rede é simples como a minha, uma linha como a acima é tudo que você precisa. Agora, reinicie o ntp usando o comando acima, e verifique novamente usando o ntpq, e você 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á transmitindo.

Agora, você deve fazer com que cada máquina cliente receba o tempo do seu servidor de transmissão. Em cada um, edite o arquivo:

/etc/ntp.conf

e você verá algumas linhas especificando servidores.

adicione uma linha

server 10.10.10.1

ou qualquer que seja o endereço do seu servidor. Em seguida, reinicie o ntp na máquina cliente usando o comando acima. Como alternativa, você pode obter o ID do processo e apenas matá-lo e executá-lo novamente. Seja o que for.

Depois de um tempo suficiente, verifique com 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

e você pode ver que o cliente está usando o servidor de horário.

Isso leva algum tempo.

    
por Wastrel 01.03.2014 / 16:11

Tags