Ter o tempo correto em seu módulo é crítico para todos os tipos de atividades, incluindo sincronização de log e validação de certificados de segurança. A partir da versão 15.1, o VOS é enviado com uma porta do daemon Network Time Protocol (ntpd) e é altamente recomendável que você o execute.
Normalmente, para executar ntpd você precisa fornecer uma lista de servidores de tempo, hospedeiros na rede que também executam ntpd e fornecerão o tempo para qualquer hospedeiro que o solicite. Há um grande número de servidores de tempo disponíveis na Internet que você pode utilizar. Dê uma olhada em http://www.pool.ntp.org/en/ que organiza os servidores por região.
Sugiro listar um ou três (ou mais) servidores, nunca dois. ntpd tenta descobrir qual é o melhor servidor a ser utilizado, comparando as respostas dos servidores. Se apenas dois servidores forem listados, é possível que o ntpd não consiga fazer uma determinação e acabe não usando nenhum deles.
Mas o que você deve fazer se as políticas de sua empresa o impedem de acessar os servidores de tempo na Internet e você não tem um servidor de tempo designado pela empresa? Nesse caso, você poderá usar um controlador local de domínio Microsoft Windows (DC) ou um controlador de domínio de backup (BDC). A maioria dos DCs e BDCs fornecerá serviços de controle de tempo.
Então, como administrador de VOS, como você pode encontrar o CD ou BDC local? A maneira mais simples é perguntar, mas assumindo que essa não é uma opção você pode executar o monitor de pacotes e procurar por si mesmo. Tanto as estações de trabalho quanto os controladores de domínio são transmitidos periodicamente na porta 138 do UDP.
O comando
>system>stcp>command_library>packet_monitor -interface #INTERFACE -numeric
-time_stamp -verbose -pkt_hdr -hex_header -hex_dump -length 1500 -filter -port 138
|
Figura 1 - comando packet_monitor |
exibirá estas transmissões (certifique-se de substituir INTERFACE pelo nome de sua interface IP). Infelizmente, para encontrar os servidores de tempo que você precisa para olhar os dados hexadecimais no pacote e como provavelmente haverá muitos pacotes para passar, você precisará despejar os pacotes em um arquivo. Minha pm.cm, macro de comando (você pode encontrar a macro aqui) criará automaticamente um arquivo de saída e executará o rastreamento como um processo iniciado. O arquivo de saída terá o nome pm.(data).(hora).out. O comando seria
pm #INTERFACE -no_arp -no_icmp -port 138 |
Figura 2 - macro de comando pm |
Entretanto, você inicia o rastreamento, deixe-o funcionar por 15 a 20 minutos e você deve receber uma transmissão de cada CD e BDC em sua rede. Em seguida, procure por linhas com a seqüência 'c0 3' e 'c0 2' nelas; ou seja, letras minúsculas C, zero, quatro espaços e um três ou um dois. O número corresponde à mordidela superior do byte em offset c0. Esse byte pode ser decodificado como
ABCD EFGH ^^^^ ^^^^ |||| ||||.... o anfitrião é uma estação de trabalho |||| |||--- o host é um servidor |||| ||---- host NÃO é um servidor SQL |||| |_----- host NÃO é um controlador de domínio ||||------- host é um controlador de domínio de backup |||-------- host é um servidor de tempo ||--------- host NÃO é um host da Apple |---------- host NÃO é um host da Novell |
Figura 3 - Decodificação de bytes tipo servidor |
Como você pode ver, a busca por esses três ou dois primeiros pode não obter todos os servidores de tempo, mas a menos que você execute um site exclusivo da Novel ou da Apple, ele deve obter pelo menos um CD ou BDC.
d pm.11-02-06.17:25:06.out -match 'c0 2'
ready 17:47:13
d pm.11-02-06.17:25:06.out -match 'c0 3'
%phx_vos#m15_mas>SysAdmin>Noah_Davids>pm.11-02-06.17:25:06.out 11-02-06 17:47
c0 33 10 82 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
c0 33 10 82 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
c0 33 10 82 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
c0 33 10 82 0 f 1 55 aa 0 3 <<U*
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
ready 17:47:29
|
Figura 4 - linhas de monitoração de pacotes combinando servidor de tempo e controlador de domínio de backup |
Encontrar apenas as linhas "c0" não é suficiente. Você também precisa encontrar o endereço do host que enviou o pacote. O comando grep que pode ser encontrado no >system>gnu_library>bin directory pode combinar em várias linhas
grep -e 'c0 3' -e 'c0 2' -e UDP pm.11-02-06.17:25:06.out
. . . .
UDP from 192.168.33.180.138 to 192.168.33.255.138 Cksum 7ca3, 220 data bytes.
UDP from 192.168.33.249.138 to 192.168.33.255.138 Cksum c89a, 209 data bytes.
c0 33 10 82 0 f 1 55 aa 0 3 <<U*
. . . .
UDP from 192.168.33.50.138 to 192.168.33.255.138 Cksum 9526, 193 data bytes.
UDP from 192.168.33.248.138 to 192.168.33.255.138 Cksum d05f, 209 data bytes.
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
. . . .
UDP from 192.168.33.202.138 to 192.168.33.255.138 Cksum cf35, 219 data bytes.
UDP from 192.168.33.253.138 to 192.168.33.255.138 Cksum 9505, 209 data bytes.
c0 33 10 82 0 f 1 55 aa 0 3 <<U*
. . . .
UDP from 192.168.33.131.138 to 192.168.33.255.138 Cksum aa35, 222 data bytes.
UDP from 192.168.33.252.138 to 192.168.33.255.138 Cksum 7343, 209 data bytes.
c0 33 10 84 0 f 1 55 aa 0 3 <<U*
. . . . .
|
Figura 5 - linhas de monitoramento de pacotes mostrando os servidores de tempo descobertos |
O endereço dos servidores de tempo aparece nas linhas imediatamente acima da linha "c0". Na figura acima identificamos 192.168.33.249, 192.168.33.248, 192.168.33.253, e 192.168.33.252.
Agora que identificamos hospedeiros que se anunciam como servidores de tempo, como podemos ter certeza de que eles funcionarão? O comando ntpdate pode ser usado para consultar manualmente cada servidor de tempo. Use o argumento "-q" para consultar apenas o servidor de tempo, neste ponto não queremos que ntpdate também defina o tempo do módulo.
ntpdate -q 192.168.33.248
Procurando por host 192.168.33.248 e serviço ntp
hospedeiro encontrado : dc48.noahslab.stratus.com
servidor 192.168.33.248, estrato 4, offset -0.117418, atraso 0.04202
6 Fev 17:53:10 ntpdate[1427079382]: ajustar o servidor de tempo 192.168.33.248 offset -0
+.117418 seg
pronto 17:53:10
ntpdate -q 192.168.33.249
Procurando por host 192.168.33.249 e serviço ntp
host found : dc49.noahslab.stratus.com
servidor 192.168.33.249, estrato 4, offset -0.038709, atraso 0.04355
6 Fev 17:53:25 ntpdate[1427079382]: ajustar o servidor de tempo 192.168.33.249 offset -0
+.038709 seg
pronto 17:53:25
ntpdate -q 192.168.33.252
Procurando por host 192.168.33.252 e serviço ntp
host found : dc52.noahslab.stratus.com
servidor 192.168.33.252, estrato 3, offset 0.015733, atraso 0.04216
6 Fev 17:53:38 ntpdate[1427079382]: ajustar o servidor de tempo 192.168.33.252 offset 0.
+015733 seg
pronto 17:53:38
|
Figura 6 - usando ntpdate para testar servidores de tempo descoberto - servidores de trabalho |
Digamos que um dos servidores tem uma política de firewall que o impede de dar o tempo mesmo que o advirta, ntpdate mostrará o seguinte.
ntpdate -q 192.168.33.254
Procurando por host 192.168.33.254 e serviço ntp
host found : dc54.noahslab.stratus.com
servidor 192.168.33.254, estrato 0, offset 0,000000, atraso 0,00000
6 Fev 17:54:00 ntpdate[1427079382]: nenhum servidor adequado para sincronização foun
+d
pronto 17:54:00
|
Figura 7 - usando ntpdate para testar servidores de tempo descoberto - servidor que não funciona |
Agora que você sabe a que horas os servidores podem ser usados você pode escrever o arquivo >system>ntp>ntp.conf da seguinte forma. Tudo em preto vem do arquivo de amostra_ntp.conf.17.0, novos caracteres estão em verde. Observe o caráter de comentário que foi adicionado em frente à linha "server foo.bar.somewhere.com". As declarações restritivas melhoram a posição de segurança do sistema, impedindo que outros hosts façam consultas fora do tempo contra o daemon ntp.
# as diretrizes do servidor indicam de onde obter tempo.
# Podem ser valores DNS ou IP, um por diretriz.
# server foo.bar.somewhere.com
servidor 192.168.33.248 iburst iburst
servidor 192.168.33.249 iburst
servidor 192.168.33.252 iburst iburst
# Casa para o logile. Escolha um bom caminho relativo - VOS absoluto
# os nomes dos caminhos não podem ser analisados corretamente.
logfile >system>ntp>ntp.logfile
# Casa para o arquivo de derivação.
driftfile >system>ntp>ntp.drift
# Estas declarações impedirão consultas fora do tempo de qualquer anfitrião, exceto o anfitrião local
restringir o default noquery
restringir 127,0,0,0,1
|
Figura 8 - atualizado >system>ntp>ntp.conf file |
Inicie o comando ntpd (há uma amostra_start_ntpd.17.0 no diretório >system>ntp) e após alguns minutos você deverá ver algo como o seguinte. O "*" na frente do 192.168.33.252 indica que este é o servidor que o ntpd escolheu para tomar seu tempo. O "+" na frente do 192.168.33.248 indica outra boa escolha caso não haja resposta do 192.168.33.252. Tão longa quanto um "*" na coluna um, você sabe que o tempo do módulo será sincronizado com um servidor de tempo. Lembre-se, entretanto, que pode levar algum tempo para que os tempos converjam quando a diferença inicial entre o módulo e o servidor de tempo for grande.
ntpq -n
ntpq> par
refid st t remoto quando a sondagem atinge o atraso compensa o jitter
==============================================================================
+192.168.33.248 192.168.33.252 4 u - 1024 377 1.312 -1549.3 639.489
192.168.33.249 192.168.33.252 4 u 626 1024 377 132.423 15.202 27.797
*192.168.33.252 192.168.33.51 3 u 802 1024 377 0.964 -27.486 2.993
|
Figura 9 - usando ntpq para confirmar a sincronização do tempo |
Finalmente, ntpd atua tanto como cliente quanto como servidor, de modo que uma vez executado em um módulo VOS, pode atuar como servidor de tempo para outros módulos ou qualquer outra coisa em sua rede.