Isso foi o que acabei fazendo e o que eu suponho ser bom:
O host Hyper-V (servidor físico) está configurado para sincronizar com uma seleção de servidores de tempo e cada convidado do Hyper-V está configurado para sincronizar somente com o host. As alterações abaixo são diferenças do padrão.
Configuração do host
Primeiro pare o serviço de tempo com:
net stop w32time
Alterações no registro (base HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\
):
-
w32time\Config\AnnounceFlags
=10
-
w32time\Parameters\NtpServers
=0.dk.pool.ntp.org,0x1 1.dk.pool.ntp.org,0x1 2.dk.pool.ntp.org,0x1 3.dk.pool.ntp.org,0x1
-
w32time\TimeProviders\NtpClient\SpecialPollInterval
=900
(15 minutos) -
w32time\TimeProviders\NtpServer\Enabled
=1
Alguns usam AnnounceFlags = 5, mas a correlação com um controlador de domínio (que não é configurado nesse caso) faz com que o servidor ntp não se anuncie (observação; não é fato), portanto, AnnounceFlags é definido como 10 (mais informações sobre AnniversaryFlags)
0x1 nos ntpservers = use o intervalo de sondagem especial (em vez dos intervalos padrão de sondagem ntp). (mais em 0x1, 0x2, 0x4 e 0x8) . O uso de SpecialPollInterval não é obrigatório, mas parece ser recomendado (talvez principalmente para convidados e não tanto para hosts). Se você decidir não usar SpecialPollInterval, terá que limitar MinPollInterval e MaxPollInterval. Seus padrões são 10 (1024 segundos) e 15 (32768 segundos); Sugiro 6 (64 segundos) e 10 (1024 segundos)).
Verifique se o serviço de horário é iniciado quando o servidor tem conexão de rede:
sc triggerinfo w32time start/networkon stop/networkoff
O padrão é iniciar (e parar) o serviço de horário com o controlador de domínio (que não está presente nessa configuração). Esquecer este passo irá parar o seu servidor de tempo em cada arranque (pouco depois de ser iniciado automaticamente). Este problema foi difícil de acompanhar.
E inicie o serviço novamente:
net start w32time
Agora, o host pesquisará um dos servidores de horário ntp a cada 15 minutos e oferecerá um servidor ntp para outros clientes. Tenho o udp: 123 com firewall para garantir que apenas os convidados sejam permitidos.
O servidor pode levar até 15 minutos (SpecialPollInterval) até anunciar seus recursos como um servidor de horário confiável para o mundo (convidados). Isso significa que os convidados podem correr livremente por 15-20 minutos após o início do serviço.
Configuração de convidado
Os convidados se deslocam muito mais do que o host (e também são comparados entre si) e exigem um intervalo de pesquisa relativamente curto. Devido a isso, usar servidores ntp remotos não é o ideal, e como temos um servidor ntp confiável à mão (apenas configurado), vamos usar isso (e somente isso). Os convidados podem acessar o host usando uma rede virtual.
Verifique se o serviço de Integração de Horário do Hyper-V está instalado e em execução. Com essa configuração, ela será usada quando o servidor virtual for inicializado, mas também ao sair do salvamento. Não será usado como fonte de tempo.
Pare o serviço de horário com:
net stop w32time
Faça as alterações necessárias no registro (base HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\
):
-
w32time\Config\AnnounceFlags
=10
-
w32time\Parameters\NtpServers
=192.168.0.100,0x9
-
w32time\TimeProviders\NtpClient\SpecialPollInterval
=300
(5 minutos) -
w32time\TimeProviders\NtpServer\Enabled
=0
-
w32time\TimeProviders\VMICTimeProvider\Enabled
=0
Verifique se o serviço de horário é iniciado quando o servidor tem conexão de rede:
sc triggerinfo w32time start/networkon stop/networkoff
E inicie o serviço novamente:
net start w32time
Conclusão
Com esta configuração, o tempo deve estar em bom controle tanto no host quanto nos convidados.