윈도우 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"
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"
→ NTP 서버를 kr.pool.ntp.org로 지정함

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)
신고

  1. 오은묵
    2014.04.21 01:13 신고

    pc방에서 윈도우 날짜.시간을 변경 하는사람때문에 골치가 아픈데요
    혹시 PC재부팅 될때마다 자동으로 1번만 시간동기화 되게 만들려면

    w32tm /resync /nowait

    이렇게 메모장으로 적어서 확장자를 bat 로해서 시작프로그램에 등록해주면 되는지 궁금합니다

    • cmw
      2014.06.05 09:05 신고
      수정 및 삭제

      시작프로그램 외에도 그룹정책이라는 것이 있는데요 사용자 로그인 시
      실행하는 방식으로 해도 괜찮을 것 같네요.

  2. 드로이얀7(이준호)
    2014.07.04 13:29 신고

    참고로 시간이 일정 이상 차이가 나면 동기화 하지 않는 건 일종의 보안? 안전장치로 있는 거죠. 서버 에러 등으로 인해 엉뚱한 값이 들어왔을 때 이상한 날짜로 바뀌지 않도록...

    예전 IE toy가 시간동기화 기능 처음 추가했을 때, 실제로 저런 일이 일어나서(아마, 한국표준과학연구원의 Stratrum 1 Server에서 바로 값을 받아오다가 해당서버 과부하로 뻗으면서 에러가 났던 것 같은데 오래되서 제 기억이 맞는지 모르겠네요) 업데이트로 바꾼 적이 있죠. (다른 동기화 서버로 설정 변경 및 에러 발생시 이상한 값으로 시간 바꾸는 현상 수정) 지금도 구글링 해보니 흔적이 나오네요.
    http://pcclean.tistory.com/614 ('3. 아이이 토이 옵션 만지기' 항목)


    NTP 서버 및 시간 동기화에 대해 자세히 설명되어 있는 페이지
    http://time.ewha.or.kr/ (www.ewha.or.kr 들어가보니 이대부속 초등학교 12회 동문 홈페이지네요.)
    국내 공개 타임서버 리스트, kr.pool.ntp.org에 대한 설명도 나와있네요.
    http://time.ewha.or.kr/domestic.html


    코리아 NTP Pool Time Server

    일일이 타임서버 도메인이나 ip 주소를 입력하지 않고 하나의 타임서버 도메인만 입력하면 되는 Pool Time Server란 편리한 타임서버 도메인이 있습니다.

    국내용 풀 타임서버의 도메인 이름은 kr.pool.ntp.org로 현재 12개의 국내 타임서버가 등록되어 있으며 시각정보를 가져올 때 가장 빠르고 정확한 타임서버로부터 시각정보를 가져오게 되어 있습니다. 현재 국내 풀 타임서버 참여 타임서버 숫자 변동 추이등 국내 풀 타임서버 관련 자세한 정보는 이곳( http://www.pool.ntp.org/zone/kr )에 있습니다.

    Pool Time Server 는 전세계 공통 주소와 각 대륙별 그리고 나라별로 있으며 리스트는 이곳( http://support.ntp.org/bin/view/Servers/NTPPoolServers )에서 얻을 수 있습니다.

  3. 드로이얀7(이준호)
    2014.07.04 13:37 신고

    지금 다시 보니 파코/즈에도 IE toy사태(?) 흔적이 남아있네요. ㅎㅎ
    http://www.park/oz.com/zboard/view.php?id=my_tips&no=8436