O NTP (Network Time Protocol) é utilizado para sincronizar a hora do sistema com um horário de referência fornecido por servidores especiais. Este artigo abordará como configurar o NTP em diversos sistemas operacionais e dispositivos, começando com um guia completo sobre como configurar um Servidor NTP no Linux.
Vamos demonstrar a configuração de sincronização usando o Ubuntu, mas este guia também se aplica ao Debian e à maioria dos sistemas baseados em Linux. Dividimos as instruções em três partes: a primeira cobre a instalação do servidor NTP, a segunda explica como sincronizar os clientes NTP, e a terceira trata das configurações avançadas de sincronização.
Para seguir este guia, você precisará de:
Um servidor em nuvem com Ubuntu instalado.
Um usuário root ou um usuário com privilégios sudo.
O editor nano ou outro editor instalado.
Esses passos irão guiá-lo pela instalação e preparação do servidor NTP para a configuração posterior.
Atualize o índice do repositório para garantir que você possa baixar as versões mais recentes do software. Use o comando:sudo apt-get update
Instale o servidor NTP:sudo apt-get install ntp
Confirme a instalação escolhendo "Y" se solicitado (Y/N). Aguarde até que o software seja baixado e instalado.
Verifique a instalação:sntp --version
A saída deve exibir o número da versão e o tempo de instalação.
Conecte-se ao servidor de pool mais próximo.
O servidor deve receber a hora precisa por padrão, mas é melhor conectar-se ao servidor de pool mais próximo para maior confiabilidade. Para isso, edite o arquivo ntp.conf localizado em /etc/ntp.conf. Abra-o com o nano (você precisará de privilégios sudo) digitando:sudo nano /etc/ntp.conf
No arquivo aberto, você verá quatro linhas, que destacamos em laranja para referência. Essas são as pools padrão, que substituiremos por pools locais (por exemplo, para os EUA, podemos usar servidores NTP desta página). Após substituir as linhas, salve e feche o ntp.conf pressionando Ctrl+O e Ctrl+X.
Reinicie o servidor:sudo service ntp restart
Verifique o status do servidor:sudo service ntp status
A saída deve indicar "Active (running)" em uma das primeiras linhas (Active) e o tempo de início do servidor.
Configure o firewall.
Para permitir o acesso de clientes ao servidor, abra a porta UDP 123 usando o UFW com o seguinte comando:sudo ufw allow from any to any port 123 proto udp
A instalação está concluída e o servidor está em funcionamento. Agora, você pode prosseguir com a configuração adicional.
Os passos a seguir permitirão que os sistemas clientes se sincronizem com nosso servidor NTP, que servirá como sua fonte principal de hora.
Verifique a Conexão
Para verificar a configuração da rede para o NTP, insira o seguinte comando no terminal:sudo apt-get install ntpdate
Especifique o Endereço IP e o Nome do Servidor
Para configurar o IP e o nome do servidor, edite o arquivo hosts localizado em /etc/hosts:sudo nano /etc/hosts
Adicione os dados relevantes na terceira linha de cima (o endereço abaixo é apenas um exemplo; substitua-o pelo IP real do seu servidor NTP):192.168.154.142 ntp-server
Pressione Ctrl+X para sair e salve as alterações pressionando Y. Como alternativa, se você tiver um servidor DNS, pode realizar esta etapa lá.
Verifique a Sincronização do Cliente com o Servidor
Para verificar se a sincronização está ativa entre o servidor e o cliente, digite:sudo ntpdate ntp-server
A saída mostrará o desvio de tempo. Uma diferença de alguns milissegundos é normal, então você pode ignorar valores pequenos.
Desative o serviço timesyncd
Este serviço sincroniza a hora local do sistema, mas não precisamos dele, já que nossos clientes irão se sincronizar com o servidor NTP. Desative-o com:sudo timedatectl set-ntp off
Instale o NTP no Sistema Cliente
Instale o NTP no cliente com este comando:sudo apt-get install ntp
Configure seu Servidor NTP como Referência Primária
Para garantir que os clientes sincronizem especificamente com seu servidor, abra o arquivo ntp.conf e adicione a seguinte linha:server NTP-server-host prefer iburst
O parâmetro prefer marca o servidor como preferido e iburst permite múltiplas solicitações ao servidor para maior precisão na sincronização. Salve as alterações pressionando Ctrl+X e confirmando com Y.
Reinicie o Servidor
Reinicie o servidor NTP com o comando simples:sudo service ntp restart
Verifique a Fila de Sincronização
Por fim, verifique o status da sincronização digitando:ntpq -ps
Este comando exibirá a lista de servidores na fila de sincronização, incluindo seu servidor NTP como fonte designada.
Agora que configuramos o servidor NTP e sincronizamos as máquinas clientes, voltaremos ao arquivo ntp.conf (localizado em /etc/ntp.conf), que contém configurações adicionais para garantir uma sincronização robusta com fontes externas.
Marque o servidor ou o pool de servidores mais confiáveis com a diretiva prefer que já usamos anteriormente. Por exemplo:
server 1.north-america.pool.ntp.org prefer
A diretiva server indica um servidor específico, enquanto pool pode ser usado para especificar um pool de servidores. Não se esqueça da linha server 127.127.1.0 no final da lista de pools, que usa a hora do sistema como padrão se a conexão for perdida.
Certifique-se de que as seguintes linhas estejam incluídas no ntp.conf:
restrict default kod notrap nomodify nopeer noquery
O comando default aplica essas configurações como padrões para todos os comandos restrict:
kod (Kiss-o’-Death) limita a taxa de solicitações.
notrap bloqueia a aceitação de comandos de controle.
nomodify restringe comandos que possam alterar o estado do servidor.
nopeer proíbe a sincronização com hosts externos.
noquery bloqueia solicitações de consulta.
Para IPv4, use -4 antes de default, e para IPv6, use -6.
Aqui está um exemplo de uso de alguns desses comandos. A linha a seguir permite a sincronização de nós em uma rede específica, restringindo os nós a não receberem comandos de controle ou comandos que alterem o estado:
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
As seguintes linhas são necessárias para que o servidor se comunique consigo mesmo:
restrict 127.0.0.1
restrict ::1
Por fim, lembre-se de reiniciar o servidor após fazer essas alterações.
Para verificar se o NTP está funcionando corretamente, use o comando ntpq -p. Com a configuração adequada, a saída deverá ser uma tabela com colunas semelhantes a esta: Na primeira coluna, você verá o endereço do servidor de sincronização, seguido pelo servidor pai, o nível de estrato (coluna st) e o tipo de coluna t. As próximas três colunas exibem detalhes sobre o último tempo de sincronização, o intervalo de sincronização e o status de confiabilidade (onde 377 indica oito tentativas de sincronização bem-sucedidas com esse servidor). As duas últimas colunas mostram a diferença de tempo entre o servidor sincronizado e o servidor de referência, bem como o desvio.
Preste atenção aos símbolos na primeira coluna, que aparecem antes do endereço IP:
Um símbolo "+" indica um servidor confiável para sincronização.
Um símbolo "-" indica o contrário, e
Um "*" indica o servidor atual escolhido para sincronização.
De vez em quando, um "x" pode aparecer, o que significa que o servidor está indisponível.
Para garantir que o servidor esteja distribuindo a hora correta, execute o comando ntpdate de outro sistema, especificando o endereço IP do servidor NTP que você deseja verificar. A saída deve ser semelhante a esta:
adjust time server (endereço IP aqui) offset 0.012319 sec
O número representa o desvio de tempo. Aqui, um desvio de cerca de 0,01 segundos (12 milissegundos) é perfeitamente aceitável.
Agora que concluímos a configuração do Linux, vamos ver como configurar o protocolo NTP no Windows.