19.12. NTP

Contribuído por Tom Hukins.

19.12.1. Visão Geral

Ao longo do tempo, o relógio de um computador tende a variar. Enquanto o tempo passa, o relógio do computador se torna menos preciso. O NTP (Network Time Protocol) é uma forma de assegurar que o seu relógio está correto.

Muitos serviços Internet dependem, ou muito se beneficiam, da precisão do relógio do computador estar correto. Por exemplo, um servidor Web pode receber solicitações para enviar um arquivo se ele foi modificado desde uma certa hora. Serviços como o cron(8) executam comandos em uma hora específica. Se o relógio está errado, estes comandos podem não ser executados no momento esperado.

O FreeBSD é disponibilizado com o servidor ntpd(8) que pode ser usado para consultar outros servidores NTP para ajustar o relógio em sua máquina ou fornecer serviços de hora para outros.

19.12.2. Escolhendo os Servidores NTP Adequados

Para sincronizar seu relógio, você vai precisar encontrar um ou mais servidores NTP para usar. Seu administrador de rede ou Provedor de Serviços Internet podem ter configurado um servidor NTP para este propósito--verifique sua documentação para confirmar se este é o caso. Existe uma lista de servidores NTP publicamente acessíveis os quais podem ser usados para encontrar um servidor NTP próximo a você. Certifique-se de estar ciente da política de qualquer servidor escolhido e, se necessário, solicite permissão para uso.

Escolher alguns servidores NTP não conectados é uma boa idéia no caso de algum dos servidores que você estiver usando se tornar inalcançável ou seu relógio não for confiável. ntpd(8) usa as respostas recebidas de outros servidores de forma inteligente--ele vai favorecer os servidores mais confiáveis em detrimento dos menos confiáveis.

19.12.3. Configurando Sua Máquina

19.12.3.1. Configuração Básica

Se você somente deseja sincronizar seu relógio quando a máquina for inicializada, você pode usar ntpdate(8). Isto pode ser adequado para algumas máquinas desktop as quais são freqüentemente reinicializadas e necessitam somente de sincronizações esparsas, mas a maioria das máquinas deveria executar ntpd(8).

Usando ntpdate(8) na inicialização também é uma boa idéia para máquinas que rodam ntpd(8). O programa ntpd(8) altera o relógio gradualmente, ao passo que o ntpdate(8) ajusta o relógio, qualquer que seja a diferença entre a hora atual do relógio e a hora correta.

Para ativar o ntpdate(8) durante a inicialização, adicione ntpdate_enable="YES" ao /etc/rc.conf. Você também vai precisar especificar todos os servidores com os quais deseja sincronizar e quaisquer parâmetros a serem passados ao ntpdate(8) em ntpdate_flags.

19.12.3.2. Configuração Geral

O NTP é configurado pelo arquivo /etc/ntp.conf no formato descrito em ntp.conf(5). Aqui está um exemplo simples:

server ntplocal.exemplo.com prefer
server timeserver.example.org
server ntp2a.example.net

driftfile /var/db/ntp.drift

A opção server especifica quais servidores devem ser usados, com um servidor por linha. Se um servidor é especificado com o argumento prefer, como em ntplocal.exemplo.com, este servidor é preferido sobre os demais servidores. Uma resposta de um servidor preferido será descartada se ela diferir muito das respostas dos demais servidores, caso contrário será usada desconsiderando as outras respostas. O argumento prefer normalmente é usado para servidores NTP que são reconhecidamente de alta precisão, como os que possuem hardware especial para monitoramento da hora.

A opção driftfile especifica qual arquivo é usado para armazenar a compensação de freqüência do relógio do sistema. O programa ntpd(8) usa isto para compensar automaticamente as variações naturais do relógio, permitindo que seja mantida uma configuração correta mesmo que seja cortada a conexão de todas as fontes externas de hora durante um período de tempo.

A opção driftfile especifica qual arquivo é usado para armazenar informações sobre as respostas recebidas anteriormente dos servidores NTP que você estiver usando. Este arquivo contém informações internas para o NTP. Ele não deve ser alterado por nenhum outro processo.

19.12.3.3. Controlando acesso ao Seu Servidor

Por padrão, seu servidor NTP será acessível a todos os sistemas na Internet. A opção restrict em /etc/ntp.conf permite que você controle quais máquinas podem acessar seu servidor.

Se você quer negar acesso a todas as máquinas ao seu servidor NTP, adicione a seguinte linha ao /etc/ntp.conf:

restrict default ignore

Se você quer permitir que somente máquinas em sua rede sincronizem seus relógios com seu servidor, mas assegurar que não lhes seja permitido configurar o servidor ou usada como pares (peers) de sincronismo, adicione

restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap

onde 192.168.1.0 é um endereço IP em sua rede e 255.255.255.0 é a máscara de subrede de sua rede.

/etc/ntp.conf pode conter múltiplas opções restrict. Para mais detalhes, veja a subseção Access Control Support de ntp.conf(5).

19.12.4. Executando o Servidor NTP

Para assegurar que o servidor NTP é iniciado durante a inicialização, adicione a linha xntpd_enable="YES". Se você deseja passar parâmetros adicionais ao ntpd(8), edite o parâmetro xntpd_flags no /etc/rc.conf.

Para iniciar o servidor sem reinicializar a máquina, rode ntpd certificando de especificar quaisquer parâmetros adicionais de xntpd_flags em /etc/rc.conf. Por exemplo:

#
      ntpd -p /var/run/ntpd.pid

Nota: No FreeBSD 5.X, várias opções foram renomeadas no /etc/rc.conf. Assim, você vai ter que trocar cada ocorrência de xntpd por ntpd nas opções acima.

19.12.5. Usando o ntpd com uma Conexão Internet Temporária

O programa ntpd(8) não precisa de uma conexão permanente à Internet para funcionar corretamente. Entretanto, se você tem uma conexão temporária que está configurada para discar por demanda, é uma boa idéia evitar que o tráfego NTP de disparar uma conexão discada ou de manter a conexão ativa. Se você estiver usando o usuário PPP, você pode usar diretrizes filter em /etc/ppp/ppp.conf. Por exemplo:

 set filter dial 0 deny udp src eq 123
 # Prevent NTP traffic from initiating dial out
 set filter dial 1 permit 0 0
 set filter alive 0 deny udp src eq 123
 # Prevent incoming NTP traffic from keeping the connection open
 set filter alive 1 deny udp dst eq 123
 # Prevent outgoing NTP traffic from keeping the connection open
 set filter alive 2 permit 0/0 0/0

Para maiores detalhes, veja a seção FILTRAGEM DE PACOTES em ppp(8) e os exemplos em /usr/share/examples/ppp/.

Nota: Alguns provedores de acesso Internet bloqueiam portas de números baixos impedindo o NTP de funcionar, uma vez que as respostas nunca alcançam sua máquina.

19.12.6. Mais Informações

Documentação para o servidor NTP podem ser encontradas em /usr/share/doc/ntp/ em formato HTML.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.