[FUG-BR] Comportamento estranho do ntp no FreeBSD-10.1-PRERELEASE
Luiz Otavio O Souza
lists.br em gmail.com
Terça Setembro 16 15:30:32 BRT 2014
2014-09-16 10:06 GMT-03:00 Eduardo Lemos de Sa:
> Oi Paulo
>
> 2014-09-15 20:13 GMT-03:00 Paulo Cavalcanti:
>
>> Em 15 de setembro de 2014 16:23, Eduardo Lemos de Sa
>> <eduardo.lemosdesa em gmail.com> escreveu:
>> [...]
>> >
>> > Eu resolvi fazer um teste:
>> > sudo /etc/rc.d/ntpd stop
>> > sudo date 1600 (atrasei deliberadmente o relógio em 4 minutos)
>> > sudo /etc/rc.d/ntpd onestart (depois eu fiz uma outra tentativa e
>> troquei o
>> > onestart por um restart)
>> >
>> > e o horário na máquina local não mudou (se adiantou em 4 minutos). Não
>> > satisfeito, fiz um reboot (é a minha máquina desktop) e nada (de melhor)
>> > aconteceu. No dmesg não aparece qualquer menção de que o horário foi
>> > modificado. Por favor, alguém tem alguma ideia de como descobrir o porquê
>> > do erro?
>> >
>>
>>
>> Procure também no /var/log/messages alguma coisa referente a ntp.
>>
>> Faça um dig 0.freebsd.pool.ntp.org e veja se está resolvendo.
>>
>> Se me lembro bem o ntp tem uma tolerância de 1000 segundos de atraso,
>> fora isso ele não sincroniza. Experimente atrasar o relógio em 600
>> segundos, por exemplo.
>>
> Obrigado pela atenção.
>
> Sim, o tempo máximo de ajuste é de 1000 segundos, mas eu atrasei o relógio
> em 4 minutos (240 s), o que deveria ser suficiente.
>
> Eu fiz um dig no 0.freebsd.pool.ntp.org. Parece que está tudo certo. Por
> favor, veja:
>
Ola Eduardo,
O limite de 1000s inicial do ntp pode ser desabilitado adicionando
'ntpd_sync_on_start="YES"' no seu /etc/rc.conf.
Com essa alteração o ntpd vai corrigir o horário mesmo quando o
relógio esta errado bem além desse limite de 1000s.
Geralmente quando o ntpd não acerta o horário é porque ele não esta
conseguindo sincronizar com os servidores (isso aconteceu recentemente
comigo pois meu provedor bloqueou todos pacotes na porta 123 por conta
de ataques DoS).
Utilize o ntptime para verificar o status do ntpd:
% ntptime
ntp_gettime() returns code 0 (OK)
time d7c2fef9.42d0e548 Tue, Sep 16 2014 15:24:57.261, (.261000372),
maximum error 996836 us, estimated error 25764 us, TAI offset 0
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset 3615.118 us, frequency 31.199 ppm, interval 1 s,
maximum error 996836 us, estimated error 25764 us,
status 0x6001 (PLL,NANO,MODE),
time constant 10, precision 0.001 us, tolerance 496 ppm,
Esse é o status de um servidor com o ntp sincronizado (verifique os
dois OKs no ntp_gettime() e ntp_adjtime()).
E abaixo segue o status de um servidor onde o ntp esta bloqueado:
# ntptime
ntp_gettime() returns code 5 (ERROR)
time d7c2cbe0.8b0c561c Tue, Sep 16 2014 11:46:56.543, (.543157550),
maximum error 943516 us, estimated error 16 us, TAI offset 0
ntp_adjtime() returns code 5 (ERROR)
modes 0x0 (),
offset 0.000 us, frequency 13.402 ppm, interval 1 s,
maximum error 943516 us, estimated error 16 us,
status 0x2040 (UNSYNC,NANO),
time constant 0, precision 0.001 us, tolerance 496 ppm,
Além dos erros o campo status também tem a flag 'UNSYNC'.
Rode um tcpdump na sua interface e veja se há respostas dos
servidores, aqui no caso do server bloqueado só há tx e nada de rx.
# tcpdump -nei XXX port 123
Att.,
Luiz
Mais detalhes sobre a lista de discussão freebsd