Como configuro um servidor NTP local?


16

Instalei o servidor NTP no Ubuntu Server 10.04 usando:

sudo apt-get install ntp

O daemon NTP parece funcionar e ouvir 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?

Respostas:


19

Aqui está um bom tutorial dos fóruns do Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Cópia-massa flagrante:

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 uma hora precisa do sistema.

O que é NTP?

O NTP (Network Time Protocol) é um protocolo desenvolvido para sincronizar com precisão os relógios de hora local com os servidores de hora em rede. A rede NTP de servidores de horário é configurada de maneira hierárquica, de modo que qualquer usuário possa entrar no sistema como servidor em algum nível (consulte a página da Wikipedia para obter mais detalhes).

A hierarquia 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 em rede localmente conectadas aos relógios Stratum 0. O estrato 2 ... 15 são máquinas NTP conectadas, por sua vez, a relógios de nível inferior e entre si.

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

Eu tenho que criar um servidor NTP?

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

Motivação:

Normalmente, as caixas do 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 a resolução do curso (normalmente 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 computadores diferentes diferem, de modo que até o final do dia possam existir diferenças significativas entre as máquinas localmente conectadas em rede, o que pode interferir em determinadas operações (por exemplo, alguma reclamação de makefile ao mover o código-fonte entre máquinas diferentes?).

É possível executar o daemon NTP localmente em uma máquina na sua rede. Isso tem várias vantagens: primeiro, o daemon NTP "aprende" gradualmente a taxa de desvio da 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. Dessa maneira, o daemon NTP atua como um cliente de horário preciso, mantendo o relógio do sistema o mais próximo possível do horário padrão.

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

Existem outras motivações menos pessoais para configurar uma máquina como servidor NTP. Primeiro, isso pode diminuir a tensão nos servidores NTP de nível superior, pois outras máquinas na sua LAN podem sincronizar com um servidor de horário estabelecido localmente. Além disso, o ntpdate foi descontinuado em favor do uso do sinalizador -q para o ntpd (que imita sua funcionalidade). Portanto, mesmo que você não queira executar o ntpd constantemente em segundo plano, o ntpdate será substituído por ntpd, portanto, você pode se familiarizar com ele agora

Como manter um relógio de 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 como um cliente (sincronizando a hora do sistema) e como um servidor (fornecendo uma hora precisa para outras máquinas).

Opcionalmente, você também pode remover o programa de sincronização de hora anterior (obsoleto), ntpdate. Talvez seja mais sensato fazer isso depois que o ntpd estiver 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 Ubuntu padrão provavelmente requer algumas modificações para obter um desempenho ideal.

A primeira seção que você pode 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 da sua localização física. Existem várias listas de servidores diferentes online, provavelmente a melhor está localizada 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 horário que eu usei a seguir:

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

Depois de encontrar alguns bons servidores, adicione-os à lista, colocando 'iburst'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 concordar com a lista de servidores (como é sua natureza) e poderá levar de 15 a 20 minutos para sincronizar o suficiente para funcionar como um servidor de horário para o resto da sua rede.

Além disso, adicione algumas linhas extras na parte inferior da lista de servidores para fornecer a 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 maldade 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 (essa é minha, 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ê possui uma lista de servidores adequada no seu /etc/ntp.confarquivo, é hora de executar o daemon e verificar se você sincroniza corretamente! Verifique se você possui uma conexão ativa com a Internet e execute:

sudo /etc/init.d/ntp restart

Em seguida, monitore o log do sistema para verificar 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' após o servidor favorito), deverá 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 essa mensagem nunca chegar, você ainda não sincronizou corretamente com a rede do servidor NTP. Verifique a lista de pares 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, para referência, se parecem com o seguinte:

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

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

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

ntpd:

Se você tiver o ntpd instalado em outra máquina, poderá usar o 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 maneira:

ntpdate [IP address of your server]

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

Janelas:

As máquinas Windows usam uma versão simplificada do NTP chamada SNTP (Simple Network Time Protocol) 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 aí! Todo o processo não é difícil, mas pode ser confuso para alguém que não lidou muito com a rede NTP antes. Eu espero que isso ajude! Entre em contato se tiver algum problema para configurar seu servidor.

Mike

Ligações

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

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


Obrigado pelo link. Na verdade, não mudei minha configuração! Apenas funcionou depois de algum tempo.
Khaled

no servidor ntp, você pode executar ntpdate -s a_stratum_1_server_addresspara forçá-lo a sincronizar imediatamente. então, na sua outra máquina (cliente), a execução do 'ntpdate -q your_local_ntp_server` deve responder com algo semelhante ao #server your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds

Uma resposta apenas de link pode ficar desatualizada. Inclua as informações importantes na resposta em si.
Zeta

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 dele. Eu não queria abrir portas no firewall. Portanto, o servidor proxy deve ser o (NTP) Tempo de servidor e as outras máquinas ( clientes ) obter o tempo dele.

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

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

ntpq -c lpeer

deve fornecer uma saída parecida com 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

Nesse caso, você está conectado e seu servidor de horário está recebendo o horário. Caso contrário, use

ps -e | grep "ntp" 

para ter certeza de que o ntp está em execução e tente novamente. Tente também reiniciar o ntp:

sudo /etc/init.d/ntp restart

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

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

Edite o arquivo /etc/ntp.confno servidor. Você precisa 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, basta uma linha como a acima. 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 todas as máquinas clientes aproveitem 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, simplesmente matá-lo e executá-lo novamente. Tanto faz.

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.


Você pode executar ntpdate -s a_stratum_1_server_addressno seu servidor ntp para forçá-lo a pesquisar e sincronizar imediatamente.
Keith Reynolds

Esse tipo de transmissão é suportado por todos os comutadores? Por exemplo, a transmissão UDP está sendo bloqueada pela maioria dos switches / roteadores.
Tanasis

1

A resposta aceita (como em julho de 2018) não funcionou para mim. Este outro método funcionou bem no Ubuntu 16.04 LTS em julho de 2018:

Instale o NTP se não estiver instalado:

sudo apt-get update
sudo apt-get install ntp

Edite o arquivo de configuração para permitir que o serviço NTP receba solicitações:

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

Remova o comentário desta linha:

# 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

para:

# 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 o serviço NTP :

sudo /etc/init.d/ntp restart

Agora seu servidor NTP deve estar funcionando e permitir que outros computadores sincronizem com o seu. Qualquer um dos testes acima, como o, ntpdate -u YourComputerdeve funcionar bem.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.