출처 : http://lovemind.tistory.com/107
NTP란?
Network Time Protocol(네트워크 시간 프로토콜)의 약자로 네트워크 환경으로 구성된 장비(서버, PC, 통신장비, 방화벽 장비 등)의 시스템 시간을 동기화 하기 위한 규약이다.
윈도우에는
- 모든 윈도우서버는 NTP서버가 될 수 있다.
- 모든 서버의 방화벽에서 UDP 123 번이 열려있어야 한다.
- NTP서버와의 시간차이가 많이 날 경우(기본값: 15시간) 동기화 되지 않는다.
실제 시간과 근접한 시간으로 변경 후 동기화 할 수 있도록 한다. - 데이터 일치를 위하여 동기화(Sync)요청을 하더라도 즉시 반영되는 것이 아니라, 조금씩 맞춰 간다.
(예: Server#2 서버가 Server#1서버 보다 시간이 빠를 경우, Server#1번의 시간으로 Server#2의 시스템시간을 동기화 할 경우, 동일한 시간대의 데이터가 생성되므로, 데이터 정합성에 오류가 발생한다. 이에 시간 동기화는 즉시 반영되는 것이 아니라, 조금씩 그 차이를 줄여나가는 방식이다. – 표12 참조 )
시스템 환경
NTP 시간을 제공해주는 서버를 "NTP 서버", NTP 서버로 시간 동기화를 요청하는 서버를 "Slave 서버"로 명명한다.
서버명 및 IP 주소
서버명 |
IP 주소 |
역할 |
Server#1 |
10.10.10.1 |
NTP 서버 |
Server#2 |
10.10.10.2 |
Slave 서버 |
Server#3 |
10.10.10.3 |
Slave 서버 |
내부 NTP 서버
외부 NTP 서버와 시간 동기화
내부 NTP 서버 시스템 시간을 인터넷 표준시(예:time.windows.com)으로 설정한다.
실행서버
Server#1(IP:10.10.10.1)
시나리오
내부 NTP 서버 역할로 운용할 서버의 시간 동기화 대상을 외부NTP(예:time.windows.com)으로 설정하고, 설정(레지스트리)값을 확인 후 동기화 작업을 수행한다.
작업
1. 외부 NTP서버를 기준으로 시간동기화 설정을 한다.
* 시작 -> cmd
-> w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update
표 1: 예상결과
C:\>w32tm /config /syncfromflags:manual /manualpeerlist:time.microsoft.com /update 명령이 성공적으로 완료되었습니다. |
2. Windows Time 서비스의 설정값(레지스트리) 확인
* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters
표 2: 예상 결과
C:\>w32tm /dumpreg /subkey:Parameters 값 이름 값 종류 값 데이터 ----------------------------------------------------------------------------- ServiceMain REG_SZ SvchostEntry_W32Time ServiceDll REG_EXPAND_SZ C:\WINDOWS\system32\w32time.dll NtpServer REG_SZ time.windows.com,0x1 <- 외부 NTP서버주소 Type REG_SZ NTP <- 외부 NTP서버 사용 |
3. Windows Time 서비스 재시작
* 시작 -> cmd -> net stop w32tm
-> net start w32tm
표 3: 예상결과
C:\>net stop w32time Windows Time 서비스를 멈춥니다.. Windows Time 서비스를 잘 멈추었습니다. C:\>net start w32time Windows Time 서비스를 시작합니다.. Windows Time 서비스가 잘 시작되었습니다. |
4. 시간 동기화
* 시작 -> cmd -> w32tm /resync
표 4: 예상결과
[정상] C:\>w32tm /resync 로컬 컴퓨터에 다시 동기화 명령을 보내는 중 명령이 성공적으로 완료되었습니다. [오류] : 방화벽에서 외부 UDP 123 포트가 막혀있을 경우 발생할 수 있다. C:\>w32tm /resync 동기화 명령 전송 - local computer... 사용 가능한 시간 데이터가 없어 컴퓨터가 동기화하지 못했습니다. |
NTP 서비스 제공을 위한 구성 확인
내부 NTP 서버가 외부 NTP서버를 참조하는지 확인한다.
실행서버
Server#1(IP:10.10.10.1)
시나리오
내부 NTP 서버 역할로 운용할 서버의 서비스를 확인하여 Slave 서버에서 연결 할 수 있도록 구성 값을 확인한다.
작업
1. Windows Time 서비스 구동 확인
* 시작 -> cmd -> sc query w32time
표 5: 예상 결과
C:\>sc query w32time SERVICE_NAME: w32time TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 |
2. NTP 서비스 구동 확인
* 시작 -> cmd -> netstat –ano | findstr 123
표6: 예상 결과
C:\>netstat -ano | findstr 123 UDP 0.0.0.0:123 *:* 1128 UDP 0.0.0.0:62123 *:* 1428 UDP [::]:123 *:* 1128
Windows Server 2008 R2 REG 수정 Here's how to do it:
* 네트워크 장비와 NTP 통신 오류시 a. HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config 에서 LocalClockDispersion 항목의 값을 10에서 0으로 변경합니다.
|
Slave 서버
Slave 서버 환경 구성
내부 NTP서버(IP:10.10.10.1)를 기준으로 Slave 서버의 시스템 시간을 설정한다. 시간차이가 너무 많을 경우 동기화가 되지 않으니, 수동으로 근접한 시간을 맞추고 동기화 할 수 있도록 한다.
실행서버
Server#2(IP:10.10.10.2)
Server#3(IP:10.10.10.3)
(각 서버별로 수행)
시나리오
시간 동기화 대상을 내부 NTP서버(IP:10.10.10.1)로 설정하고, 동기화 작업을 수행한다.
작업
1. 내부NTP서버(IP:10.10.10.1)를 기준으로 시간동기화 설정을 한다.
* 시작 -> cmd
-> w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update
표 7: 예상결과
C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1 /update 명령이 성공적으로 완료되었습니다. |
2. Windows Time 서비스의 설정값(레지스트리) 확인
* 시작 -> cmd -> w32tm /dumpreg /subkey:Parameters
표 8: 예상 결과
C:\>w32tm /dumpreg /subkey:Parameters 값 이름 값 종류 값 데이터 ----------------------------------------------------------------------------- ServiceMain REG_SZ SvchostEntry_W32Time ServiceDll REG_EXPAND_SZ C:\WINDOWS\system32\w32time.dll NtpServer REG_SZ 10.10.10.1 <- 외부 NTP서버주소 Type REG_SZ NTP <- 외부 NTP서버 사용 |
3. Windows Time 서비스 재시작
* 시작 -> cmd -> net stop w32tm
-> net start w32tm
표 9: 예상결과
C:\>net stop w32time Windows Time 서비스를 멈춥니다.. Windows Time 서비스를 잘 멈추었습니다. C:\>net start w32time Windows Time 서비스를 시작합니다.. Windows Time 서비스가 잘 시작되었습니다. |
3. 시간 동기화
* 시작 -> cmd -> w32tm /resync
표 10: 예상결과
C:\>w32tm /resync 로컬 컴퓨터에 다시 동기화 명령을 보내는 중 명령이 성공적으로 완료되었습니다. |
NTP서버와 시간차 확인
특정 서버(ex.NTP서버)와 실행한 서버와의 시간차이를 확인한다.
실행서버
Server#2(IP:10.10.10.2)
Server#3(IP:10.10.10.3)
(각 서버별로 수행하여 확인 할 수 있다.)
시나리오
특정서버(Master Server:10.10.10.1)와 Slave Server(10.10.10.2)시간 동기화 대상을 Master Server 설정하고, 동기화 작업을 수행한다.
작업
1. Master Server를 기준으로 시간동기화 설정을 한다.
* 시작 -> cmd -> w32tm /stripchart /dataonly /computer:10.10.10.1
비교대상 서버와 시간이 일치한다면, 하기와 유사한 결과값을 볼 수 있다.
표 11: 예상결과
C:\> w32tm /stripchart /dataonly /computer:10.10.10.1 Tracking 10.10.10.1 [10.10.10.1]. The current time is 2012-04-18 오후 19:17:13 (local time). 19:17:13, +00.2676328s -> 비교 대상 서버와 +00.2676328 초만큼 차이가 난다. 19:17:15, +00.2593851s 19:17:17, +00.2589499s 19:17:19, +00.2428931s ^C -> 중지하기 위해서는 "Ctrl + c"를 누르면 된다. +00.xxxxxxx(또는 -00.xxxxxxx)로 대상 NTP서버와 차이나는 시간만큼 표기된다. 예) +120.2428931s -> +120초 차이가 남 |
정리: NTP설정 후 동기화 요청 및 동기화 확인
표 12: Slave서버 동기화 설정
C:\>w32tm /config /syncfromflags:manual /manualpeerlist:10.10.10.1/update 명령이 성공적으로 완료되었습니다.
C:\>net stop w32time Windows Time 서비스를 멈춥니다.. Windows Time 서비스를 잘 멈추었습니다. C:\>net start w32time Windows Time 서비스를 시작합니다.. Windows Time 서비스가 잘 시작되었습니다.
C:\>w32tm /resync 로컬 컴퓨터에 다시 동기화 명령을 보내는 중 명령이 성공적으로 완료되었습니다.
C:\>w32tm /stripchart /dataonly /computer:10.10.10.1 10.10.10.1[10.10.10.1:123] 추적 중 현재 시간은 2012-04-19 오후 22:47:25입니다. 22:47:25, +23.2364090s 22:47:27, +22.7004942s -> 조금씩이지만 차이가 줄어드는 것을 볼 수 있다. 22:47:30, +22.1639462s 22:47:32, +21.6430236s ^C -> 중지하기 위해서는 "Ctrl + c"를 누르면 된다. |
참고
W32Time 서비스의 레지스트리 항목
SITE: http://support.microsoft.com/kb/223184/KO/
큰 시간 오프셋을 방지하도록 Windows 시간 서비스 구성
SITE: http://support.microsoft.com/kb/884776/ko
Windows Server 2008 방화벽 설정
NTP Sync Response(IN/UDP)
netsh advfirewall firewall add rule name="NTP Sync Response(IN/UDP)" protocol=UDP dir=in action=allow localport=123
( command 창이 관리자 권한으로 실행되어있어야 한다.)
'Windows' 카테고리의 다른 글
Windows Server 2008 Active directory 설치 실패 (0) | 2012.06.01 |
---|---|
Windows 2008 R2 서버 이벤트로그 메일 보내기 (0) | 2012.05.08 |
at.exe Schedule a command (0) | 2012.05.03 |
[펌]윈도우 netsh 명령어로 방화벽 설정하기 (0) | 2012.04.13 |
[펌] NAT 환경에서 IIS 7.5 FTP Passive 모드 설정하기 (0) | 2012.04.13 |