시간을 동기화하는 방법으로 NTP 와 rdate 를 이용하는 방법을 사용합니다. 소수점까지 정확한 단위의 동기화가 필요하다면 원자단위의 NTP 를 이용해야 합니다.

NTP 시간 동기화

NTP(Network Time Protocol)는 인터넷상의 시간을 정확하게 유지시켜 주기 위한 통신망 시간 규약이다. 라디오나 원자시계에 맞추어 시간을 조정하며 밀리초 1/1000초 단위까지 시간을 맞출 수 있다.

기본적으로, NTP 방식은 straum이라는 계층구조를 가지는데 straum 0 은 GPS나 세슘 원자 시계등 시간을 구하는 장비를 말하며, straum 1은 GPS 나 세슘 원자 시계등에서 직접 시간을 동기화하는 서버를 의미한다. strum 2 부터는 트리 구조를 형성하게 된다. 보통 straum 2에서 동기화를 하고, 이 동기화를 받은 straum 3 서버에서 나머지 같이 운영하는 서버들을 peer로 해서 동기화를 시키므로써 straum 1 서버들의 부하를 줄인다.

NTP 는 UDP 123을 기본 포트로 사용(포트 개방 필요)한다.

우리나라에서 운영되고 있는 NTP 서버

  • kr.pool.ntp.org
  • time.bora.net
  • time.nuri.net

NTP 설치

CentOS 6.4 Minimal 버전에는 NTP 가 설치되어 있지 않다. yum 을 이용해서 설치하자.

BASH
yum install ntp

  ================================================================================
   Package        Arch          Version                         Repository   Size
  ================================================================================
  Installing:
    ntp          x86_64        4.2.4p8-3.el6.centos              base        444 k

  Installing for dependencies:
    libedit      x86_64        2.11-4.20080712cvs.1.el6          base         74 k
    ntpdate      x86_64        4.2.4p8-3.el6.centos              base         58 k

  Transaction Summary
  ================================================================================
  Install       3 Package(s)

NTP 설정

peer 설정이다. 즉, 시간 동기화를 받기 위한 설정내용이다. 기본적으로 입력되어있는 server 0.centos.pool.ntp.org등을 주석처리하거나 삭제하고 국내 NTP 서버로 대체한다.

BASH
vi /etc/ntp.conf

  # Use public servers from the pool.ntp.org project.
  # Please consider joining the pool (http://www.pool.ntp.org/join.html).
  #server 0.centos.pool.ntp.org
  #server 1.centos.pool.ntp.org
  #server 2.centos.pool.ntp.org
  server kr.pool.ntp.org
  server time.bora.net
  server time.kornet.net

NTP 서비스를 시작프로그램에 등록한다.

BASH
chkconfig ntpd on

NTP 서비스 등록 확인

BASH
chkconfig --list | grep ntpd

  ntpd            0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

NTP 서비스를 시작한다.

BASH
/etc/init.d/ntpd start

  ntpd ()를 시작 중:                                       [  OK  ]

NTP 는 동기화하기까지 5~10분의 시간이 걸리니 여유를 갖도록 하자.

BASH
ntpq -p

      remote           refid      st t when poll reach   delay   offset  jitter
  ==============================================================================
  *121.182.147.191 .GPS.            1 u   24   64  377    9.611    9.432   4.998
  +time.bora.net   90.1.14.51       2 u    1   64  177    7.049   -4.907  12.329
  +ntp1.sjtel.net  192.168.18.6     2 u    4   64  377    9.096   10.322   5.248
  • * : 현재 sync 를 받고 있음을 의미
  • + : ntp 알고리즘에 의해 접속은 가능하지만 sync 를 하고 있지는 않음을 의미
  • - : ntp 알고리즘에 의해 접속은 가능하지만 sync 가능 리스트에서 제외
  • blank : 접속이 불가능함을 의미

remote는 sync 를 하는 straum 2 서버주소를 가리키며, refid는 각 straum 2 서버가 현재 sync 를 하고 있는 straum 1 서버를 보여준다. st가 16일 경우 해당 서버에 접속 할 수 없음을 의미한다.

NTP 서버 설정

단순히 시간 동기화가 목적이 아니라 자체 동기화 서버를 구축하려는 경우 아래의 설정이 도움이 될지도 모르겠다.

BASH
vi /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 를 잘 하고 있는지 확인을 한다.