용어
NTP(Network Time Protocol)
네트워크 환경으로 구성된 장비(서버,PC,통신장비,방화벽 장비 등 시스템 시간을 동기화 하기 위한 규약이다.)
개념
모든 윈도우 서버는 NTP서버가 될 수 있으며,NTP서버는 방화벽 UDP 123번 포트가 열려 있어야 한다.
NTP서버와의 시간 차이가 많이 날 경우(기본값:15시간) 동기화 되지 않는다. 동기화 하기 위해서는 실제 시간과 근접한 시간으로 변경한 후 동기화 할 수 있도록 한다.
데이터 일치를 위하여 동기화(Sync)요청을 하더라도 즉시 반영되는 것이 아니라,조금씩 맞춰간다.시간이 정확하게 실시간으로 동일하다면 같은 시간대의 데이터가 생성되므로,데이터 정합성에 오류가 발생한다.(매우중요)
이중화 환경에서 이런 문제가 더 발생할 수 있다 판단한다.
이에 시간 동기화는 즉시 반영되는 것이 아니라,조금씩 그 차이를 줄여 나가는 방식이다.
[환경1]
내부NTP장비가 위성과 연결되어 안테나를 통해 시간을 받아온다.
다른 내부 호스트들이 NTP장비의 IP와 연동하면 내부 호스트는 시간을 동기화 한다.
[이미지 퍼옴]

[환경2]
외부와 연결된 특정 NTP서버가 있을경우
국내 또는 해외 NTP서버와 연동하면 시간을 받아올 수 있다.
내부 호스트 들은 특정NTP서버와 연동하면, 시간을 지속적으로 업데이트(동기화) 할 수 있다.
단점, 국내 또는 해외 NTP서버 주소가 변경 될 수 있으므로 체크가 필요하다.
추가정보
국내NTP서버 목록(2025년1월14일 기준)
(1) time.windows.com (마이크로소프트)
(2) kr.pool.ntp.org (pool.ntp.org) / 2025년 4월25일 기준 pool.ntp.org로 연동됨
(3) asia.pool.ntp.org (pool.ntp.org)
(4) time.google.com (구글)
(5) ntp2.kornet.net(KT)
1.Windows의 기본 ntp서버는 time.windows.com이다.
현재 컴퓨터가 time.windows.com 시간 동기화가 되지 않는다 가정하고
asia.pool.ntp.org 변경하려고 한다.
w32tm /dumpreg /subkey:parameters
2.asia.pool.ntp.org 도메인 주소 및 ip를 확인 해 보자.
nslookup asia.pool.ntp.org
4개 ip 확인 된다.
3.asia.pool.ntp.org 서버와 통신 확인(ping)
ping asia.pool.ntp.org
4.현재 서버 또는 PC의 NTP 서버 설정을 다시 확인 하자.
time.windows.com,0x8 되어있다.
w32tm /dumpreg /subkey:parameters
5. 먼저 외부에 있는 NTP서버와 고정된 간격으로 동기화 하는 설정을 한다.
regedit 설정이 필요하다.
regedit ->
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags = "5" 설정
- 5는 외부에 있는 NTP 서버와 시간 동기화
- 10은 내장된 하드웨어 시간 CMOS 으로 동기화
*설정 후 서비스를 재시작 해 준다.
net stop w32time && net start w32time
참고URL
https://learn.microsoft.com/en-us/archive/msdn-technet-forums/996175f9-98e0-4ee8-bc2b-6d41f0884aac
6. NTP 서버의 시간을 동기화 하기 위해 NTP서비스를 활성화 하자.
이 설정을 활성화하면 NTP 클라이언트로 작동한다는 것인데,
즉 현재 컴퓨터가 외부에 있는 NTP서버와 동기화를 하거나,
현재 컴퓨터가 다른 NTP컴퓨터와 시간 동기화를 할 수 있다.
동기화 서비스를 더 강화하기 위해 추가 설정이 있는데,
외부 NTP서버 주소 또는 내부 NTP컴퓨터 주소를 적용하면 현재 컴퓨터는
외부 또는 내부에 있는 NTP서버와 계속 동기화를 하게 된다.
regedit 설정이 필요하다.
regedit -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\Enabled = "1" 설정
- 1은 동기화 하겠다는 설정값
* 반대로 이 설정을 비활성화하면 현재 컴퓨터가 NTP 시간을 동기화 하지
않는다. Enabled="0" 설정
추가로
regedit ->
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer\NtpServer="NtpServer주소"
- NTP서버 주소도 여기서 변경할 수 있다.
참고URL
https://learn.microsoft.com/en-au/answers/questions/2080170/windows-ntp-client
7. 6번의 보충내용 으로 NtpServer 값 time.windows.com,0x9 에서
0x9 의미가 무엇일까? 또 0x8은 무엇일까?
0x9는 SpecialPollInterval DWORD 값을 가르킨다.
0x9 입력하면 SpecialPollInteval 값을 참조한다.
- 기본 설정값은 604800초 이며 일로 계산하면 7일 이다.
즉 NTP 서버주소 뒤에 0x9 붙이면 time.windows.com 동기화를
7일에 한번씩 한다는 기본값이 된다.
SpecialPollInterval 값은 예상보다 긴 간격으로 NTP 서버와 시간 동기화를 한다. 그렇다면 0x9 설정은 언제 해야 하는 것일까?
네트웍이 느린 환경에서 설정하면 기본값 7일은 적절하다 할 수 있다.
SpecialPollInterval 값을 변경하면 동기화 간격을 좁힐 수 있다.
3600 으로 수정한다면 1시간에 한번씩 NTP 서버와 동기화 할 것이다.
* 적용 후 서비스를 업데이트 한다.
w32tm /config /update
다른 방법으로 SpecialPollInterval 값을 일일이 수정하지 않아도
내장되어 있는 기본값이 있다.
(1) MinPollInterval
0xA (== 2^10 seconds == 1024 seconds) / 약 17분
(2) MaxPollInterval
0xF (==2^ 15 seconds == 32768 seconds) / 약 9시간
(3) 만약 0x8 변경한다면 약 8시간 으로 NTP 서버와 동기화를 한다.
참고 URL
8.현재 서버의 방화벽 UDP 123 포트가 열렸는지 확인하자.
netstat -ano | find "123"
9. UDP 123 포트가 열려있지 않다면 명령어로 설정하거나,
직접 방화벽에 들어가 설정하자.
netsh advfirewall firewall add rule name="NTP Sync Response(IN/UDP)" protocol=UDP dir=in action=allow localport=123
다른 방법 방화벽 설정(wf.msc 또는 firewall.cpl)
10.위에 설정으로 현재 외부에 있는 NTP서버 또는 내부에 있는 NTP컴퓨터와 내 로컬 컴퓨터 에서 통신 및 설정을 확인 했다.
내 컴퓨터 에서 NTP 서버 주소가 어디인지 확인 해 보자.
time.windows.com 나타난다.
w32tm /dumpreg /subkey:parameters
11.위의 부분을 regedit 경로에서 값을 수정하자.
regedit ->
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer\NtpServer="NtpServer주소"
- 다른 NTP서버 주소도 여기서 변경할 수 있다.
12.NTP 서버와 동기화 하는 시간을 설정해 주자.
여기서는 3600초(1시간) 주기로 동기화 한다.
regedit -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpeclalPollInterval = "3600" 설정
13.NTP 서버와 시간차 설정. 이 항목은 기본값 은 54000초(15시간)이다.
현재 서버의 시간과 NTP서버의 시간이 15시간 이상 차이가 나면
동기화 하지 않는다. 이 값을 16진수0xffffffff(ffffffff) 또는 10진수
4,294,967,295 로 변경하면 시간 차이에 상관없이 무조건 동기화
하므로 10진수 4,294,967,295 로 설정을 한다.
regedit -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxPosPhaseCorrention = "4294967295" 설정
regedit -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxNegPhaseCorrention = "4294967295" 설정
14.동기화 시간 ,시간차 설정이 제대로 되었는지 명령어로 확인 해 보자.
w32tm /query /configuration
-MaxNegPhaseCorrection 확인
-MaxPosPhaseCorrection 확인
-SpecialPollInterval 확인...등
15.위에서 동기화 시간을 설정했다.
예를 들어 내 컴퓨터 에서 외부에 있는 NTP 서버 시간 동기화가 되지 않는다 가정하고 NTP서버 주소를 명령어로 변경해 보자.
asia.pool.ntp.org 서버로 변경
w32tm /config /syncfromflags:manual /manualpeerlist:"asia.pool.ntp.org" /reliable:yes /update
16.asia.pool.ntp.org 서버로 변경해 보자.(NTP서버 IP로 입력 설정)
w32tm /config /syncfromflags:manual /manualpeerlist:"40.19.96.19,0x9 212.26.18.43,0x9" /reliable:yes /update
17.Windows Time 서비스가 자동으로 시작되도록 설정한다.
(Domain환경에서는 리부팅 후 자동으로 서비스가 시작되지만
WorkGroup 환경에서는 리부팅 후 자동으로 서비스가 시작되지
않는다 )
sc config w32time start=auto
18.WorkGroup환경에서도 자동으로 서비스가 시작되게 트리거 설정을 한다.
sc triggerinfo w32time start/networkon stop/networkoff
19. w32time 서비스를 재시작 한다.
net stop w32time && net start w32time
20. NTP 서버와 동기화 즉시 실행
w32tm /resync /nowait
21.NTP 동기화 상태 확인(마지막으로 동기화한 시간 확인)
w32tm /query /status
22.위에서는 내부 Master 서버를 외부 asia.pool.ntp.org 서버로 설정했다. 이번에는 Master 서버와 시간을 동기화 하고 있다 가정하고
Slave 서버가 Master 서버와 통신이 제대로 되고 있는지 점검하고,
Master 서버와 통신을 제대로 하기 위한 점검과 설정을 알아보자.
먼저 Slave 서버에서 Master 서버와 시간차를 확인하자.
w32tm /stripchart /dataonly /computer:192.168.0.3
예) +120.2428931s -> 120초 차이가 남
현재 +00 이라서 차이가 없음
23. Master(NTP) 서버 시간의 기준으로 시간 동기화 설정한다.
w32tm /config /syncfromflags:manual /manualpeerlist:192.168.0.3 /update
24.현재 Slave 서버가 어디 NTP서버로 설정되어 있는지 확인한다.
w32tm /dumpreg /subkey:parameters
정상적으로 Master서버의 ip주소가 적혀 있음
25.서비스 재시작 한다.
net stop w32time && net start w32time
26.시간 동기화
w32tm /resync
'Windows' 카테고리의 다른 글
Hyper-V 개인 네트워크 (Private) (0) | 2025.01.17 |
---|---|
Hyper-V 내부 네트워크 (Internal) (0) | 2025.01.17 |
Hyper-V 외부 네트워크 (External) (0) | 2025.01.17 |
이벤트 ID 10016 (0) | 2024.03.25 |