리눅스 시스템 시간동기화 하기 ( rdate, ntp )



1. rdate
를 이용한 동기화

- 레드햇계열 및 여타 배포판에서도 별도의 설치과정필요없이 사용할수있다.

  쉘스크립파일을 하나 작성한다.

  ex) time-sync.cron ---------------------------

  #!/bin/bash

  /usr/bin/rdate -s time.bora.net && /sbin/clock -w

  ---------------------------------------------

  저장후 실행권한 부여

  #chmod 755 time-sync.cron

  작성한 파일을  /etc/cron.daily 로 복사 ( 일일 새벽 4에 동기화 스크립트를 수행함 )


2. ntp
를 이용한 동기화

  - rdate 를 이용한 방법보다 소수점 몇몇점이하까지 상세히 동기화해준다고해서 애용중;

  #rpm -qa | grep ntp 명령으로 "ntp-버젼" 이 출력되지않으면

  http://rpmfind.net 에서 "ntp" 로 검색해서 배포판에 해당하는 패키지를 설치한다


 
1).
용어 설명

  a. Reference Clock

  UTC(Universal Time Coordinated)처럼 NTP가 참고하는 신뢰할 만 한 시간, 즉 절대시간이다.

     UTC는 원자시계로 부터 측정한 공식적인 표준 시간을 말한다.


 
b. Stratum

     타임 서버는 계층적 구조로 되어있고  각각의 레벨에 번호를 붙인다.

     Stratum-0은 시간을 생성하는 Reference Clock이고

     Stratum-1은 원자시계 같은 생성 장치에 직접 연결된 최상의 계층의 타임 서버이다.


 
c. /var/ntp/ntp.drift

     지역 시스템의 시간을 더욱 정확하게 유지하는 파일로,

     시간 오차의 평균값을 저장하고 있다.


 
d. /etc/init.d/ntpd

     데몬 프로세스


 
2).
동작 원리

a. 시스템이 부팅할때 /etc/ntp.conf 파일이 있으면 ntpd 데몬이 구동된다.


   
b. /etc/ntp.conf
파일의 설정을 따라서 서버 또는 클라이언트 모드로 작동된다.


   
c. NTP
서버는 매분마다 NTP 서버임을 다른 시스템에 알린다.


 
3)
서버 구성시

  a. 외부 타임 서버를 통해 시간을 받아오는 방법

     NTP 서버가 시간을 얻어올 외부 서버를 지정한다.

  여러 서버 지정이 가능하며 데이터의 prefer가 명시된 서버

     /etc/ntp.conf의 내용을 수정한다.

      =======================================================

      server xxx.xxx.xxx prefer ==> 추가

      server xxx.xxx.xxx        ==> 추가

      server xxx.xxx.xxx        ==> 추가

      #fudge 127.127.XType.0 stratum 0 ==> 주석처리

      =======================================================

      ntpd 구동한다.

      =======================================================

      # /etc/init.d/ntpd start

      =======================================================


 
b.
서버 시스템의 자체 시간을 이용하는 방법 (비추)

      타임 서버 스스로 Stratum-1 로 동작한다.

      /etc/inet/ntp.conf의 내용을 수정한다.

      =======================================================

      server 127.127.1.0 ==> 추가

      #fudge 127.127.XType.0 stratum 0 ==> 주석처리

      =======================================================

      ntpd 구동한다.

      =======================================================

      # /etc/init.d/ntpd start

      =======================================================



4)
클라이언트 구성시

  #ntpdate -b -s 서버아이피 또는 호스트네임

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

  * 다음과 같은 오류가 발생한 경우

 [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 를 옵션을 사용해서 다른 포트 사용하거나

      IPTABLE 을 사용중이면 OUTBOUND UDP 123 포트를 열어준다



 
- cron.daily
에 등록 ( 쉘스크립트 파일 작성 )

     ex) time-sync.ntp ---------------------------

     #!/bin/bash

  /usr/sbin/ntpdate -b -s time.kriss.re.kr && /sbin/clock -w

     ---------------------------------------------

     저장후 실행권한 부여

     #chmod 755 time-sync.ntp


 
작성한 파일을  /etc/cron.daily 로 복사 (매일 새벽 1 5분 동기화)

Posted by 마성민