GNU/Linux
 
 
NTP Client
(Network Time Protocol Client)

O NTP (Network Time Protocal) é um protocolo para a sincronização de hora.



Instalação do cliente NTP
# apt-get update ; apt-get install ntp ntp-doc (ao instalar o "ntp" o equipamento já começa a sincronizar a hora com os servidores da Internet. Contudo, esse não é a intenção desse , pois imaginem que existam 2 mil máquinas saindo para a Internet tentando sincronizar a hora. A intenção desse artigo é apontar para um servidor NTP da própria rede interna. O pacote "ntp-doc" é uma documentação HTML instalada em "/usr/share/doc/ntp-doc/html/" muito útil para detalhar as opções do "ntpd" que o manual não cobre. Por exemplo, para ver em modo texto a documentação relacionada as opções de acesso digite "w3m /usr/share/doc/ntp-doc/html/accopt.html". Já a página geral digite "w3m /usr/share/doc/ntp-doc/html/index.html")

Arquivo de configuração
# vi /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift (especifica o arquivo usado para registrar a compensação da frequência do oscilador da hora local)
#statsdir /var/log/ntpstats/ (se descomentar, faz com que as estatisticas sejam registradas/logged. As quatro opções abaixo estão relacionadas com essa)
statistics loopstats peerstats clockstats (define os arquivos que serão criados. Nesse caso serão: loopstats peerstats clockstats)
filegen loopstats file loopstats type day enable (define o conteúdo do arquivo)
filegen peerstats file peerstats type day enable (idem)
filegen clockstats file clockstats type day enable (idem)
server ntp.your-provider.example (essa linha é comentada por padrão e deve ser usada para apontar um servidor de referência do seu domínio, ou seja, que está na rede interna. Então, descomente essa linha e insira o IP do servidor NTP da sua rede interna)
#server 0.debian.pool.ntp.org iburst dynamic (especifica um servidor, geralmente da Internet, que o "ntpd" deve sincronizar. Essa linha deve ser comentada, pois a intenção é sincronizar com um servidor da rede interna)
#server 1.debian.pool.ntp.org iburst dynamic (idem)
#server 2.debian.pool.ntp.org iburst dynamic (idem)
#server 3.debian.pool.ntp.org iburst dynamic (idem)
restrict -4 default kod notrap nomodify nopeer noquery ignore (a opção "restrict" está relacionada a algumas restrições ou permissões que podem ser usadas tanto para os servidores de referência quanto para os clientes. O "-4" diz que esta restrição é válida somente para o IPv4. O "default" significa 0.0.0.0, ou seja, todas as redes e para visualizar isso use "ntpdc -nc reslist". . A "kod" (KissOfDeath) é usada quando ocorre uma violação de acesso, sendo que tais pacotes são limitados não mais que um por segundo e se uma segunda tentativa de violação ocorrer, o pacote e descartado. O "notrap" nega o serviço de trap/captura de mensagens de controle que é usado por programas de logging de eventos remotos. O "nomodify" nega as requisições "ntpq" e "ntpdc" de modificarem o estado do servidor, no entando as requisições que retornam somente informações são permitidas. O "nopeer" nega pacotes como os broadcast, symmetric-active e manycast quando tal configuração não existe. O "noquery" nega as consultas "ntpq" e "ntpdc", no entando, os serviço de hora não é afetado)
Obs: a flag "ignore" nega todos os tipos de pacotes, incluindo as perguntas ntpq e ntpdc. A flag "noserve" nega todos os tipos de pacotes, exceto as perguntas ntpq e ntpdc. A flag "interface" ficarei devendo o significado. Por fim, a flag "ntpport" significa que somente os pacotes que tiverem como origem a porta 123 UDP serão aceitos.
restrict -6 default kod notrap nomodify nopeer noquery ignore (idem, só que para o IPv6)
restrict ntp.your-provider.example (permite ao servidor NTP acesso completo a esse equipamento caso seja acessado pela interface IPv4)
restrict 127.0.0.1 (permite aos usuários locais acesso completo ao servidor NTP caso seja acessado pela interface IPv4)
restrict ::1 (permite aos usuários locais acesso completo ao servidor NTP caso seja acessado pela interface local IPv6)
#restrict 192.168.123.0 mask 255.255.255.0 notrust (permite aos clientes dessa rede acesso completo ao servidor NTP, mas somente estiver criptograficamente autênticados)
#broadcast 192.168.123.255 (esta opção faz com que o "ntpd" envie periodicamente mensagens para os clientes. Usualmente se utiliza o endereço de broadcast da rede ou o de multicast)
#disable auth (se desejar ouvir as mensagens de broadcast da rede para sincronizar a hora, descomente essa linha e a linha a seguir)
#broadcastclient (ver comentário acima)
#interface listen 10.0.0.1 (faz com que o serviço NTP seja levantado somente em certas interfaces de rede)


Arquivo de configuração anterior sem os comentários (veja que é necessário modificar a configuração original)
driftfile /var/lib/ntp/ntp.drift
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server ntp.your-provider.example
#server 0.debian.pool.ntp.org iburst dynamic
#server 1.debian.pool.ntp.org iburst dynamic
#server 2.debian.pool.ntp.org iburst dynamic
#server 3.debian.pool.ntp.org iburst dynamic
restrict -4 default kod notrap nomodify nopeer noquery ignore ("-4" somente para IPv4. A opção "ignore" é importante quando o serviço NTPD é usado para ser cliente. Ele faz com que o NTPD negue tudo. Contudo, se esse servidor é NTP Client, então, ele está sincronizando com um NTP Server. Assim, vai precisar de uma linha assim "restrict ntp.server.example nomodify notrap nopeer noquery". Se não colocar essa linha o Stratum ficará com 16)
restrict -6 default kod notrap nomodify nopeer noquery ignore (idem, para IPv6)
restrict ntp.server.example (linha necessária, quando se é NTP Client, conforme nota anterior)
restrict 127.0.0.1
restrict ::1
#restrict 192.168.123.0 mask 255.255.255.0 notrust
#broadcast 192.168.123.255
#disable auth
#broadcastclient
#interface listen 10.0.0.1




-------------------------------------------------------------

ARQUIVO DE CONFIGURAÇÃO (O QUE REALMENTE PRECISA SE MODIFICAR)
restrict default kod notrap nomodify nopeer noquery ignore (para IPv4 e IPv6. A opção "ignore" é importante quando o serviço NTPD é usado para ser cliente. Ele faz com que o NTPD negue tudo, inclusive as requisições NTP de outras máquinas. Contudo, se esse servidor é NTP Client, então, ele está sincronizando com um NTP Server. Assim, vai precisar de uma linha assim "restrict ntp.server.example nomodify notrap nopeer noquery". Se não colocar essa linha o Stractum ficará com 16)
restrict ntp.server.example nomodify notrap nopeer noquery (linha necessária, quando se é NTP Client, conforme nota anterior. Essa linha faz com que os pacotes vindos do "ntp.server.example" sejam aceitos por esse NTP Client)
server ntp.server.example (especifica o NTP Server, ou seja, o servidor que essa máquina irá sincronizar a hora)

-------------------------------------------------------------


Restartando o serviço
/etc/init.d/ntp restart (nesse caso foram modificadas várias opções do arquivo de configuração, assim é necessário digitar esse comando)


Comandos interessantes
# ntpq -p (mostra a lista dos servidores referência e também um resumo do seu estado. Apesar desse comando, nada impede olhar a situação também nos logs, com o comando "tail -f /var/log/syslog | grep -i ntpd")
Um campo muito importante na figura acima é o "st" que significa "stratum". O número definido no "st" diz qual o nível de confiabilidade do servidor de referência. O número pode variar de 1 à 16, sendo que o 1 ou 2 é o ideal (muito confiável) e o 16 que não houve sincronização ainda. Esse confiança é conseguida através de diversas trocas de pacotes e verificações dos dados (horas) oferecidos (se esses dados estão de acordo com certas medição impostas pelo "ntpd"). Antes disso, "ntpd" não vai fornecer a hora a seus próprios clientes enquanto a confiança não estiver estabelecida, ou seja, se o stratum não estive entre 1 e 2 e também outros fatores como offset etc não estiverem nos conformes. É comum usar o comando "ntpdate" é aparecer a mensagem de erro "no server suitable for synchronization found", das duas uma ou o endereço usado não é de um servidor NTP ou tal servidor ainda está sincronizando (em fase de confiabilidade) com os servidores de referência.
Um outro campo muito importante é "remote", ele informa quais são os servidores de referência. Eles contém sinais como o *, +, -, = etc. O * significa que é o servidor escolhido como o servidor de referência principal e só a partir do momento que aparecer esse * é que os clientes podem sincronizar a hora com o "ntpd". A escolha do servidor de referência principal pode demorar alguns minutos.

# ntpdc -nc reslist (mostra as permissões de acesso dadas aos clientes no arquivo de configuração. O "-n" serve para não consultar o DNS)




Referências Bibliográgicas
http://softwarelivre.org/andre-ferraro/blog/linux-instalando-configurando-e-sincronizando-o-relogio-de-servidores-e-clientes-com-ntp-no-debian-ubuntu-e-windows./
 
 




ETI - Especialista em Tecnologia
da Informação