윈도우 NTP 동기화 하는 방법

아래 예제는 kr.pool.ntp.org 서버를 대상으로 NTP 동기화 하는 명령어 셋이다. 개인적으로 만들어 쓰고 있는 내용이니 그냥 참고만 하기 바란다.

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 3600 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxPosPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxNegPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
w32tm /config /syncfromflags:manual /manualpeerlist:"kr.pool.ntp.org,0x1"
sc config w32time start= auto
sc triggerinfo w32time start/networkon stop/networkoff
net stop w32time
net start w32time
w32tm /resync /nowait


각 커맨드의 의미를 대략 설명하겠다.

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v Enabled /t REG_DWORD /d 1 /f
→ NTP Client를 활성화 하겠다는 뜻. 기본으로 활성화 되어 있으나 확실히 해주기 위함.

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 3600 /f
→ 3600초(1시간) 주기로 동기화 하겠다는 뜻

reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxPosPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MaxNegPhaseCorrection /t REG_DWORD /d 0xFFFFFFFF /f
→ 이 항목의 기본 값은 54000초(15시간)인데, 현재 시간과 NTP 서버의 시간이 15시간 이상 차이가 나면 동기화 하지 않는다. 이 값을 0xFFFFFFFF로 변경하면 시간 차이에 상관없이 무조건 동기화 하겠다는 뜻이다. 대충 1년 정도 시간을 틀리게 설정해놓고 테스트 해봤는데 동기화가 잘 되었다.

w32tm /config /syncfromflags:manual /manualpeerlist:"kr.pool.ntp.org,0x1"
→ NTP 서버를 kr.pool.ntp.org로 지정함, SpecialPollInterval을 사용하겠음

sc config w32time start= auto
→ Windows Time 서비스가 자동으로 시작되도록 설정

sc triggerinfo w32time start/networkon stop/networkoff
→ Windows Time 서비스는 기본적으로 Domain에 가입된 상태에서만 자동으로 시작되게 트리거 설정되어 있다. 따라서 이 트리거를 네트워크 시작/중지로 변경해 주는 것이다. 이렇게 하지 않으면 WORKGROUP 환경에서는 sc config w32time start= auto 해두어도 실제로는 리부팅 후 자동으로 서비스가 올라오지 않는다. 따라서 반드시 필요한 설정이라 할 수 있다.

net stop w32time
net start w32time
→ Windows Time 서비스 재시작

w32tm /resync /nowait
→ NTP 동기화 즉시 실행

이렇게 설정하고 현재의 NTP 동기화 상태를 확인하고 싶다면 아래와 같이 입력하면 된다.

w32tm /query /status

C:\Windows\system32>w32tm /query /status
윤초 조정: 0(경고 없음)
계층: 3(보조 참조 - (S)NTP로 동기화됨)
정밀도: -6(틱당 15.625ms)
루트 지연: 0.1697235s
루트 분산: 7.7969707s
참조 ID: 0xD3278804(원본 IP:  211.39.136.4)
마지막으로 동기화한 시간: 2014-02-12 오전 1:15:15
원본: kr.pool.ntp.org
폴링 간격: 10(1024s)