개요: NTP 정보와 설치


 


세부 설명:


 


차례


___________________


 


1. NTP 개념


2. NTP 서버 설치운영 모드 선택


3. NTP 클라이언트 설치


4. ntpdate 명령의 사용


5. ntpq 명령의 사용


6. 유용한 디버그 옵션


7. 일반적인 문제와 알려진 버그


8. NTP에 대한 추가 자료


 


 


1. NTP 개념


_____________


 


NTP는 컴퓨터 클라이언트나 서버의 시간을 다른 서버나 라디오 또는 위성 수신기와 같은 참조할 수 있는 타임 소스 또는 모뎀에 동기화하는 데 사용됩니다.


Coordinated Universal Time(UTC)에 동기화된 프라이머리 서버와 관련하여, NTP는 대개 LAN 상에서는 1 ms 이내, WAN 상에서는 10ms 이내의 클라이언트 정확성을 제공합니다.


NTP를 주 서버에 적용하려면 라디오나 위성 수신기 또는 모뎀이 필요합니다.


 


시간은 NTP 서버 계층을 통해 분배되는 데, 각 서버는 파일의 최상단에 위치하고 라디오 클럭과 같은 외부 타임 소스(대개 라디오 클럭)에 대한 액세스를 갖고 있는 Primary(stratum 1) 서버를 채택합니다.


stratum-2 서버는 stratum-1 서버로부터 시간을 얻고, stratum-3 서버는 stratum 2 서버로부터 시간을 얻는 식으로 진행됩니다.


동기화 루프가 장기화되는 것을 피하려면 strata의 수를 15로 제한하십시오.


네트워크가 격리되어 있어서 인터넷을 통해 다른 사용자<br의 서버에 접근할 수 없는 경우, 라디오 클럭을 구입하면 좋습니다. 다른 방법은, 알려진 프라이머리 또는 세컨더리 NTP 서버 중 하나에 맞추어 서버를 구성하는 것입니다.


 


동기화 서브넷의 각 클라이언트(서버 자체일 수도 있음)는 사용 가능한 서버 중 정확히 하나만을 선택하여 동기화하는데, 대개의 경우 자신이 접근할 수 있는 최하위 stratum 서버 중에서 택하게 됩니다. 이것은 최적의 구성이라 할 수 없으므로 NTP는 다른 전제 하에서도 운영됩니다. 다시 말하면, 각 서버의 시간은 다소 부정확할 수 있습니다. 실제로 NTP는 보다 낮은 스트라텀의 여러 시간 소스(최소 세 군데)에 접근하려고 합니다. 이렇게 하면 계약 알고리즘을 적용하여 이들 중 어느 한 곳에서 발생하는 이상 현상을 탐지할 수 있기 때문입니다. 일반적으로 모든 서버가 계약 하에 있을 경우, NTP는 선택할 서버가 최하위 stratum 인지, 가장 가까운 것인지(네트워크 지연 측면에서), 그리고 정밀성이 있는지 등의 요건과 다른 고려사항을 감안하며 이들 중 최선의 서버를 선택합니다.


 


마지막으로, 연관 모드의 문제가 있습니다. 각 서버 간의 연관에 따라 선택 가능한 여러 가지 모드가 있습니다. 연관을 symmetric-active 모드로 구성하면(일반적으로 구성 파일에서 peer declaration으로 표시됨), 필요에 따라 원격 서버로부터 시간을 얻고, 원격 서버에게 시간을 제공하고자 한다는 것을 원격 서버에 지시할 수 있습니다. 이 모드는 다양한 네트워크 경로를 통해 상호 연결된 다수의 중복된 시간 서버가 관련된 구성에 적합하며, 오늘날 인터넷 상에서 운영되는 대부분의 stratum – 1 stratum – 2 서버에 해당합니다.


연관을 클라이언트 모드로 구성하면(일반적으로 구성 파일에서 server declaration으로 표시됨), 사용자가 원격 서버로부터 시간을 얻으려 하지만 원격 서버에 시간을 공급하려 하지 않는 경우를 나타냅니다. 이 모드는 다른 로컬 클라이언트에게 동기화를 제공하지 않는 파일 서버와 워크스테이션 클라이언트에 적합합니다. 정확성과 신뢰성 요건이 엄격하지 않은 경우, broadcast multicast 모드를 사용하도록 클라이언트를 구성할 수 있습니다. 최고의 정확성과 신뢰성이 요구되는 경우, 클라이언트와 서버는 각각 클라이언트나 서버 또는 대칭 모드로 운영합니다.


 


 


2. NTP server 설치


___________________________


 


1. 다음과 같이 /etc/inet/ntp.server /etc/inet/ntp.conf로 복사하십시오.


 


# cp /etc/inet/ntp.server /etc/inet/ntp.conf


 


2. ntp.conf 파일을 편집하십시오.


 


이 파일에는 명확한 설명을 위해 많은 코멘트를 추가했습니다.


기본 파일에는 코멘트가 많지 않습니다.


 


#—– start of ntp.conf file ———————


 


# @(#)ntp.server        1.4     97/05/05 SMI


#


# /etc/inet/ntp.server


#


# /etc/inet/ntp.conf로 복사해서 편집할 수 있는 예제 파일입니다.


# 이 파일은 외부 하드웨어 클럭에 따라 로컬 클럭을 동기화하고


# NTP 멀티캐스트 네트워크 상에서


# 자신을 발표하는 서버를 위한 구성 탬플릿을 제공합니다.


#


# 다음 클럭 장치에 대해서는 RFC 1305를 참조하십시오.


# 이것은 외부 클럭 장치입니다. 다음 장치들은


# xntpd 3.4y에 의해 인식됩니다.


#


# XType 장치     이름                    설명


# ——————————————————-


# 1    (none)     LOCAL                  Undisciplined Local Clock


# 2    trak         GPS_TRAK            TRAK 8820 GPS Receiver


# 3    pst          WWV_PST             PSTI/Traconex WWV/WWVH Receiver


# 4    wwvb      WWVB_SPEC         Spectracom WWVB Receiver


# 5    goes      GPS_GOES_TRUE  TrueTime GPS/GOES Receivers


# 6    irig          IRIG_AUDIO            IRIG Audio Decoder


# 7    chu        CHU                        Scratchbuilt CHU Receiver


# 8    refclock- GENERIC               Generic Reference Clock Driver


# 9    gps         GPS_MX4200         Magnavox MX4200 GPS Receiver


# 10   gps        GPS_AS2201         Austron 2201A GPS Receiver


# 11   omega   OMEGA_TRUE       TrueTime OM-DC OMEGA Receiver


# 12   tpro        IRIG_TPRO            KSI/Odetics TPRO/S IRIG Interface


# 13   leitch      ATOM_LEITCH       Leitch CSD 5300 Master Clock Controller


# 14   ees        MSF_EES              EES M201 MSF Receiver


# 15   gpstm     GPS_TRUE           TrueTime GPS/TM-TMD Receiver


# 17   datum     GPS_DATUM         Datum Precision Time System


# 18   acts        NIST_ACTS           NIST Automated Computer Time Service


# 19   heath      WWV_HEATH        Heath WWV/WWVH Receiver


# 20   nmea      GPS_NMEA          Generic NMEA GPS Receiver


# 22   pps        ATOM_PPS           PPS Clock Discipline


# 23   ptbacts   PTB_ACTS           PTB Automated Computer Time Service


#


# 일부 장치는 “fudge” 인자의 혜택을 받습니다. xntpd


# 문서를 참조하십시오.


 


# 피어 또는 서버입니다.  “XType”


# 위 테이블의 값으로 교체하십시오.


 


#로컬 클럭 장치를 추가하는 경우,


#해당 드라이버는 다음과 같은 지침에 의해 식별됩니다.


#서버 127.127.XX.0에서 127.127 NTP에게 이것은 원격 네트워크 피어가 아닌


#로컬임을 지시하고, XX NTP distribution에서 설명된


#클럭 유형이라는 것을 지시합니다. 이러한 config file의 제한 지침은


#이 호스트가 지정된 두 IP 주소에만 이야기를 하며


#그 밖의 다른 곳은 신뢰하지 않으므로 어디에도


#시간을 제공하지 않는다고 설명하고 있습니다.


 


#다음 세 줄은 기본값으로 제공되는 것이고 사용자의 설치에 맞추어 변경하십시오.


 


server 127.127.XType.0 prefer


fudge 127.127.XType.0 stratum 0


 


broadcast 224.0.1.1 ttl 4


 


#세 가지 유형의 시간 서버


# 1. peer host_address [ key # ] [ version # ] [ prefer ]


#       로컬 서버가 호스트 주소로서 지정된 원격 서버와


#       함께 symmetric active 모드로 운영된다는 것을 지정합니다.


#       , 로컬 서버는 원격 서버에 맞추어 동기화할 수 있습니다.


# 2. server host_address [ key # ] [ version # ] [ prefer ] [ mode # ] server


#       로컬 서버가 command에서 이름이 지정된


#        원격 서버와 함께 “client” 모드로 운영된다는 것을


#         지정합니다. 이 모드에서 로컬 서버는 원격 서버에 맞추어


#         동기화될 수 있지만, 원격 서버는


#         로컬 서버에 동기화할 수 없습니다.


# 3. broadcast host_address [ key # ] [ version # ] [ ttl # ]


#       로컬 서버가 “broadcast” 모드로 운영된다는 것을


#         지정합니다. 이 모드에서 로컬 서버는 command에서


#         지정된 broadcast/multicast 주소의 클라이언트 무리에게


#          정기적인 broadcast 메시지를 전송합니다.


#


#         key       주소에 전송된 모든 패킷이


#                   지정된 키 번호를 사용하여 암호화된


#                   인증 필드를 포함한다는 것을 나타냅니다.


#                   번호의 범위는 unsigned 32 비트 정수입니다.


#                   기본값으로 암호화 필드는


#                   포함되어 있지 않습니다.


#         version   outgoing  NTP 패킷에 사용되는 버전 번호를


#                   지정합니다. Version 1, 2 3을 선택할 수


#                   있습니다. 기본값은 버전 3입니다.


#         prefer    호스트를 선택된 호스트로 표시합니다.


#                   동기화를 위해 다른 비교 가능한 호스트보다 이


                    호스트가 선택됩니다.


# 전체 목록은 xntpd에 관한 매뉴얼 페이지를 참조하십시오.


 


NTP stratum 1 서버에 대한 ntp.conf 파일 예제:


 


server 127.127.5.0


fudge 127.127.5.0 stratum 1


 


피어 모드의 NTP 서버에 대한 ntp.conf 파일 예제:


 


peer ntppeerserver


 


서버 모드의 NTP 서버에 대한 ntp.conf 파일 예제:


 


server sometimeserver prefer


server sometimeserver


server sometimeserver


# 언제나 로컬 클럭으로 되돌아갈 수 있습니다.


server 127.127.1.0


fudge 127.127.1.0 stratum 9


 


자신의 ntp.conf 파일을 생성했다면, 이를 저장한 다음 xntpd daemon을 시작하십시오.


# /usr/lib/inet/xntpd &


 


 


3. NTP 클라이언트 설치


____________________________


 


1. /etc/inet/ntp.client에서 /etc/inet/ntp.conf로 복사하십시오.


 


# cp /etc/inet/ntp.client /etc/inet/ntp.conf


 


기본 ntp.client 파일은 multicast를 사용하여 NTP 업데이트를 수신합니다. NTP 클라이언트가 이러한 업데이트를 수신할 수 있는 장소를 제한하려는 경우, 이것을 broadcast로 변경하십시오. (Broadcast 패킷은 다른 서브넷에 전달되지 않는 반면 multicast 패킷은 전달됩니다).


 


#


# /etc/inet/ntp.client


#


# /etc/inet/ntp.conf로 복사할 수 있는 예제 파일. 이 파일은


# 서버가 ntp multicast 네트워크 상에서 NTP 패킷을 제공하도록


# 수동적으로 기다리는 호스트를 위한 구성을 제공합니다.


#


 


multicastclient 224.0.1.1


 


2. xntpd daemon을 시작하십시오.


 


# /usr/lib/inet/xntpd -m &


 


(NTP 업데이트를 수신하는 방법으로 broadcast를 사용하는 경우 인수로서 -b를 사용하므로, xntpd daemon -m 인수와 함께 시작합니다.)


 


 


4. ntpdate 명령의 사용.


_____________________________


 


     ntpdate 유틸리티가 로컬 날짜와 시간을 설정합니다. 이 유틸리티는 정확한 시간을 결정하기 위해, 인수로 주어진 호스트 상에서 Network Time Protocol(NTP) 서버를 폴링합니다. 이 유틸리티는 로컬 호스트에서 루트로 실행되어야 합니다.  이 유틸리티는 각 서버로부터 샘플을 얻어 표준 NTP 클럭 필터와 선택 알고리즘을 적용하여 이들 중 최선의 값을 선택합니다.


 


     이 유틸리티는 daemon 실행의 대안으로서 cron(1M)으로부터 정기적으로 실행할 수 있습니다. 한 두 시간마다 한번씩 실행하면 충분히 정확한 시간을 얻을 수 있으므로 클럭 스테핑이 필요하지 않습니다.


 


 


이미 xntpd daemon을 실행하고 있다면 ntpdate 명령을 사용할 수 없습니다.


이 명령을 실행하려고 하면 다음과 같은 오류가 발생합니다.


 


# ntpdate champ


23 Sep 14:55:52 ntpdate[19780]: the NTP socket is in use, exiting


 


또한 ntpdate 명령을 실행하려면 루트 사용자가 되어야 합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다.


 


% ntpdate champ


23 Sep 14:44:36 ntpdate[19743]: bind() fails: Permission denied


 


ntpdate 명령으로 서버를 지정할 경우, 이름을 IP 주소로 전환할 수 있도록 사용자의 naming service를 반드시 실행하십시오. 그렇지 않으면 다음과 같은 오류가 발생합니다.


 


# ntpdate tiger


23 Sep 15:20:43 ntpdate[20041]: no server suitable for synchronization found


 


이 예에서 ntp 서버 “jedi”를 동기화되는 서버로 지정합니다.


# ntpdate jedi


23 Sep 17:12:21 ntpdate[20963]: adjust time server 129.148.192.147 offset


0.001422 sec


 


 


5. ntpq 명령의 사용


___________________________


 


ntpq는 현재 상태에 대해, 권장된 NTP 모드 6 제어 메시지 형식을 수행하는 NTP 서버에게 질의합니다. 현재 상태의 변경을 요청할 수도 있습니다. 프로그램은 대화형 모드로 실행되거나 명령줄 인수를 사용하여 제어될 수 있습니다. raw and pretty-printed output 옵션을 사용할 수 있게 하면서 임의 변수에 대한 읽고 쓰기 요청을 조립할 수 있습니다. ntpq는 서버에 복수 쿼리를 전송함으로써 피어 리스트를 일반 형식으로 얻고 인쇄할 수 있습니다.


 


NTP 서버에게 피어 리스트에 관해 질의하는 방법:


 


# ntpq -p jedi


     remote           refid      st t when poll reach   delay   offset    disp


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


*eastpager1.East dollar.East.Sun  3 u   97   64  376     2.03    4.564    2.33


 LOCAL(0)        LOCAL(0)         5 l   19   64  377     0.00    0.000   10.01


 NTP.MCAST.NET   0.0.0.0         16 –       64    0     0.00    0.000 16000.0


 255.255.255.255 0.0.0.0         16 –       64    0     0.00    0.000 16000.0


+sunswe.Sweden.S carbon.UK.Sun.C  3 u   48   64  377   156.80    6.367    0.41


+canadamail1.Can franc.East.Sun.  3 u   12   64  377    29.48   13.528   29.65


-cosmo.Eng.Sun.C rolex.East.Sun.  2 u   98  128  377    84.08   -1.069    0.87


-centralpager1.C venus.EBay.Sun.  3 u   41  128  377    68.73  -19.219    6.70


 


remote – 원격 피어


refid – 피어가 동기화되는 호스트


st – stratum 번호


t – 유형, unicast, mulitcast, local   (- = 알 수 없음)


poll – 초 단위 폴링 간격


reach – 도달가능성 레지스터


 


* 원격에서 현재 선택된 피어를 나타냅니다.


+ 호스트가 동기화에 대한 수락 가능한 피어이지만 수락되지 않았음을 나타냅니다


수락 불가능


 


 


6. 유용한 디버깅


_________________________


 


“server” 모드(연관)를 사용하는 경우, ntp.conf 파일에 최소한 세 개의 다른 서버를 두는 것이 바람직합니다. 구성하는 서버가 인터넷 상에서 멀리 떨어져 있고 Firewall을 설치했다면, Firewall 상에서 사용자의 NTP 서버로부터 포트 123 NTP 서버가 들어오고 나갈 수 있도록 허용하는 규칙을 작성하십시오. 일반적으로 NTP 서버를 ntp.conf에 나열된 시간 서버에 동기화하는 데에는 약 5분 정도가 소요됩니다. 동기화가 끝날 때까지 다른 NTP 클라이언트에게 broadcast/multicast NTP 패킷을 보내지 마십시오. 일반적으로 이들 패킷은 64초 간격마다 전송됩니다.


 


xntpd ntpdate 명령은 모두 debug 옵션을 가지고 있지만, ntpdate -d를 사용하는 경우작동은 끝까지 수행되지만실제로 네트워크 폴링은 수행하지 않으므로 주의해야 합니다.


 


다음 예에서는 ntp.conf에 대해 ntp.client를 사용하고 xntpd -d를 활성화했습니다.


 


# /usr/lib/inet/xntpd -d &


20743


# Solaris tick = 10000


kernel vars: tickadj = 625, tick = 10000


adj_precision = 1, tvu_maxslew = 61875, tsf_maxslew = 0.0fd70a37


create_sockets(123)


bind() fd 19, family 2, port 123, addr 00000000, flags=1


bind() fd 20, family 2, port 123, addr 7f000001, flags=0


bind() fd 21, family 2, port 123, addr 8194c097, flags=1


init_io: maxactivefd 21


report_event: system event ‘event_restart’ (0x01) status ‘sync_alarm,


sync_unspec,


1 event, event_unspec’ (0xc010)


input_handler: fd=19 length 48 from 8194c093 129.148.192.147


input_handler: fd=19 length 48 from 8194c093 129.148.192.147


input_handler: fd=19 length 48 from 8194c093 129.148.192.147


input_handler: fd=19 length 48 from 8194c093 129.148.192.147


input_handler: fd=19 length 48 from 8194c093 129.148.192.147


input_hander: fd=19 length 48 from 8194c093 129.148.192.147


input_handler: fd=19 length 48 from 8194c093 129.148.192.147


 


(129.148.192.147 is the host “jedi”)


 


또한 multicast broadcast NTP 패킷을 기대하면서 동시에 포트 123(ntp) 상에서 ntp 클라이언트에 대한 snooping을 시작했습니다.


 


# snoop -d le0 port 123


device /dev/le (promiscuous mode) 사용


 slave-192-1 -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:42:15 1999)


       champ -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:42:46 1999)


        jedi -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:42:49 1999)


        jedi -> BROADCAST    NTP  broadcast (Thu Sep 23 16:42:50 1999)


 slave-192-1 -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:43:19 1999)


       champ -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:43:50 1999)


        jedi -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:43:53 1999)


        jedi -> BROADCAST    NTP  broadcast (Thu Sep 23 16:43:54 1999)


 slave-192-1 -> NTP.MCAST.NET NTP  broadcast (Thu Sep 23 16:44:23 1999)


 


 


7. 알려진 버그


______________


 


4060650  xntpd가 루핑되면서, cpu에 부하를 주고 메모리도 소진하여 컴퓨터를 사용할 수 없게 만듭니다.


 


4097366  외부 클럭 하드웨어는 xntpd에 의해 지원되지 않습니다.


 


4192098  xntpd는 일부 Ultra 5에서 “c011 sync_alarm”과 동기화되지 않습니다.


 


4130698  Solaris 2.6에 대한 ntp 설치/업그레이드 지시사항


 


4061948  SPARC 전용: 2.5.1 SUNWxntp Package Solaris 2.6과 호환되지 않습니다.


         (E10k 시스템 전용)


 


 


8. NTP에 대한 추가 자료


________________________________


 


http://www.eecis.udel.edu/~ntp/


http://www.con.wesleyan.edu/~triemer/network/ntp/ntp_tcp.html (contains RFC list)


 


 


 


 

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다