NTP(Network Time Protocol) 개념

NTP는 Network Time Protocol의 약자로, 네트워크 상에서 컴퓨터들이 정확한 시간을 동기화하기 위해 사용되는 프로토콜이며, NTP는 전세계적으로 분산된 컴퓨터들 간에 정확한 시간 정보를 동기화하여 서로 다른 시스템 간에 시간의 일관성을 유지하고 정확한 타임 스탬프를 생성하는 데 도움을 줍니다.

 

 

Chrony NTP 서버 구축

 

NTP서버를 사용하는 이유

  • 네트워크 상의 디바이스들 간의 시간 일관성 유지
    • 네트워크 상의 다양한 디바이스들은 각자의 시계를 가지고 있고, 이 시계들은 제조사, 하드웨어, 운영 체제 등에 따라 정확도와 정밀도가 다를 수 있는데, NTP를 사용하면 네트워크 상의 모든 디바이스들이 동일한 시간을 참조하여 일관된 타임 스탬프를 생성할 수 있습니다.
  • 로그 및 이벤트 관리
    • 서버 로그, 보안 이벤트, 트랜잭션 로그 등과 같은 다양한 로그 정보에는 정확한 타임 스탬프가 필요합니다.
      NTP를 사용하면 이러한 로그들이 정확한 시간 순서로 기록되어 분석 및 문제 해결이 용이해집니다.
  • 보안 및 규정 준수
    • 많은 보안 프로토콜 및 규정은 시간 동기화를 요구하거나 권장합니다.
      예를 들어, 보안 인증, 암호화 프로토콜, 서버 및 클라이언트 간의 통신 시간 동기화 등에 정확한 시간이 필요합니다.
  • 분산 시스템 및 클러스터 관리
    • 여러 대의 서버로 구성된 분산 시스템이나 클러스터에서는 각 노드가 동일한 시간을 유지해야 합니다.
      일부 애플리케이션은 정확한 타임 스탬프를 필요로 하며, 이를 위해 NTP를 사용하여 클러스터 내의 모든 노드를 동기화할 수 있습니다.
  • 합리적인 서비스 제공
    • 시간에 민감한 서비스, 예를 들어 트랜잭션 처리, 상거래 플랫폼, 실시간 커뮤니케이션 등에서는 정확한 타임 스탬프가 중요합니다.
      NTP를 통해 정확한 시간을 유지함으로써 사용자에게 높은 서비스 품질을 제공할 수 있습니다.

 

NTP 서버 구축

# NTP 패키지 설치
[root@localhost ~]# yum -y install ntp

# NTP 구성 파일 수정
[root@localhost ~]# vi /etc/ntp.conf
# 기존의 서버 설정 주석 처리 또는 삭제
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst

# time.bora.net 서버 추가 or 알고 있는 다른 TIME 서버 추가
server time.bora.net iburst
#위 설정파일 설정 후 데몬 재시작
systemctl restart ntpd

#방화벽이 설정되어 있을 경우 방화벽 허용
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload

#NTP 서버 동작 확인
ntpq -p
ntp-p 결과

ntp-p 결과 예시

ntp -p 결과 해석

열 이름 설명
remote NTP 서버의 주소 또는 호스트 이름
refid NTP 서버가 참조하는 상위 계층 시계의 주소 또는 식별자
st NTP 서버의 계층 수준 (낮을수록 정확도가 높음)
t NTP 서버의 유형 (u: 구백 서버, 나머지는 여러 유형을 나타냄)
when 마지막으로 서버에 요청을 보낸 시간으로부터 경과한 시간
poll 클라이언트가 서버에게 요청을 보내는 주기
reach 서버에 대한 최근의 성공적인 응답 횟수
delay 서버와의 통신 지연 시간
offset 클라이언트와 서버 간의 시간 차이
jitter 클라이언트와 서버 간의 시간 흔들림

 

NTP 서버 구축 스크립트

필요 시 아래 스크립트를 커스텀하여 활용하시면 됩니다.

#!/bin/bash

# NTP 서버 설치
yum install -y ntp

# NTP 설정 파일 수정
cat <<EOL > /etc/ntp.conf
# NTP 서버 구성 파일

driftfile /var/lib/ntp/drift

restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1

# 공개 NTP 서버 사용 (여러 서버 중 선택 가능)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys

# NTP 서버 동작 확인
disable monitor
EOL

# 방화벽 설정 (선택적)
firewall-cmd --permanent --add-service=ntp
firewall-cmd --reload

# NTP 서비스 재시작
systemctl restart ntpd

# NTP 서비스 활성화
systemctl enable ntpd

# 스크립트 종료 메시지
echo "NTP 서버가 구축되었습니다."

 

NTP 클라이언트 연동

# NTP 패키지 설치
yum install -y ntp

# NTP 설정파일 수정
vi /etc/ntp.conf

# /etc/ntp.conf 설정 파일 server 라인에 NTP 서버의 주소를 추가
server [your_ntp_server_ip]

# 서비스 재시작
systemctl restart ntpd
systemctl enable ntpd

# 동기화 확인
ntpq -p