NTP (1)

Feature 2014.11.14 12:43

<>NTP




Network Time Protocol



NTP란 패킷을 주고받는 장비와 장비 간에 시간 정보(Time)를 동기화하기 위한 프로토콜을 말한다.

1985년에 개발되었으며, 가장 오래된 인터넷 프로토콜중 하나이다. 표준 시간을 생성하는 장비부터 하위 타임서버, 그리고

호스트 종단장비까지 각 상하위서버를 계층화(Stratum Layer)하여 관리하도록 만들어졌다.

현재 권장 표준은 NTPv4 (RFC 5905, public 1/100sec, private 1/200ms accuracy), 시스코 기본값은 NTPv3을 사용한다.

UDP 포트 123




1. NTP 계층화구조


   (1) Stratum 0 


   원자시계, GPS 시계, 기타 시간정보를 최초로 생성하는 Stratum-0 Devices 가 여기에 해당된다.

   NTP 서버로 동작하는 일반적인 하드웨어들은 기본적으로 수동으로 0을 설정할수 없다.

   자신이 보유한 시간정보를 Stratum 1 장비에게 제공한다. Stratum 0 장비는 인공위성등 우주공학이 발전한 미국과 

   러시아등이 많이 보유하고 있다. 



   위 사진은 미 해군이 보유하고 있는 Stratum 0 Master Clock 장비


   (2) Stratum 1


   Stratum 1 은 Stratum 0 에 다이렉트로 연결된 대형 서버장비들을 의미한다. NTP서버에서 긁어올수 있는 가장 정확한

   시간정보를 제공하며(Stratum 0 에 가장 근접한), Stratum 2로 NTP를 동기화해준다. 일반 클라이언트가 가져올수있는

   가장 정확한 시간정보. 


   (3) Stratum 2 


   Stratum2 는 다수의 Stratum 1으로부터 받은 NTP 정보를 비교하여 정확한 정보를 선택하고, 이를 같은 레이어 Stratum 2 

   장비들과 공유하고, 하위 레이어로 동기화 한다. Stratum 1 과 2 Device들은 보통 서로 NTP peer 관계를 맺고 각자가 가진

   정보를 비교하여 정확도를 높인다.


   (4) Stratum 7


   Cisco Device 에서 ntp master 설정시 기본값으로 7로 설정된다. 여기서 해당장비가 외부서버로 NTP 를 긁어오지 않는다고

   가정할경우, 자기 자신이 가진 ntp master 정보를 긁어옴으로써 stratum 8로 동작하게 된다.


   (5) Stratum 16


   가장 하위값으로 16으로 설정시 NTP 서버로 동작할수 없다. (하위 값이 존재하지 않으므로) 

   일정시간 NTP 요청에 응답하지 않거나, 라우팅 연결성 확보 실패 혹은 인증에 실패하는경우 16으로 설정되고 비활성화된다.



2. Cisco Device Operation Mode


   일반적으로 NTP 표준은 5개 정도의 구동 모드를 지원하지만 시스코는 이중 3가지만을 지원한다.

   네트워크환경에 따라 오퍼레이션 모드도 변형하여 사용해야 할것이다.


   (1) Client mode


   일반적으로 가장 많이 사용하며 Time정보를 제공하는 서버로부터 NTP 관련정보를 긁어오는 방식이다.

   ntp server 명령을 통해 상위 NTP 서버를 지정하고, 서버의 시간정보를 가져와 동기화 한다.

   서버는 UDP 포트를 통한 Layer 4통신이 가능하도록 IP를 비롯한 하위 레이어와의 라우팅이 가능해야 한다.


   (2)  Symmetric Active Mode


   NTP Peer 명령어를 통해 구현하며, 보통 Stratum 1 혹은 2 장비들이 같은 Strata 레이어의 NTP 디바이스와 시간정보를 비교하

   여 좀더 정확한 시간정보를 구축하도록 한다. 상위 Stratum 장비들간에 설정되며, 일반적인 오피스 네트워크나 소규모 네트워

   크 장비들은 보통 사용하지 않는다.


   (3) Broadcast Client Mode


   NTP 정보를 broadcast 광고하는 서버들로부터 자동으로 획득하도록 하는 방식이다. 주로 10대 이상의 장비를 동시에 동기화

   하거나 아주 정확한 타임정보가 필요하지는 않은 환경에서 적용한다. CPU나 메모리 부하를 가장 적게 먹고 또한 대역폭 점유

   도 낮은 편이나, 정확도가 감소한다. 현재는 장비나 넷환경이 좋아져 거의 사용하지 않는다.




3. 시간 정보, NTP 동기화 정보확인


   (1) show clock - 소프트웨어 설정 시간을 보여준다.

                                 시간앞에 표시가 없을시 동기화가 성공했거나 소프트웨어 시간을 수동으로 설정한경우

                                 * 표시는 동기화되는 정보를 받지 못했거나, 수동으로 설정된적도 없는 경우 (초기값)

                                 . 표시는 시간정보가 동기화된적은 있으나, NTP서버와 통신이 끊어져서 현재 동기화가 중단된경우

   (2) show calendar - 장비 내부 하드웨어 (밧데리를 사용한) 설정 시간을 보여준다.

   (3) show clock detail - 소프트웨어 시간과 섬머타임등의 정보 그리고 타임소스 (manual config, NTP etc) 등을 보여준다.

   (4) show ntp status -  NTP 동기화 관련 정보

   (5) show ntp association (detail)  - NTP 정보를 주고받는 서버등의 장비를 보여준다, NTP master, NTP candidate 정보등 

                                                                  * 동기화된 서버 , + candidate, ~ configured                                                            



4. Public NTP Master Server List

   

   http://www.ntp.org/ - NTP 파운데이션

   http://support.ntp.org/bin/view/Servers/StratumOneTimeServers - 지역별, 정책별Stratum 1 서버 리스트를 보여준다. 

   http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers - Stratum 2 서버 리스트




5. Configuration



   R1(config)# ntp server 100.1.1.1 {key} {number}


   NTP 시간정보를 긁어올 서버를 지정한다. 서버는 상위 Stratum으로 동작하며, 복수의 서버를 지정할경우 한개의 서버로 동기

   화되고 백업서버는 ntp candidate로 지정된다. 복수개의 NTP 서버중 마스터가 선정되는 순서는 (1) stratum이 낮은순 

   (2) stratum이 동일할경우 manual 설정 서버가 broadcast client방식보다 우선한다. (3) 위 사항도 모두 동일한경우 먼저 NTP 

   패킷을 수신한 쪽의 서버를 등록한다. (NTP server 이중화).



   R1(config)# ntp server 100.1.1.1 prefer


   prefer 명령은 동일한 Stratum 서버가 다수 존재할경우 이중 마스터 서버를 수동으로 선정할수 있게 하기위한 명령어이다.

   반드시 Stratum이 동일한경우에만 해당하며, Stratum이 다른경우 prefer 설정유무에 상관없이 stratum이 작은값을 선호한다. 



   R1(config)# ntp master {1-15}


   해당장비가  NTP 마스터서버로 동작한다.Stratum 은 기본값 7로 설정된다. (1-15 설정가능). 위에서 설명했듯 어느것을 기준

   으로 하냐에 따라, 7도 될수 있고 8도 될수 있다. 추가로 본인의 장비가 NTP 마스터서버로 동작하게되면 되도록 보안에 신경을

   써야  한다. 이는 NTP가 개발된지가 오래된만큼 보안상 취약점이 많이 존재하기 때문인데, 2014년초 프랑스 웹을 거의 마비시

   킨  NTP monlist 어택같은 디도스공격도 monlist 기능의 취약점을 이용한 패킷증폭공격이었다. 

   NTP server와 NTP master가 동시에 설정되었을경우, 두개의 NTP 정보 (외부서버정보와 로컬타임정보)가 서로 경쟁한다.

   마스터로 지정되지 않아도 외부에 NTP 정보를 동기화해주는것은 가능하다.

  


   R1(config)# ntp max-association 1


   Association 을 맺는 서버의 갯수를 1로 제한한다. (1-4249967295 사이에서 설정)


  

   R1(config)# ntp logging


   로깅 기능 활성화. 테스트 환경이나 트러블슈팅시에 필수적이다.

   


   R1(config)# ntp clock-period 00000000


   ntp clock-period는 하드웨어 Tick을 보정하는 장비별 자동설정값이다. 따라서 수동설정을 할필요가 없다.

  모델이 다른 타장비로 설정값을 복사할시에도 이값은 제외하도록 한다. 



   R1(config)# ntp update-calendar


   NTP로 동기화된 software time을 hardware time으로도 동기화한다.

   하드웨어 시간정보는 장비부하나 기타 외부 환경에 의해 정확도가 점차 떨어지므로 소프트웨어 시간정보를 주기적으로 받아

   오도록 하는것이 권장된다.



   R1(config)# ntp access-group


   스탠다드 ACL을 이용하여 출발지 IP별로 NTP 쿼리 요청을 차단하거나 서버가 외부 디바이스로 동기화해주는 기능을 필터링

   한다. 보통은 인증기능을 사용할경우 더 나은 보안효과를 가질수 있기 때문에, 실제 잘 사용되지 않는다.

   peer : 모든 요청, 동기화 허용

   serve : 외부 디바이스로 NTP 동기화를 하거나, 로컬장비에서 나가는 쿼리를 허용한다.  로컬장비 동기화는 허용안됨

   serve-only : 외부 디바이스로 NTP 동기화만 허용한다.

   query-only : 로컬장비의 쿼리 요청만 허용한다. 

   실상 이부분은 ACL의 permit, deny 명령어를 통해 직접 설정을 해보는게 감이 바로 온다.



   R1(config)# ntp source lo0


   장비의 NTP 소스 주소를 명시한다. 이는 외부에서 peer 나 server를 등록할시에 해당장비의 소스주소를 설정해야만 NTP 

   프로토콜을 주고 받게 된다. 이설정을 하여도 인터페이스에 ntp broadcast를 설정할경우엔 외부에서 서버의 소스주소가 아닌

   해당 인터페이스 주소가 ntp association에 등록된다.



   R1(config)# ntp trusted-key

   R1(config)# ntp authenticate

   R1(config)# ntp authenticaion-key {keynumber} md5 {WORD}


   NTP 인증을 위한 명령어들이다. 서버에서 인증기능을 활성화 (ntp authenticate)하고 인증키를 생성할시 (ntp authenticate

   -key) 해당 서버와 동기화를 원하는 클라이언트에서도 마찬가지로 인증기능을 활성화하고 동일한 인증키를 적용해야 한다.

   그리고 ntp trusted-key명령을 통해 신뢰하는 서버의 키값을 지정해야하며, ntp server {주소} {키값} 도 모두 동일하게 적용

   한다. 인증키 해싱은 MD5만 현재 지원한다.



   R1(config-if)# ntp broadcast {client} {ver} {key} {destination)

   R1(config-if)# ntp multicast {client} {ver} {key} {TTL} {group address}


   브로드캐스트, 멀티캐스트로 NTP를 주고받도록 인터페이스에서 설정한다. 동기화될 클라이언트는 client명령어를 설정해서

   작동하며, 위의 인증값도 모두 설정을 마쳐야 비로소 동기화가 가능하다. 멀티캐스트는 특정 그룹주소로 NTP 패킷을 방송하며

   서버와 클라이언트가 이미 멀티캐스트 통신(PIM)이 가능한 환경이어야 동기화된다. 

   여기서 broadcast, multicast NTP 클라이언트로 설정되어 association을 받을경우, 외부와 ntp server 혹은 ntp peer 등의

   패시스 피어링이 불가능하다. 수동으로 NTP 정보를 받아와야 할경우 no ntp 명령으로 초기화후 다시 설정한다.

   

   NTP 설정은 시스코 IOS 종류에 따라 추가되거나, 설정자체가 상이한 부분이 많이 존재하므로 검색을 통해 확인하는것이 

   가장 빠르다.



'Feature' 카테고리의 다른 글

Netflow  (0) 2014.12.31
NTP (2) Configuration  (0) 2014.11.27
NTP (1)  (0) 2014.11.14
IGMP  (0) 2014.10.08
Flash memory 파일관리  (0) 2014.06.10
Prefix-list  (0) 2014.05.06