11.5. Configurando o chrony

O arquivo de configuração padrão para chronyd é /etc/chrony.conf. A opção -f pode ser usada para especificar um caminho alternativo para o arquivo de configuração. Consulte a página de manual chrony.conf(5) para mais opções. Para uma lista completa das diretrizes que podem ser usadas, veja O arquivo de configuração chronyd.

Abaixo está uma seleção de opções de configuração do chronyd:

Comentários
Os comentários devem ser precedidos de #, %, ; ou !
permitir

Opcionalmente, especificar um host, sub-rede ou rede a partir da qual seja possível conectar NTP a uma máquina atuando como servidor NTP. O padrão é não permitir conexões.

Exemplos:

permitir 192.0.2.0/24

Use este comando para conceder acesso a uma rede específica.

allow 2001:0db8:85a3::8a2e:0370:7334

Use este comando para conceder acesso a um IPv6.

A porta UDP número 123 precisa estar aberta no firewall a fim de permitir o acesso do cliente:

#  firewall-cmd --zone=public --add-port=123/udp

Se você quiser abrir a porta 123 permanentemente, use a opção --permanent:

#  firewall-cmd --permanent --zone=public --add-port=123/udp
cmdallow
Isto é semelhante à diretiva allow (ver seção allow), exceto que ela permite o controle de acesso (em vez de NTP acesso do cliente) a uma determinada sub-rede ou host. (Por "controle de acesso", entende-se que chronyc pode ser executado nesses hosts e conectado com sucesso a chronyd neste computador) A sintaxe é idêntica. Há também uma diretiva cmddeny all com comportamento semelhante ao da diretiva cmdallow all.
dumpdir
Caminho até o diretório para salvar o histórico de medições através das reinicializações do chronyd (assumindo que nenhuma mudança seja feita no comportamento do relógio do sistema enquanto ele não estiver funcionando). Se esta capacidade for usada (através do comando dumponexit no arquivo de configuração, ou do comando dump em chronyc), o comando dumpdir deve ser usado para definir o diretório onde os históricos de medição são salvos.
dumponexit
Se este comando estiver presente, indica que chronyd deve salvar o histórico de medição para cada uma de suas fontes de tempo registradas sempre que o programa sair. (Veja o comando dumpdir acima).
hwtimestamp
A diretiva hwtimestamp permite o registro de tempo do hardware para uma sincronização extremamente precisa. Para mais detalhes, consulte a página do manual chrony.conf(5).
local

A palavra-chave local é usada para permitir que chronyd apareça sincronizado em tempo real do ponto de vista dos clientes que o pesquisam, mesmo que não tenha uma fonte de sincronização atual. Esta opção é normalmente usada no computador "master" em uma rede isolada, onde vários computadores são necessários para sincronizar entre si, e o "master" é mantido em linha com o tempo real por entrada manual.

Um exemplo do comando é:

estrato local 10

Um grande valor de 10 indica que o relógio está tão distante de um relógio de referência que seu tempo não é confiável. Se o computador alguma vez tiver acesso a outro computador que esteja finalmente sincronizado a um relógio de referência, ele estará quase certamente em um estrato inferior a 10. Portanto, a escolha de um valor alto como 10 para o comando local evita que o próprio tempo da máquina seja confundido com o tempo real, caso ele venha a vazar para clientes que tenham visibilidade de servidores reais.

log

O comando log indica que certas informações devem ser registradas. Ele aceita as seguintes opções:

medidas
Esta opção registra as medidas brutas NTP e informações relacionadas em um arquivo chamado measurements.log.
estatísticas
Esta opção registra informações sobre o processamento da regressão em um arquivo chamado statistics.log.
rastreamento
Esta opção registra mudanças na estimativa da taxa de ganho ou perda do sistema, e quaisquer alterações feitas, em um arquivo chamado tracking.log.
rtc
Esta opção registra informações sobre o relógio em tempo real do sistema.
relógios
Esta opção registra as medidas do relógio de referência bruto e filtrado em um arquivo chamado refclocks.log.
tempcomp

Esta opção registra as medições de temperatura e as compensações de taxa do sistema em um arquivo chamado tempcomp.log.

Os arquivos de log são escritos no diretório especificado pelo comando logdir.

Um exemplo do comando é:

acompanhamento estatístico das medidas de registro
logdir

Esta diretiva permite especificar o diretório onde os arquivos de registro são escritos.

Um exemplo do uso desta diretriz é:

logdir /var/log/chrony
makestep

Normalmente, chronyd fará com que o sistema corrija gradualmente qualquer compensação de tempo, diminuindo ou acelerando o relógio conforme necessário. Em certas situações, o relógio do sistema pode estar tão à deriva que este processo de giro demoraria muito tempo para corrigir o relógio do sistema. Esta diretriz força o chronyd a pisar no relógio do sistema se o ajuste for maior que um valor limite, mas somente se não houver mais atualizações do relógio desde que chronyd foi iniciado do que um limite especificado (um valor negativo pode ser usado para desabilitar o limite). Isto é particularmente útil quando se usa um relógio de referência, porque a diretiva initstepslew só funciona com fontes NTP.

Um exemplo do uso desta diretriz é:

makestep 1000 10

Isto faria com que o relógio do sistema passasse se o ajuste fosse maior que 1000 segundos, mas somente nas primeiras dez atualizações do relógio.

maxchange

Esta diretiva estabelece a compensação máxima permitida corrigida em uma atualização do relógio. A verificação é realizada somente após o número especificado de atualizações para permitir um grande ajuste inicial do relógio do sistema. Quando ocorrer um deslocamento maior que o máximo especificado, ele será ignorado para o número especificado de vezes e então chronyd desistirá e sairá (um valor negativo pode ser usado para nunca sair). Em ambos os casos, uma mensagem é enviada ao syslog.

Um exemplo do uso desta diretriz é:

maxchange 1000 1 2

Após a primeira atualização do relógio, chronyd irá verificar o offset em cada atualização do relógio, ignorará dois ajustes maiores que 1000 segundos e sairá em outro.

maxupdateskew

Uma das tarefas do chronyd é saber quão rápido ou lento é o relógio do computador em relação a suas fontes de referência. Além disso, ele computa uma estimativa dos limites de erro em torno do valor estimado.

Se o intervalo de erro for muito grande, indica que as medidas ainda não foram estabelecidas, e que a taxa estimada de ganho ou perda não é muito confiável.

O parâmetro maxupdateskew é o limiar para determinar se uma estimativa não é confiável demais para ser usada. Por padrão, o limite é de 1000 ppm.

O formato da sintaxe é:

maxupdateskew skew-in-ppm

Os valores típicos para skew-in-ppm podem ser 100 para uma conexão discada para servidores através de uma linha telefônica, e 5 ou 10 para um computador em uma LAN.

Deve-se notar que este não é o único meio de proteção contra o uso de estimativas não confiáveis. Em todos os momentos, chronyd mantém um registro tanto da taxa de ganho ou perda estimada, quanto do erro vinculado à estimativa. Quando uma nova estimativa é gerada após outra medição de uma das fontes, um algoritmo de combinação ponderada é usado para atualizar a estimativa principal. Portanto, se chronyd tiver uma estimativa mestre altamente confiável e uma nova estimativa for gerada com grandes limites de erro, a estimativa mestre existente dominará na nova estimativa mestre.

minsources

A diretiva minsources estabelece o número mínimo de fontes que precisam ser consideradas como selecionáveis no algoritmo de seleção de fontes antes que o relógio local seja atualizado.

O formato da sintaxe é:

minsources number-of-sources

Por padrão, number-of-sources é 1. A definição de fontes mínimas para um número maior pode ser usada para melhorar a confiabilidade, porque várias fontes precisarão corresponder umas com as outras.

noclientlog
Esta diretiva, que não aceita argumentos, especifica que os acessos dos clientes não devem ser registrados. Normalmente eles são registrados, permitindo que estatísticas sejam relatadas usando o comando de clientes em chronyc e permitindo aos clientes usar o modo intercalado com a opção xleave na diretiva server.
resselecionador

Quando chronyd selecionar a fonte de sincronização das fontes disponíveis, preferirá aquela com distância mínima de sincronização. Entretanto, para evitar a re-seleção freqüente quando há fontes com distância semelhante, uma distância fixa é adicionada à distância para fontes que atualmente não são selecionadas. Isto pode ser definido com a opção reselectdist. Por padrão, a distância é de 100 microssegundos.

O formato da sintaxe é:

resselecionador dist-in-seconds
peso estrato

A diretiva stratumweight define a distância que deve ser adicionada por estrato à distância de sincronização quando chronyd seleciona a fonte de sincronização a partir das fontes disponíveis.

O formato da sintaxe é:

peso estrato dist-in-seconds

Por padrão, dist-in-seconds é de 1 milissegundo. Isto significa que as fontes com estrato mais baixo são geralmente preferidas às fontes com estrato mais alto, mesmo quando sua distância é significativamente pior. A definição de stratumweight a 0 faz com que chronyd ignore o estrato ao selecionar a fonte.

rtcfile

A diretiva rtcfile define o nome do arquivo no qual chronyd pode salvar parâmetros associados ao rastreamento da precisão do relógio em tempo real (RTC) do sistema.

O formato da sintaxe é:

rtcfile /var/lib/chrony/rtc

chronyd salva informações neste arquivo quando ele sai e quando o comando writertc é emitido em chronyc. A informação guardada é o erro do RTC em alguma época, aquela época (em segundos desde 1 de janeiro de 1970), e a taxa na qual o RTC ganha ou perde tempo. Nem todos os relógios em tempo real são suportados, pois seu código é específico do sistema. Observe que se esta diretriz for usada, então o relógio em tempo real não deve ser ajustado manualmente, pois isso interferiria com chronyA necessidade de medir a taxa de variação do relógio em tempo real se o relógio foi ajustado em intervalos aleatórios.

rtcsync
A diretiva rtcsync está presente no arquivo /etc/chrony.conf por padrão. Isto informará ao kernel que o relógio do sistema é mantido sincronizado e o kernel atualizará o relógio em tempo real a cada 11 minutos.

11.5.1. Configuração de chrony para segurança

chronyc pode acessar chronyd de duas maneiras:

  • Protocolo Internet, IPv4 ou IPv6.
  • Soquete de domínio Unix, que é acessível localmente pelo usuário root ou chrony.

Por padrão, chronyc se conecta com o soquete de domínio Unix. O caminho padrão é /var/run/chrony/chronyd.sock. Se esta conexão falhar, o que pode acontecer, por exemplo, quando chronyc está funcionando sob um usuário não-rootal, chronyc tenta se conectar ao 127.0.0.1 e depois ::1.

Somente os seguintes comandos de monitoramento, que não afetam o comportamento do chronyd, são permitidos a partir da rede:

  • atividade
  • lista manual
  • rtcdata
  • suavização
  • fontes
  • sourcestats
  • rastreamento
  • waitsync

O conjunto de hosts de onde chronyd aceita estes comandos pode ser configurado com a diretiva cmdallow no arquivo de configuração de chronyd, ou com o comando cmdallow em chronyc. Por padrão, os comandos são aceitos somente do localhost (127.0.0.1 ou ::1).

Todos os outros comandos são permitidos somente através do soquete de domínio Unix. Quando enviado através da rede, chronyd responde com um erro Not authorised, mesmo que seja do localhost.

Acesso remoto ao chronyd com chronyc

  1. Permitir o acesso tanto de endereços IPv4 como IPv6, adicionando o seguinte ao arquivo /etc/chrony.conf:

    bindcmdaddress 0.0.0.0.0

    ou

    bindcmdaddress ::
  2. Permitir comandos a partir do endereço IP remoto, rede ou sub-rede, utilizando a diretiva cmdallow.

    Adicione o seguinte conteúdo ao arquivo /etc/chrony.conf:

    cmdallow 192.168.1.0/24
  3. Abra a porta 323 no firewall para se conectar a partir de um sistema remoto.

    #  firewall-cmd --zone=public --add-port=323/udp

    Se você quiser abrir a porta 323 permanentemente, use o site --permanent.

    #  firewall-cmd --permanent --zone=public --add-port=323/udp

Note que a diretiva allow é para acesso NTP enquanto que a diretiva cmdallow é para permitir o recebimento de comandos remotos. É possível fazer estas mudanças temporariamente usando chronyc funcionando localmente. Edite o arquivo de configuração para fazer alterações permanentes.