E D R , A S I H C RSS

FrontPage TimeServer

작성자 : 좋은진호(truefeel)
작성일 : 2003.3.17~18
수정일 : 2003.8.13(수) ntpdate의 시스템 콜 부분 추가
출처 : http://coffeenix.net/board_view.php?cata_code=3&bd_code=19

전에는 rdate time.nuri.net 또는 ntpdate -b time.kriss.re.kr
로 동기화만 했는데, 좀더 체계적으로(?) 정리할 필요가 있어서 적어봤다.

1. 우리나라의 NTP(Network Time Protocol) 서버

 1) Stratum 1 서버 :
   GPS 위성으로 부터 표준시각정보를 받는 타임 서버를
   NTP Primary Time Server 혹은 Stratum 1(one) 라고 부름

   데이콤 (gps.bora.net), 코넷 (ntp.kornet.net), GNGIDC,
   부산대학교 (ntp1.cs.pusan.ac.kr / ntp2.cs.pusan.ac.kr),
   한국 표준과학 연구원 시간 · 주파수 연구실 (time.kriss.re.kr)

 2) Stratum 2 서버 :
   Stratum 1 서버로 부터 표준시간을 받는 타임서버를
   TP Secondary Time Server 혹은 Stratum 2 서버라고 부름

   PSINet Korea (time.nuri.net),
   GNGIDC (ntp1.gngidc.net / ntp2.gngidc.net),
   이대부속 초등학교 (ntp.ewha.net / ticktock.ewha.net)


2. rdate를 이용한 시간 동기화

 지정한 타임서버로 부터 시간을 확인하거나 동기화 시킨다.

 1) 타임서버의 표준시간을 확인한다.
   rdate time.nuri.net
   rdate: [time.nuri.net] Tue Mar 18 16:38:47 2003

 2) 시스템 시간을 타임서버 시간에 동기화 시킨다.
   rdate -s time.nuri.net

3. ntpdate를 이용한 시간 동기화

 1) 동기화
   ntpdate -b -s time.kriss.re.kr

   -s : 결과를 화면이 아닌 syslog로 보냄

 2) 다음과 같은 오류가 발생한 경우
 [root@truefeel root]# ntpdate -b time.kriss.re.kr
 17 Mar 21:03:25 ntpdate[8244]: no server suitable for synchronization found



 -> NTP 프로토콜은 UDP port 123 을 사용하는데, 이 포트가 방화벽 등으로
    막혀있는 경우에는
    ntpdate -u time.kriss.re.kr

    처럼 -u 를 옵션을 사용해서 다른 포트 사용하도록 한다.

 3) 사용 예
 [root@truefeel root]# date
 월 3월 17 21:40:35 KST 2003
 [root@truefeel root]# date 03172150 <- 강제로 시간을 3.17일 21:50 으로 변경함

 월 3월 17 21:50:00 KST 2003
 [root@truefeel root]#
 [root@truefeel root]# ntpdate -u time.nuri.net <- 시간을 동기화 함
 17 Mar 21:40:44 ntpdate[8835]: step time server 203.255.112.96 offset -557.336058 sec
 [root@truefeel root]#
 [root@truefeel root]# date
 월 3월 17 21:40:46 KST 2003 <- 시간이 동기화 됨



 위에서 'offset -557.336058 sec'은 타임서버의 시간(reference time)과 로컬 서버와의
 시간 차이를 나타냄

 4) ntpdate의 2가지 시스템 콜

 ntpdate는 settimeofday(), adjtime()의 2가지 시스템 콜로 시간을 설정한다.
 settimeofday()은 timezone과 시간을 설정하고,
 adjtime()은 점근적 시각 보정 방식으로 커널 클럭을 조정한다. 주로 시간 동기화에 사용한다.

 ntpdate는 옵션(-b, -B)을 지정하지 않으면 현재 시스템 시간과 차이가 128ms 이상이면
 settimeofday()을, 이내이면 adjtime()을 사용한다.
 또한 강제적으로 ntpdate -b 로 settimeofday()를, ntpdate -B로 adjtime()를 사용할 수 있다.

 ntpdate 실행 결과 메시지에 'step time server...'로 표시되면 setimeofday()가 사용되었고,
 'adjust time server...' 로 표시되면 adjtime()가 사용되었다.
 [root@truefeel root]# ntpdate time.nuri.net
 14 Mar 01:09:31 ntpdate[3127]: step time server 203.255.112.96 offset 82.763348 sec
 [root@truefeel root]# ntpdate time.nuri.net
 14 Mar 01:22:30 ntpdate[3182]: adjust time server 203.255.112.96 offset -0.064531 sec



 부팅할 때는 ntpdate -b 로, cron등으로 정기적으로 시간조절을 할 때는 옵션없이 ntpdate
 사용하기를 하기 바란다.

 5) 디버깅 모드

   - 디버깅 모드는 local 서버의 시간을 변경하지는 않는다.
[root@truefeel root]# ntpdate -d time.nuri.net
18 Mar 17:33:23 ntpdate[2169]: ntpdate 4.1.1a@1.791 Sat Aug 31 18:27:31 EDT
2002 (1)
transmit(203.255.112.96)
receive(203.255.112.96)
transmit(203.255.112.96)
receive(203.255.112.96)
transmit(203.255.112.96)
receive(203.255.112.96)
transmit(203.255.112.96)
receive(203.255.112.96)
transmit(203.255.112.96)
server 203.255.112.96, port 123
stratum 2, precision -18, leap 00, trust 000
refid [192.6.38.127], delay 0.04927, dispersion 0.00092
transmitted 4, in filter 4
reference time:  c2215828.4ea9e000 Tue, Mar 18 2003 17:32:40.307
originate timestamp: c2215853.6ad1b000 Tue, Mar 18 2003 17:33:23.417
transmit timestamp: c2215853.a19695d9 Tue, Mar 18 2003 17:33:23.631
filter delay: 0.05023 0.05008 0.04927 0.06329
     0.00000 0.00000 0.00000 0.00000
filter offset: -0.22637 -0.22621 -0.22640 -0.23302
     0.000000 0.000000 0.000000 0.000000
delay 0.04927, dispersion 0.00092
offset -0.226409

18 Mar 17:33:23 ntpdate[2169]: adjust time server 203.255.112.96 offset
-0.226409 sec


4. 주의 사항

 1) time.kriss.re.kr 서버는 1초내에 여러번 접속을 시도할 경우 해당 IP를 차단 시키므로
   테스트를 하더라도, 시간 간격을 두고 하도록
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-01-05 12:12:35
Processing time 0.0205 sec