OS/Linux

[NTP] NTP 서버 및 클라이언트 서버 설정하기

yeit 2023. 8. 20. 17:47
728x90

구성 환경

  • OS : ubuntu 18.04
  • Master Server : 신뢰할 수 있는 시간 소스에서 시간 정보를 수집하고, 네트워크 내에서 기준 시간을 유지하는 역할
  • Client Server : 마스터 서버로부터 시간 정보를 요청하고, 이를 통해 자체 시계를 동기화하여 정확한 시간을 유지
  • 클라이언트 서버 -> 마스터 서버 -> 국내 타임 서버(ex)time.bora.net를 바라보게 설정

Network Time Protocol 란?

  • NTP는 Network Time Protocol의 약자
  • 네트워크를 통해 컴퓨터 및 기기들이 정확한 시간 정보를 동기화하는데 사용되는 프로토콜
  • UDP 기반으로 작동하는 프로토콜, 123 포트 사용

국내 타임 서버 리스트

  • ntp.kornet.net
  • time.bora.net
  • time.kriss.re.kr
  • time.nuri.net
  • time.nist.gov
  • time.windows.com

 

NTP 마스터 서버 설정

1. ntp 서버 설치

ntp 패키지를 설치하여 ntp 서버 소프트웨어를 가져온다.

# 시스템 패키지 업데이트
$ sudo apt update -y

#Ubuntu 18.04에 NTP 서버 설치
$ sudo apt install ntp

#버전 확인
$ sntp --version

2. 구성 파일 편집

마스터 서버는 time.bora.net을 바라보게 설정

$ vi /etc/ntp.conf
#pool 0.ubuntu.pool.ntp.org iburst   => 주석 처리해주고 밑에 원하는 공개 NTP서버 적기
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
pool time.bora.net iburst

# Use Ubuntu's ntp server as a fallback.
#pool ntp.ubuntu.com

...
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap   # NTP서버에 접속할 클라이언트 네트워크 대역을 설정

참고) iburst 옵션

  • 초기 동기화 시간을 단축하기 위해 사용

3. 서비스 재시작

$ sudo systemctl restart ntp
$ sudo systemctl status ntp

leapsecond file Error)

#해결법
$ sudo apt-get update
$ sudo apt-get install --reinstall tzdata    #시스템의 시간대 데이터 패키지인 tzdata를 재설치

$ systemctl restart ntp
$ systemctl status ntp

4. 동기화 확인

시간이 좀 지난 후, reach가 ~377이 뜨면 성공 (offset, jitter은 작을수록 좋음)

$ ntpq -p

NTP 클라이언트 서버 설정

1. ntp 서버 설치

ntp 패키지를 설치하여 ntp 서버 소프트웨어를 가져온다.

# 시스템 패키지 업데이트
$ sudo apt update -y

#Ubuntu 18.04에 NTP 서버 설치
$ sudo apt install ntp

#버전 확인
$ sntp --version

2. 구성 파일 편집

클라이언트 서버는 마스터 서버를 바라보게 설정

$ vi /etc/ntp.conf
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
server <마스터 서버 ip 주소> iburst    # NTP (마스터)서버 주소

3. 서비스 재시작

$ sudo systemctl restart ntp
$ sudo systemctl status ntp

4. 동기화 확인

시간이 좀 지난 후,  reach가 ~377이 뜨면 성공 (offset, jitter은 작을수록 좋음)

$ ntpq -p

참고)

  • remote: NTP 서버의 주소 (IP 주소 또는 호스트 이름).
  • refid: 해당 NTP 서버가 참조하는 다른 서버의 식별자.
  • st: NTP 서버의 Stratum 레벨 (클럭 계층의 레벨).
  • t: 서버 유형. u는 다른 NTP 서버와 통신하는 클라이언트, s는 자체 시스템의 시간 소스, l은 로컬 루프백
  • when: 마지막으로 패킷을 보낸 시간 이후 경과한 시간 (초).
  • poll: 서버에 대한 폴링 주기 (초).
  • reach: 서버에 대한 성공적인 패킷 전송의 수 (비트 패턴으로 표시).
  • delay: 시간 전송 소요 시간 (밀리초).
  • offset: 서버와 클라이언트 간의 시간 차이 (밀리초).
  • jitter: 시간 오차의 변동 (밀리초).

 

시간 동기화 최종 확인

마스터 서버와 클라이언트 서버 동시에 date 명령어 입력해서 시간 똑같은지 확인

$ date

 

방화벽 설정

  • 마스터 서버 ---TCP, 37 포트 ---> time.bora.net IP(203.248.240.140)
  • 클라이언트 서버 ---UDP, 123 포트 ---> 마스터 서버

 

728x90