Com o tempo, o relógio de um computador está propenso a se desviar. Isso é problemático, pois muitos serviços de rede exigem que os computadores em uma rede compartilhem o mesmo tempo exato. Tempo preciso também é necessário para garantir que os registros de data e hora dos arquivos permaneçam consistentes. O protocolo de horário da rede (NTP) é uma maneira de fornecer precisão de relógio em uma rede.
O FreeBSD inclui o ntpd(8) o qual pode ser configurado para consultar outros servidores NTP para sincronizar o relógio nessa máquina ou para fornecer serviços de horário para outros computadores na rede.
Esta seção descreve como configurar o ntpd no FreeBSD. Mais documentação pode ser encontrada em /usr/share/doc/ntp/
no formato HTML.
No FreeBSD, o ntpd nativo pode ser usado para sincronizar o relógio do sistema. O Ntpd é configurado usando variáveis no rc.conf(5) e no /etc/ntp.conf
, conforme detalhado nas seções a seguir.
O Ntpd se comunica com seus network peers usando pacotes UDP. Quaisquer firewalls entre sua máquina e seus NTP peers devem ser configurados para permitir a entrada e saída de pacotes UDP na porta 123.
O Ntpd faz a leitura do /etc/ntp.conf
para determinar quais servidores NTP que ele deve consultar. É recomendável escolher vários servidores NTP, caso um dos servidores se torne inacessível ou seu relógio torne-se não confiável. Como o ntpd recebe respostas, ele favorece servidores confiáveis em vez dos menos confiáveis. Os servidores consultados podem ser locais na rede, fornecidos por um ISP ou selecionados a partir de uma lista online de servidores NTP publicamente acessíveis. Ao escolher um servidor NTP público, selecione um servidor geograficamente próximo e revise sua política de uso. A palavra-chave pool
de configuração seleciona um ou mais servidores de um pool de servidores. Está disponível uma lista online de pools NTP publicamente acessíveis, organizada por área geográfica. Além disso, o FreeBSD fornece um pool patrocinado pelo projeto, 0.freebsd.pool.ntp.org
.
/etc/ntp.conf
Este é um exemplo simples de um arquivo ntp.conf
. Ele pode ser usado com segurança como está; ele contém as opções restrict
recomendadas para operação em uma conexão de rede pública.
# Disallow ntpq control/query access. Allow peers to be added only # based on pool and server statements in this file. restrict default limited kod nomodify notrap noquery nopeer restrict source limited kod nomodify notrap noquery # Allow unrestricted access from localhost for queries and control. restrict 127.0.0.1 restrict ::1 # Add a specific server. server ntplocal.example.com iburst # Add FreeBSD pool servers until 3-6 good servers are available. tos minclock 3 maxclock 6 pool 0.freebsd.pool.ntp.org iburst # Use a local leap-seconds file. leapfile "/var/db/ntpd.leap-seconds.list"
O formato deste arquivo é descrito em ntp.conf(5). As descrições abaixo fornecem uma visão geral rápida apenas das palavras-chave usadas no arquivo de exemplo acima.
Por padrão, um servidor NTP pode ser acessado de qualquer host da rede. A palavra-chave restrict
controla quais sistemas podem acessar o servidor. Múltiplas entradas restrict
são suportadas, cada uma refinando as restrições fornecidas nas instruções anteriores. Os valores mostrados no exemplo concedem ao sistema local o acesso completo à consulta e controle, enquanto permitem aos sistemas remotos apenas a capacidade de consultar o horário. Para obter mais detalhes, consulte a subseção Access Control Support
de ntp.conf(5).
A palavra-chave server
especifica um único servidor para consulta. O arquivo pode conter várias palavras-chave server, com um servidor listado em cada linha. A palavra-chave pool
especifica um pool de servidores. O Ntpd adicionará um ou mais servidores desse pool, conforme necessário, para atingir o número de peers especificado usando o valor tos minclock
. A palavra-chave iburst
direciona o ntpd para executar um burst de oito trocas rápidas de pacotes com um servidor quando o contato é estabelecido pela primeira vez, para ajudar a sincronizar rapidamente a hora do sistema.
A palavra-chave leapfile
especifica o local de um arquivo que contém informações sobre segundos bissextos. O arquivo é atualizado automaticamente pelo periodic(8). O local do arquivo especificado por esta palavra-chave deve corresponder ao local definido na variável ntp_db_leapfile
em /etc/rc.conf
.
Defina ntpd_enable=YES
para iniciar o ntpd no momento do boot do sistema. Depois que o ntpd_enable=YES
for adicionado ao /etc/rc.conf
, o ntpd poderá ser iniciado imediatamente sem reiniciar o sistema, digitando:
#
service ntpd start
Somente ntpd_enable
deve ser configurado para usar o ntpd. As variáveis rc.conf
listadas abaixo também podem ser definidas conforme necessário.
Defina ntpd_sync_on_start=YES
para permitir que o ntpd adiante o relógio, uma vez na inicialização. Normalmente, o ntpd registra uma mensagem de erro e se finaliza se o relógio estiver dessincronizado por mais de 1000 segundos. Essa opção é especialmente útil em sistemas sem um relógio em tempo real com bateria.
Defina ntpd_oomprotect=YES
para proteger o serviço ntpd de ser finalizado pelo sistema quando ele tentar se recuperar de uma condição de Falta de Nemória (OOM).
Defina ntpd_config=
para o local de um arquivo ntp.conf
alternativo.
Defina ntpd_flags=
para conter outras flags ntpd conforme necessário, mas evite usar as flags gerenciadas internamente pelo /etc/rc.d/ntpd
:
-p
(local do arquivo pid)
-c
(configure ntpd_config=
como alternativa)
O Ntpd no FreeBSD pode ser iniciado e executado como um usuário não privilegiado. Para isso, é necessário o módulo de política mac_ntpd(4). O script de inicialização /etc/rc.d/ntpd
examina primeiro a configuração do NTP. Se possível, ele carrega o módulo mac_ntpd
e inicia o ntpd como um usuário não vinculado ntpd
(user id 123). Para evitar problemas com o acesso a arquivos e diretórios, o script de inicialização não iniciará automaticamente o ntpd como ntpd
quando a configuração contiver quaisquer opções relacionadas a arquivos.
A presença de qualquer um dos itens a seguir em ntpd_flags
requer configuração manual, conforme descrito abaixo, para ser executada como o usuário ntpd
user:
-f or --driftfile
-i or --jaildir
-k or --keyfile
-l or --logfile
-s or --statsdir
A presença de qualquer uma das seguintes palavras-chave no ntp.conf
requer configuração manual, conforme descrito abaixo, para ser executado como usuário ntpd
:
crypto
driftfile
key
logdir
statsdir
Para configurar manualmente o ntpd para ser executado como usuário ntpd
, você deve:
Certifique-se de que o usuário ntpd
tenha acesso a todos os arquivos e diretórios especificados na configuração.
Se certifique para que o módulo mac_ntpd
seja carregado ou compilado no kernel. Consulte mac_ntpd(4) para obter detalhes.
Defina ntpd_user="ntpd"
no /etc/rc.conf
O ntpd não precisa de uma conexão permanente com a Internet para funcionar corretamente. No entanto, se uma conexão PPP estiver configurada para discar sob demanda, o tráfego de NTP deverá ser impedido de disparar uma discagem ou manter a conexão ativa. Isso pode ser configurado com as diretivas 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 mais detalhes, consulte a seção PACKET FILTERING
em ppp(8) e os exemplos em /usr/share/examples/ppp/
.
Alguns provedores de acesso à Internet bloqueiam portas de números baixos, impedindo o funcionamento do NTP, pois as respostas nunca chegam à máquina.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.