2003년 4월 11일 금요일

Freebsd에서 ntpd(Network Time Protocol Daemon) 설치, 시간 동기화

http://www.ntp.org/
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ntp.html
http://kldp.org/~eunjea/clockspeed.php
----------------------
FreeBSD 에서
-----------------------

su -       (root 권한 획득)
cd /usr/ports/net/ntp   (port로 설치한다.)
make install clean

vi /etc/ntp.conf  (configuration file을 설정해 준다.)


/etc/ntp.conf 파일 내용
----------------------
server ntp.ewha.net               (time server, 가까운 곳으로 고른다.)
driftfile /var/db/ntp.drift
ntpdate_enable="YES"
----------------------

public time server 목록

http://www.eecis.udel.edu/~mills/ntp/servers.html
http://www.eecis.udel.edu/~mills/ntp/clock1a.html
http://www.eecis.udel.edu/~mills/ntp/clock2a.html

------------------------
ntpd 시작 시키기.
ntpd -p /var/run/ntpd.pid

ntpd가 잘 동작 중인지 알아보기
ntpq -p

---------------------------
Linux 에서
---------------------------
vi /etc/ntp.conf
-------------------------
server time1.sayclub.com
server time2.sayclub.com

driftfile /etc/ntp/drift
-------------------------
sudo /sbin/chkconfig --list |grep on
sudo /sbin/chkconfig --level 2345 ntpd on
sudo /usr/sbin/ntpd
sudo /etc/init.d/ntpd start
/usr/sbin/ntpq -p

--------------------------
FreeBSD
FreeBSD는 OS 자체에 이제 NTP가 포함되어 나온다. 설정을 하려면 먼저 /etc/ntp.conf를 화일을 만든다

    # vi /etc/ntp.conf
    server time1.sayclub.com
    server time2.sayclub.com
    driftfile /etc/ntp.drift
리부팅 후에 자동으로 xntpd 프로그램이 뜨게 하기 위해서는 다음 설정을 /etc/rc.conf 화일에 추가한다. 만일 관련 설정에 대해서 더 알고 싶다면 /etc/defaults/rc.conf 화일을 참조한다.

FreeBSD 3.x
        ntpdate_flags="time1.sayclub.com"
        ntpdate_enable="YES"
        xntpd_enable="YES"
        xntpd_flags="-c /etc/ntp.conf -p /var/run/xntpd.pid"
FreeBSD 4.x
        ntpdate_flags="time1.sayclub.com"
        ntpdate_enable="YES"
        xntpd_enable="YES"
        xntpd_flags="-c /etc/ntp.conf -p /var/run/ntpd.pid"
FreeBSD 5.x
        ntpdate_flags="time1.sayclub.com"
        ntpdate_enable="YES"
        ntpd_enable="YES"
        ntpd_flags="-p /var/run/ntpd.pid"
이렇게 하면 다음 리부팅 때에 자동으로 ntpd가 실행된다. 만일 지금 당장 하길 원한다면

FreeBSD 3.x
      /usr/sbin/xntpd -c /etc/ntp.conf -p /var/run/xntpd.pid
FreeBSD 4.x
      /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid
참고문서
FreeBSD Online Manual - ntpd
FreBSD Diary -- Time synchronization - xntpd

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

Linux
RedHat Linux 에서는 배포본에 ntpd가 기본적으로 rpm 형태로 제공된다.

6.x 이하에서는 xntpd-3.x 가 제공되며, everything을 선택하지 않는 경우, 명시적으로 설치해야 한다.

    # rpm -i xntp3-5.93-14.i386.rpm
7.x 이상에서는 ntp-4.x 가 제공되며, network management server 항목을 선택하면 설치된다. 설치되지 않은 경우 마찬가지 방식으로 설치해주면 된다.

    # rpm -i ntp-4.0.99k-15.i386.rpm
Stratum 2 Server 설정은 다른 OS들과 마찬가지로 다음과 같은 형식으로 해준다.

    # vi /etc/ntp.conf
    server time1.sayclub.com
    server time2.sayclub.com

    driftfile /etc/ntp/drift
리부팅후에도 자동으로 뜨게 하려면, 다음과 같은 명령으로 Runlevel 설정을 해준다.

    # chkconfig [ xntpd | ntpd ] on
시작하려면 아래와 같이 root로 실행한다.

    # /usr/sbin/ntpdate -b time1.sayclub.com
    29 Dec 14:44:10 ntpdate[8832]: step time server 211.174.56.21 offset 0.024818 sec
    # /etc/rc.d/init.d/[ xntpd | ntpd ] start 혹은 restart
만일 이렇게 NTP 서버를 실행한 후에, 약 30초 정도 후에는 이 프로그램이 제대로 작동하고 있는지를 알기 위해서 ntpq라는 프로그램을 사용하면 된다.

    % /usr/sbin/ntpq -p
         remote           refid      st t when poll reach   delay   offset    disp
    ==============================================================================
    *time1.sayclub. gps.bora.net     2 u  304  512  377     0.41   -0.049    0.03
    +time2.sayclub.  time.nist.gov   2 u  410  512  377     0.37    0.136    0.03
만일 위와 같이 remote 서버와, refid가 제대로 나오고 offset 값이 나온다면 정상이다.


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

OpenBSD
OpenBSD 경우 port tree를 이용하여 설치하는 것이 편하다

    # cd /usr/ports/net/ntp
    # make install clean distclean
이제 상위 Stratum time 서버를 지정하는 일과 같은 일을 한다.

    # vi /etc/ntp.conf
    server time1.sayclub.com
    server time2.sayclub.com

    driftfile /etc/ntp.drift
시작하려면 아래와 같이 root로 실행한다.

    # /usr/local/sbin/ntpdate -b time1.sayclub.com
    29 Dec 14:44:10 ntpdate[8832]: step time server 211.174.56.21 offset 0.024818 sec
    # /usr/local/sbin/ntpd -p /var/run/ntpd.pid
참고로, ntpd는 기본으로 /etc/rc.conf에 "ntpd=YES"로 설정되어 있으며, 이 설정에 따라서 /etc/rc.local에서 시작하므로 추가로 설정해 주지 않아도 이후부터는 부팅시에 자동으로 실행된다.

    # vi /etc/rc.conf.local
    ...
    ntpdate_flags=time1.sayclub.com
    ntpd=YES
    ...
만일 이렇게 NTP 서버를 실행한 후에, 약 30초 정도 후에는 이 프로그램이 제대로 작동하고 있는지를 알기 위해서 ntpq라는 프로그램을 사용하면 된다.

    # /usr/local/sbin/ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *time1.sayclub. gps.bora.net     2 u  304  512  377     0.41   -0.049    0.03
    +time2.sayclub. time.nist.gov    2 u  410  512  377     0.37    0.136    0.03
만일 위와 같이 remote 서버와, refid가 제대로 나오고 offset 값이 나온다면 정상이다.


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

Solaris
Solaris는 2.6부터 OS에 xntpd 3.95 혹은 그 이후 버젼을 포함하고 있다. 이를 이용하여 설정하는 것이 편하다. 이 작업은 /etc/init.d/xntpd 스크립트가 찾는 /etc/inet/ntp.conf 라는 설정화일만 만들면 된다.

    # vi /etc/inet/ntp.conf
    server time1.sayclub.com
    server time2.sayclub.com

    driftfile /var/ntp/ntp.drift
시작하려면 아래와 같이 root로 실행한다. 단, 현재 서버의 시각이 NTP 시각과 너무 큰 차이가 나면 시각 동기화에 너무 시간이 오래 걸리므로, 먼저 "rdate"와 같은 프로그램으로 먼저 대략적으로 동기화 시킨다.

    # rdate time1.sayclub.com
    Thu Dec  6 20:40:48 2001
    # /etc/init.d/xntpd start
참고로, ntpd는 기본으로 /etc/rc.conf에 "ntpd=YES"로 설정되어 있으며, 이 설정에 따라서 /etc/rc.local에서 시작하므로 추가로 설정해 주지 않아도 이후부터는 부팅시에 자동으로 실행된다.

만일 이렇게 NTP 서버를 실행한 후에, 약 30초 정도 후에는 이 프로그램이 제대로 작동하고 있는지를 알기 위해서 ntpq라는 프로그램을 사용하면 된다.

    # ntpq -p
         remote           refid      st t when poll reach   delay   offset  jitter
    ==============================================================================
    *time1.sayclub. gps.bora.net     2 u  304  512  377     0.41   -0.049    0.03
    +time2.sayclub. time.nist.gov    2 u  410  512  377     0.37    0.136    0.03
만일 위와 같이 remote 서버와, refid가 제대로 나오고 offset 값이 나온다면 정상이다.


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

Windows 2000 Active Directory
W2K 서버는 Kerberos 인증과 File Replication 서비스의 충돌 해결을 위하여 모든 W2K 시스템의 시각이 동기화 되어야 합니다. 이를 위해서 AD forest의 PDC로 작동하는 DC와 모두 동기화 되도록 되어 있으며, AD에 참여하는 모든 컴퓨터는 AD와 동기화 되어야 합니다.

Windows 2000에서는 Active Directory 서버의 경우 SNTP 서버로 작동이 가능하다. AD에 참여하는 멤버서버들은 기본적으로 AD 서버를 time source로 지정받으므로 net time /setsntp:... 로 일부러 지정할 필요가 없으며, 지정하지 않는 것이 바람직하다. 만일 AD의 DC나 혹은 Stand alone 서버로 도는 W2K PC에서 외부의 타임서버와 시각을 동기화하기 위해선 아래와 같이 타임서버를 지정하고 W32Time 서비스를 시작합니다.

    C:\> NET TIME /?
    ....
    C:\> NET TIME /SETSNTP:time1.sayclub.com
    The command completed successfully.

    C:\> NET TIME /QUERYSNTP
    The current SNTP value is: time1.sayclub.com
    The command completed successfully.

    C:\> W32TM -ONCE

    C:\> NET START W32TIME
물론 이렇게 하고, "서비스(Services)" 제어판에서 시작 타입을 "자동(Automatic)"으로 바꾸어 놓으면 시스템 리부팅 이후로 값은 보전됩니다. 이 작업을 자동으로 하려면, W2K ResKit에 있는 SC.EXE를 사용하면 됩니다.

    C:\> sc.exe config w32time start= auto
W32Time의 버그
Windows 2000 서버에서 여러개의 NTP 타임서버를 지정하기 위해선 아래와 같이

    C:\> NET TIME /SETSNTP:"time1.sayclub.com time2.sayclub.com"
와 같이 하면 됩니다. NTP 서버를 나열할 때는 FQDN이나 IP 어느 것이나 무관합니다. 하지만 버그(Q286541)로 인하여,

FQDN으로 할 경우 첫번째 서버만 참고하며
첫번째 서버가 응답하지 않을 경우, 서버 리스트 사이에서 루프만 돌 뿐 여전히 첫 서버로만 시도합니다.
이 문제를 피하기 위해선, 여러 서버를 나여할 경우 FQDN보다는 IP를 사용해야 합니다.
이 문제를 피하기 위해선 Q286541에 해당하는 hotfix를 구해서 설치하거나 SP3를 적용해야 합니다. 그 전에는 여러개의 타임서버 대신 하나만 지정하는 것이 바람직합니다.

Windows 2000 Time - http://www.win2000mag.com/Articles/Index.cfm?ArticleID=20195
Keeping Time with W2K - http://www.win2000mag.com/Articles/Index.cfm?ArticleID=20079
How to Configure an Authoritative Time Server in Windows - http://support.microsoft.com/default.aspx?scid=kb;EN-US;q216734
W32 Time Bug (Q285641) - http://support.microsoft.com/support/kb/articles/Q285/6/41.asp

댓글 없음:

댓글 쓰기