NTP
리눅스 서버에서 시간 동기화를 이용하는 방법으로는 rdate 와 ntp 방식이 있다.
정확한 차이는 생략하고, 여기서는 ntp 방식을 이용하여 time server 를 운영하는 방법을 설명하도록 한다.
기본적으로, ntp 방식은 staum 이라는 계층구조를 가지는데, straum 0 은 GPS 나 세슘 원자 시계등 시간을 구하는 장비를 의미하며,
straum 1 은 GPS 나 세슘 원자시계등에서 직접 시간을 동기화하는 서브들을 의미한다. straum 2 부터는 계속 트리 구조로 내려가게 된다.
여기서 straum 을 설명하는 이유는, 무턱대고 무조건 straum 1 에 동기화를 한다면, 이 straum 1 서버들은 부하를 견디지 못할 것이고,
그렇다면 서비스를 포기하는 현상이 발생할 수 있게된다. 또한, 이렇게 사용하는 것은 ntp 설계 의미를 무시하는 일이기도 하다.
그래서, 보통 사용하는 환경은 straum 2 에서 동기화를 하고, 이 동기화를 받은 straum 3 서버에 나머지 같이 운영하는 서버들을 peer로 해서
동기화를 시키면 된다. ntp protocol 을 이용했을 경우,??straum 1 ~ 15 까지의 편차가 micro seconds 이므로, 굳이 straum 1 이나 2 를 고집할 이유가 전혀 없다고 봐도 무방하다.
국내에서 운영중인 straum 2 서버는 다음과 같다.
* straum 2 list
ntp.ewha.net, ticktock.ewha.net, ntp1.epidc.co.kr, ntp2.epidc.co.kr, time.bora.net, time.korserve.net,
t2.korserve.net, rokkorclub.net, time.wonkwang.ac.kr, noc6-3.koren21.net
최신 목록은?http://time.ewha.net/domestic.shtml?에서 확인을 하도록 한다.
1. DOWNLOAD
#rpm -qa | grep ntp 명령으로 “ntp-버젼” 이 출력되지않으면
http://rpmfind.net?에서 “ntp” 로 검색해서 배포판에 해당하는 패키지를 설치한다.
ex> rpm -Uvh ntp-4.2.0.a.20040617-4.i386.rpm
동기화:??#ntpdate -b -s time.kriss.re.kr
주의:
NTP는 UDP port 123 을 사용하는데, 이 포트가 방화벽 등으로 막혀있는 경우에는 -u 를 옵션을 사용해서
다른 포트를 사용하거나 IPTABLE을 사용중이면 OUTBOUNT UDP 123 포트를 열어준다.
#ntpdate -u time.kriss.re.kr
2. SERVER 설정
/etc/ntp.conf를 수정
#cat /etc/ntp/ntp.conf
restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
# straum 2 server list
server ntp.ewha.net
server ntp1.epidc.co.kr
server time.bora.net
server time.wonkwang.ac.kr
server time.korserve.net
server noc6-3.koren21.net
driftfile /var/lib/ntp/drift
broadcastdelay??0.008
keys /etc/ntp/keys
/etc/ntp.conf와 driftfile 과 keys의 경우 배포본마다 위치가 다를 수 있으니 확인을 하도록 한다.
restric 설정은 peer 들이 본 서버로 sync 하는 것에 대한 제한을 한다.
restrict default nomodify notrap noquery // 이 설정은 기본으로 모든 권한을 주지 않음을 의미한다.
restrict 127.0.0.1 // 127.0.0.1 즉, 서버 자신에서는 모든 권한을 가진다.
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
// 192.168.0.0 ~ 192.168.0.255 c class 에서는 질의를 할 수 있는 권한을 가진다.
즉, 위의 2 라인은 항상 기본으로 들어가는 설정이며, peer 를 거느릴 서버에서는 (즉
A 의 입장에서는) 하위 peer 들의 질의를 받을수 있도록 3 번째 라인과 같이 restrict 설정을 해 주어야 한다.
설정을 마쳤다면, service ntpd restart 명령으로 ntpd 를 시작 하고,
ntpq 명령을 이용하여 sync 를 잘 하고 있는지 확인을 한다.
ex>
# service ntpd start
ntpd (을)를 시작합니다:????????????????????????????????????[??OK??]
# service ntpd restart
ntpd를 종료하고 있습니다:??????????????????????????????????[??OK??]
ntpd (을)를 시작합니다:????????????????????????????????????[??OK??]
# chkconfig –list ntpd
ntpd????????????0:해제??1:해제??2:해제??3:해제??4:해제??5:해제??6:해제
# chkconfig ntpd on
# chkconfig –list ntpd
ntpd????????????0:해제??1:해제??2:활성??3:활성??4:활성??5:활성??6:해제
# ntpq -p
remote?????????? refid??????st t when poll reach?? delay?? offset??jitter
==============================================================================
211.189.50.33?? 220.73.142.71????2 u?? 28?? 64????3?? 23.628?? -4.769?? 1.169
zero.bora.net?? 204.34.198.40????2 u?? 28?? 64????3?? 24.965?? -6.498?? 0.384
ntp1.epidc.co.k 192.168.17.8???? 2 u?? 30?? 64????3?? 22.782?? -4.600?? 0.843
ntp2.epidc.co.k 192.168.17.9???? 2 u?? 26?? 64????3?? 22.793?? -3.228?? 1.973
timency.kriss.r .▒+▒.?????????? 1 u?? 32?? 64????3?? 27.165?? 26.340?? 2.631
LOCAL(0)????????LOCAL(0)????????10 l?? 30?? 64????3????0.000????0.000?? 0.002
ntpd 를 막 재시작 하고 ntpq 를 실행한 경우, 5 분 정도를 기다려야 sync 가 진행이 된다는 것을 명심한다.
server 127.127.1.0 // 현재 서버가 타임서버 루트가 되도록 할 시 이와같이 설정한다.
remote 는 sync 를 하는 straum 2 서버 주소이다.
refid 는 각 straum 2 서버가 현재 sync 를 하고 있는 straum 1 서버를 보여준다.
st 는 각 라인의 remote 들의 straum 을 나타낸다.
그 외의 항목들은 ntp 가 알아서 하는 것들이니 신경쓰지 말자.
가장 중요한 것은 remote 필드의 주소 앞에 붙어 있는 기호들이다.
각 기호의 의미는 다음과 같다.
* 는 현재 sync 를 받고 있음을 의미한다.
+ ntp 알고리즘에 의해 접속은 가능하지만 sync 를 하고 있지는 않음을 의미
– ntp 알고리즘에 의해 접속은 가능하지만 sync 가능 리스트에서 제외
blank 는 접속이 불가능함을 의미한다.
이외에 .(dot) 또는 # 등의 기호가 나올 수 있지만, 그냥 여기서는 무시. ^^;;
마지막으로 st 가 16 이 나올 경우는, 해당 서버에 접속을 할 수 없음이다.
3. PEER 설정
다음은, B와 C를 straum 3 로 설정한 A로 부터 sync를 받도록 설정을 한다. (A도메인은 a.com 이라고 가정)
#cat /etc/ntp/ntp.conf
restrict default nomodify notrap noquery
restrict 127.0.0.1
# straum 3 server list
server a.com
driftfile /var/lib/ntp/drift
broadcastdelay??0.008
keys /etc/ntp/keys
peer 설정에서는 server를 straum 3 으로 지정한 서버 A 를 지정한다. 그 외에는 틀린 것이 없다.
역시 service ntpd restart 로 재시작을 한 후에 위에서 처럼 ntpq 로 확인을 한다.
#ntpq -p
remote?????????? refid??????st t when poll reach?? delay?? offset??jitter
==============================================================================
*a.com?????????? 211.189.50.33????2 u?? 62?? 64?? 17????0.822????6.191?? 0.052
—————————————————————————————————
네트워크 타임 프로토콜
인터넷상의 시간을 정확하게 유지시켜 주기 위한 통신망 시간 규약 라디오나 원자시계에 맞추어시간을 조정하며 밀리초 1/1000초 단위까지 시간을 맞출 수 있다 인터넷 표준 STD 12와 RFC 통신 규약 설명 문서1119에 정의되어 있다
간단하게 ntpdate ntp.ewha.net 명령해서 동기화 시킬수 있다.
[root@junix etc]# ntpdate ntp.ewha.net
24 Aug 11:24:23 ntpdate[2349]: step time server 211.189.50.33 offset -30.824960 sec
다음으로 ntp 데몬을 설정하자
먼저 /etc/ntp.conf 에 우리나라에서 운영되고 있는 ntp 서버를 추가하자.
server ntp.ewha.net
server ticktock.ewha.net
server time.bora.net
server ntp1.epidc.co.kr
server ntp2.epidc.co.kr
server time.kriss.re.kr
그리고 데몬을 재시작한다.
[root@junix etc]# service ntpd start
ntpd (을)를 시작합니다:????????????????????????????????????[??OK??]
[root@junix etc]# service ntpd restart
ntpd를 종료하고 있습니다:??????????????????????????????????[??OK??]
ntpd (을)를 시작합니다:????????????????????????????????????[??OK??]
[root@junix etc]# chkconfig –list ntpd
ntpd????????????0:해제??1:해제??2:해제??3:해제??4:해제??5:해제??6:해제
[root@junix etc]# chkconfig ntpd on
[root@junix etc]# chkconfig –list ntpd
ntpd????????????0:해제??1:해제??2:활성??3:활성??4:활성??5:활성??6:해제
동작확인
ntpd가 동작하고 있는지 확인하는 명령은 ntpq -p이다.
[root@junix etc]# ntpq -p
remote?????????? refid??????st t when poll reach?? delay?? offset??jitter
==============================================================================
211.189.50.33?? 220.73.142.71????2 u?? 28?? 64????3?? 23.628?? -4.769?? 1.169
zero.bora.net?? 204.34.198.40????2 u?? 28?? 64????3?? 24.965?? -6.498?? 0.384
ntp1.epidc.co.k 192.168.17.8???? 2 u?? 30?? 64????3?? 22.782?? -4.600?? 0.843
ntp2.epidc.co.k 192.168.17.9???? 2 u?? 26?? 64????3?? 22.793?? -3.228?? 1.973
timency.kriss.r .▒+▒.?????????? 1 u?? 32?? 64????3?? 27.165?? 26.340?? 2.631
LOCAL(0)????????LOCAL(0)????????10 l?? 30?? 64????3????0.000????0.000?? 0.002
=========================================================================================================
ntp 를 이용한 시스템 시간 설정
1.??ntpdate 명령을 통하여 시스템 시간을 설정한다.
[root@angka Security]# ntpdate time.kriss.re.kr
14 May 23:09:05 ntpdate[1875]: step time server 203.254.163.74 offset 6880.041030 sec
[root@angka Security]# date
2006. 05. 14. (일) 23:09:09 KST
[root@angka Security]#
2. crontab 에 매일 오전 12시에 실행되게 설정해 놓는다
[root@angka Security]# crontab -l
# DO NOT EDIT THIS FILE – edit the master and reinstall.
# (/tmp/crontab.1880 installed on Sun May 14 23:11:38 2006)
# (Cron version — $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 0 * * * /usr/sbin/ntpdate time.kriss.re.kr