← 아티클 목록

리눅스 시간 동기화 문제 해결 (chrony·NTP)

2027-10-18#linux#ntp#운영

서버 시계가 몇 초만 틀어져도 일이 커집니다. TLS 인증서가 "아직 유효하지 않음"으로 거부되고, 분산 로그의 순서가 뒤엉키고, DB 복제와 토큰 만료(JWT, Kerberos)가 깨집니다. 시간 동기화는 눈에 안 보이다가 장애로만 드러나는 인프라입니다.

1단계 — 현재 상태 확인 (timedatectl)

먼저 시스템이 동기화되고 있다고 믿는지부터 봅니다.

로컬 터미널
timedatectl
OUTPUT
               Local time: Mon 2027-10-18 14:03:11 KST
           Universal time: Mon 2027-10-18 05:03:11 UTC
                 Time zone: Asia/Seoul (KST, +0900)
 System clock synchronized: yes
               NTP service: active

System clock synchronized: no 또는 NTP service: inactive 면 동기화가 끊긴 것입니다. 타임존이 틀렸다면 timedatectl set-timezone Asia/Seoul 로 먼저 맞춥니다.

2단계 — NTP 소스 진단 (chronyc)

요즘 배포판은 대부분 chrony 를 씁니다. 어느 서버와 동기화 중이고 오차가 얼마인지 봅니다.

로컬 터미널
chronyc sources -v
chronyc tracking
OUTPUT
MS Name/IP address     Stratum Poll Reach LastRx Last sample
===============================================================
^* time.cloudflare.com       3   6   377    23   +12us[ +18us]
^- 1.kr.pool.ntp.org         2   6   377    19   -1041us[-1041us]

Name 앞 기호가 핵심입니다. ^* 는 현재 동기화 중인 소스, ^- 는 후보, ? 나 빈 Reach 는 도달 실패입니다. Reach0 이면 NTP 패킷이 오가지 못하는 것이고, Last sample 의 오차가 크면 시계가 벌어지는 중입니다.

3단계 — 증상별 복구

증상의미조치
NTP service: inactivechrony 미실행systemctl enable --now chronyd
Reach 가 계속 0123/UDP 차단방화벽·보안그룹에서 UDP 123 허용
오차가 수 초 이상큰 드리프트 누적chronyc makestep 으로 즉시 보정
synchronized: no 지속소스 설정 오류/etc/chrony.confserver/pool 확인

VM이나 컨테이너 호스트에서는 가상화 계층이 시계를 흔드는 경우가 많아, 게스트에서 chrony를 켜고 NTP 포트를 여는 것이 특히 중요합니다.

점검 체크리스트

로컬 터미널
timedatectl                       # synchronized·NTP service 상태
chronyc sources -v                # 소스 도달(Reach)·선택(^*) 여부
chronyc tracking                  # 현재 오차(System time)
ss -unp | grep :123               # NTP가 123/UDP로 통신 중인지
sudo chronyc makestep             # 큰 오차 즉시 보정(주의: 시계 점프)

makestep 은 시계를 한 번에 점프시키므로, 시간 역행에 민감한 DB나 로그 수집기가 떠 있을 때는 영향 범위를 먼저 확인합니다.


timedatectlchronyc 로 시간 동기화를 직접 끊어보고 복구하는 실습, 그리고 인증서·로그와 얽힌 운영 감각은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.