전산실이나 전산 장비들에 이벤트가 발생 시 장애처리를 위한 log 시간 확인은 가장 중요한 일 중에 하나입니다. 그래서 이번 시간에는 네트워크에서 장비들의 시간을 동기화시켜주는 NTP 서버의 개념 및 구성하는 방식 , 동작원리 등에 대해서 알아보도록 하겠습니다.
1. NTP 서버 ( Network Time Protocol )
: 네트워크로 구성된 환경에서 운영되는 시스템들의 시간을 동기화하기 위한 규약입니다. 서버나 네트워크 장비들이 NTP서버를 통해 시간을 받아와서 , 정확하게 맞는 시간을 같기 위해 설치합니다.
서버라고 하면 헷갈릴수 있으니 " 시각동기화 장치"라고도 부릅니다.
★ NTP서버를 사용하는 이유
: 일반적으로 전산실에서 서버나 네트워크 모든 장비들을 자체적으로 시간을 설정하는데, 이렇게 설정한 시간은 일정 시간이 지나면서 조금씩 틀어지게 됩니다. 아니면 외부 서버 시간 동기화를 해주는 time. bora. net를 이용하여도 되는데 이 외부 사이트 시간 동기화를 사용하려면 인터넷이 되어야 합니다. 하지만 내부에서 인터넷을 보안상 차단시켜놓은 경우도 많고 , 외부의 공격에 취약하기 때문에 사용하지 않습니다.
※ 장비들간 시간이 맞지 않으면
1. 내부 시스템 장애의 원인을 파악할 때 서버나 네트워크 장비의 시간 오차로 Log 시간이 틀어져서 정확한 원인 파악에 어려움을 겪을 수 있습니다.
2. CCTV 영상을 저장하는 서버라고 했을때 시간이 틀어지면 , 어떤 사건이 일어나서 영상과 시간을 확인할 때 큰 문제가 발생할 수 있겠죠? (교통사고라던가, 사건사고가 터진 CCTV라던가요) 이런 경우를 대비하여 내 사이트에서만 사용 가능한 NTP 서버를 따로 두어 , 시간 동기화를 시킵니다.
2. NTP 서버 구축 구성도
NTP 서버는 안테나를 통해 위성의 시간을 받아오고 , 그 시간을 NTP서버에 표시하게 됩니다. 그러면 다른 내부 서버들이 NTP를 설정할 때 NTP 서버의 IP를 잡아주면 위성을 통해 받은 시간을 모든 서버들이 가져가서 정확한 시간 동기화를 사용할 수 있게 되는 원리입니다.
1. GPS 안테나
: 위성을 통해서 시간을 받습니다. 보통 동축 케이블로 NTP 서버와 연결
2. 낙뢰방지기
: 안테나가 외부에 설치되기 때문에 낙뢰에 대비한 장치
3. 동축 케이블
: 안테나에서 NTP 서버까지 동축케이블을 이용해서 연결
4. NTP 서버
: 위성에서 보낸 시간을 안테나에서 받아 시간을 NTP 서버에 표출
※ NTP 서버 동작 원리
1. NTP 서버 ethernet포트에 내부에서 사용하는 IP Address를 설정
2. 내부 서버들에서 NTP를 강제로 NTP 서버로 설정
3. 내부 네트워크 장비들 NTP 설정
4. 안테나를 통해 받은 위성의 시간을 NTP 서버에서 동기화하고 , 그 시간을 다른 서버들이 동기화 내부 통신에 문제가 발생하지 않는 한 시간이 틀어지지 않습니다.
NTP는 대부분의 Linux 및 Windows 기반 운영 체제에서 구현되며 제어 시스템에서 널리 사용됩니다.
- 그림 1: NTP 프로토콜의 메시지 교환 -
NTP 프로토콜에 의해 수행되는 프로세스는 다음과 같습니다.
- 서버와 요청자 사이의 시간 지연이 17분보다 큰지 확인하는 첫 번째 메시지(동기화 요청)가 클라이언트 측 T0 순간에 전송됩니다.
- 메시지는 T1 순간에 서버에 도착합니다.
- 시간 지연이 17분보다 길면 프로세스가 계속되지 않고 동기화 없이 종료됩니다.
- 그러나 시간이 17분 미만이면 동기화는 계속됩니다. 서버는 T2 순간의 시간과 함께 메시지를 보냅니다.
- 패킷은 T3 순간에 클라이언트에 수신됩니다. 서버 시간이 128ms에 도달할 때까지 매분마다 점진적인 시간 조정이 이루어집니다. 두 클록 사이의 지연(θ)은 다음과 같이 계산됩니다.
- 128ms부터 시작하여 지연 시간이 17분마다 조정됩니다.
- 그림 2: NTP 메시지 흐름 -
두 장치가 서로 동기화되면 정확도가 약 128ms로 설정되므로 두 장치 사이에 시간 지연이 발생합니다. 다중 장치 체인 동기화는 16회 이후 약 2초(16 x 0.128 = 2.048초)의 누적 시간 지연으로 인해 부정확해집니다.
이 프로토콜의 한 가지 장점은 소스의 신뢰성을 보장하기 위해 보안 연결을 위해 서버와 클라이언트 간에 암호화를 구현하는 기능입니다.
현재 최신 버전은 IPv4와 IPv6를 모두 지원하고 이전 NTPv3 버전과 호환되는 NTPv4입니다. 이 새 버전에는 키 인증 시스템이 포함되어 보안이 강화되었습니다.