[Linux] ⏱️ Chrony NTP 시간 동기화 완벽 가이드: 설정부터 iburst 에러 해결까지

Chrony는 Linux에서 NTP(Network Time Protocol) 기반 시간 동기화를 담당하는 데몬입니다. 기존 ntpd를 대체하는 최신 표준으로, RHEL 7 / CentOS 7 이상과 Ubuntu 18.04 이상에서 기본 탑재되어 있습니다. 이 글에서는 chrony.conf 설정 방법, iburst 옵션, 특정 NTP 서버로의 교체, chronyc 진단 명령어, 그리고 흔히 발생하는 에러 해결 방법을 실무 기준으로 정리합니다.


🧭 Chrony란? #

Chrony는 불안정한 네트워크 환경(재부팅, 슬립 모드, 간헐적 연결)에서도 빠르고 정확하게 시스템 시간을 동기화하는 NTP 구현체입니다.

1NTP 서버 (Stratum 1/2)
2        ↓ UDP 123
3  chronyd 데몬
45  시스템 클럭 조정
67  (rtcsync) 하드웨어 클럭(RTC) 반영
항목ntpdchronyd (Chrony)
수렴 속도느림빠름 (iburst)
불안정 네트워크 대응취약강함
기본 탑재RHEL 6 이하RHEL 7+ / Ubuntu 18.04+
설정 파일/etc/ntp.conf/etc/chrony.conf 또는 /etc/chrony/chrony.conf

📦 설치 #

RHEL / CentOS / Rocky Linux #

1sudo dnf install chrony -y       # RHEL 8+
2# 또는
3sudo yum install chrony -y       # CentOS 7

Ubuntu / Debian #

1sudo apt-get update
2sudo apt-get install chrony -y

서비스 시작 및 자동 실행 등록 #

1sudo systemctl enable --now chronyd
2sudo systemctl status chronyd

⚙️ chrony.conf 주요 설정 #

설정 파일 경로:

  • Ubuntu: /etc/chrony/chrony.conf
  • CentOS / RHEL / Rocky: /etc/chrony.conf

pool vs server #

1# pool: NTP Pool 프로젝트에서 여러 서버를 자동 선택
2pool 2.rocky.pool.ntp.org iburst
3
4# server: 특정 서버 한 대를 직접 지정
5server time.google.com iburst

Tip: pool은 여러 서버를 자동으로 활용해 안정성이 높습니다. 사내 전용 NTP 서버가 있다면 server로 직접 지정하세요.

주요 옵션 설명 #

옵션설명
iburst초기 동기화 시 패킷을 집중 전송하여 수렴 속도를 높임
prefer해당 서버를 우선 참조 소스로 지정
maxsources Npool에서 사용할 최대 서버 수 (기본값: 4)
minpoll N최소 폴링 간격 (2^N 초, 기본 6 = 64초)
maxpoll N최대 폴링 간격 (2^N 초, 기본 10 = 1024초)
makestep T ST초 이상 오차 발생 시 처음 S번은 즉시 시간 점프
rtcsync시스템 클럭을 하드웨어 RTC와 주기적으로 동기화
driftfile클럭 드리프트 값 저장 경로
logdir로그 저장 디렉토리

권장 기본 설정 예시 #

 1# /etc/chrony.conf (CentOS/RHEL 기준)
 2
 3# 기본 pool 대신 특정 서버로 교체 시 아래처럼 pool 줄을 주석 처리
 4# pool 2.centos.pool.ntp.org iburst
 5
 6server 0.asia.pool.ntp.org iburst
 7server 1.asia.pool.ntp.org iburst
 8server 2.asia.pool.ntp.org iburst
 9server 3.asia.pool.ntp.org iburst
10
11# 한국 공개 NTP 서버
12# server time.bora.net iburst
13# server time.kornet.net iburst
14
15# 시간 오차 1.0초 초과 시 처음 3번은 즉시 점프 조정
16makestep 1.0 3
17
18# 하드웨어 RTC와 동기화
19rtcsync
20
21# 클럭 드리프트 저장
22driftfile /var/lib/chrony/drift
23
24# 로그 디렉토리
25logdir /var/log/chrony

🔄 특정 NTP 서버로 교체하기 #

사내 NTP 서버 또는 클라우드 내부 NTP 서버로 교체하는 실무 절차입니다.

1단계: 설정 파일 편집 #

1sudo vi /etc/chrony.conf
2# 또는 Ubuntu
3sudo vi /etc/chrony/chrony.conf

기존 pool 또는 server 라인을 주석 처리하고 새 서버를 추가합니다.

1# 기존 pool 비활성화
2# pool 2.centos.pool.ntp.org iburst
3
4# 사내 NTP 서버로 교체
5server 192.168.1.10 iburst
6server 192.168.1.11 iburst

2단계: 서비스 재시작 #

1sudo systemctl restart chronyd

3단계: 동기화 상태 확인 #

1chronyc sources -v

출력 예시:

1MS Name/IP address         Stratum Poll Reach LastRx Last sample
2===============================================================================
3^* 192.168.1.10                  2   6   377    23   +12us[  +8us] +/- 220us
4^+ 192.168.1.11                  2   6   377    24   -15us[ -10us] +/- 180us

☁️ 클라우드 환경별 NTP 설정 #

클라우드 인스턴스는 해당 클라우드 내부 NTP 서버를 사용하는 것이 정확도·안정성 측면에서 유리합니다.

클라우드내부 NTP 서버
AWS169.254.169.123
GCPmetadata.google.internal
Azuretime.windows.com
Naver Cloud내부 NTP 서버 (VPC 설정 참고)

AWS 환경 예시:

1server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

Tip: prefer 옵션으로 내부 서버를 우선 참조 소스로 지정하고, minpoll/maxpoll 4로 폴링 간격을 16초로 고정해 빠른 동기화를 유지할 수 있습니다.


🛠️ chronyc 진단 명령어 #

sources — NTP 소스 상태 확인 #

1chronyc sources -v
소스 상태 기호의미
*현재 동기화 중인 기준 서버
+신뢰할 수 있는 후보 서버
-알고리즘에 의해 제외된 서버
?연결 불가 / 응답 없음
x거짓 서버(falseticker)로 판정됨

tracking — 시스템 시간 동기화 세부 정보 #

1chronyc tracking
 1Reference ID    : C0A8010A (192.168.1.10)
 2Stratum         : 3
 3Ref time (UTC)  : Sat Apr 26 12:00:00 2026
 4System time     : 0.000012345 seconds fast of NTP time
 5Last offset     : +0.000012345 seconds
 6RMS offset      : 0.000015678 seconds
 7Frequency       : 2.341 ppm fast
 8Residual freq   : +0.001 ppm
 9Skew            : 0.012 ppm
10Root delay      : 0.002345678 seconds
11Root dispersion : 0.001234567 seconds

makestep — 즉시 시간 강제 동기화 #

시스템 시간이 크게 틀어졌을 때 즉시 보정합니다.

1sudo chronyc makestep
2# 또는 -a 옵션으로 인증 우회
3sudo chronyc -a makestep

기타 유용한 명령어 #

1chronyc sourcestats -v    # 소스별 통계 (오프셋 히스토리, 지터 등)
2chronyc activity          # 온라인/오프라인 서버 수 확인
3timedatectl status        # 시스템 시간·타임존·NTP 상태 종합 확인
4timedatectl set-timezone Asia/Seoul   # 타임존 변경

🌏 타임존 설정 #

시간 동기화와 함께 타임존도 올바르게 설정해야 합니다.

1# 현재 타임존 확인
2timedatectl status
3
4# 한국 표준시로 변경
5timedatectl set-timezone Asia/Seoul
6
7# 변경 결과 확인
8date

🔒 방화벽 설정 (UDP 123) #

NTP는 UDP 123번 포트를 사용합니다. 클라이언트가 외부 NTP 서버에 접근하려면 아웃바운드 규칙이 열려 있어야 합니다.

1# firewalld (RHEL/CentOS)
2sudo firewall-cmd --add-service=ntp --permanent
3sudo firewall-cmd --reload
4
5# UFW (Ubuntu)
6sudo ufw allow 123/udp
7
8# iptables 직접 설정
9sudo iptables -A OUTPUT -p udp --dport 123 -j ACCEPT

클라우드 환경이라면 보안 그룹(Security Group) 의 아웃바운드 규칙에서도 UDP 123번을 허용해야 합니다.


❓ 자주 묻는 질문 및 트러블슈팅 #

Q. chronyc sources에서 모든 서버가 ? 로 표시됩니다 #

→ NTP 서버에 연결이 안 되는 상태입니다. 다음 순서로 확인합니다.

 1# 1. 방화벽 UDP 123 허용 여부 확인
 2sudo firewall-cmd --list-all
 3
 4# 2. NTP 서버 IP 도달 가능 여부 확인
 5ping -c 3 time.google.com
 6
 7# 3. UDP 123 연결 테스트
 8sudo nc -uzv time.google.com 123
 9
10# 4. 서비스 재시작
11sudo systemctl restart chronyd

Q. iburst 옵션을 추가했는데 시간이 빨리 맞지 않습니다 #

iburst는 초기 동기화 속도를 높이지만, 시간 오차가 크면 makestep으로 즉시 강제 보정해야 합니다.

1sudo chronyc makestep
2chronyc tracking    # System time 값이 줄어드는지 확인

Q. iburst를 설정 파일에 단독 라인으로 넣으면 에러가 납니다 #

iburst는 독립 지시어가 아니라 server 또는 pool 명령어의 옵션입니다. 반드시 서버 주소 뒤에 붙여야 합니다.

1# 잘못된 예
2# pool 2.centos.pool.ntp.org
3iburst                          # ❌ 단독 라인 — 문법 오류
4
5# 올바른 예
6server time.google.com iburst   # ✅ server 뒤에 옵션으로 추가
7pool 2.centos.pool.ntp.org iburst  # ✅ pool 뒤에도 동일하게

Q. 시간이 동기화되었는지 한 번에 확인하는 방법은? #

1timedatectl status | grep -E "synchronized|NTP"
2# System clock synchronized: yes
3# NTP service: active

✅ 요약 #

단계명령어
설치dnf install chrony
설정 파일 편집vi /etc/chrony.conf
기존 pool 주석, 새 server 추가server [IP] iburst
서비스 재시작systemctl restart chronyd
동기화 상태 확인chronyc sources -v
즉시 강제 동기화chronyc makestep
타임존 설정timedatectl set-timezone Asia/Seoul
Advertisement