서버 시계가 몇 초만 틀어져도 일이 커집니다. 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 는 도달 실패입니다. Reach 가 0 이면 NTP 패킷이 오가지 못하는 것이고, Last sample 의 오차가 크면 시계가 벌어지는 중입니다.
3단계 — 증상별 복구
| 증상 | 의미 | 조치 |
|---|---|---|
NTP service: inactive | chrony 미실행 | systemctl enable --now chronyd |
Reach 가 계속 0 | 123/UDP 차단 | 방화벽·보안그룹에서 UDP 123 허용 |
| 오차가 수 초 이상 | 큰 드리프트 누적 | chronyc makestep 으로 즉시 보정 |
synchronized: no 지속 | 소스 설정 오류 | /etc/chrony.conf 의 server/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나 로그 수집기가 떠 있을 때는 영향 범위를 먼저 확인합니다.
timedatectl 과 chronyc 로 시간 동기화를 직접 끊어보고 복구하는 실습, 그리고 인증서·로그와 얽힌 운영 감각은 리눅스 트랙에서 회원가입 없이 무료로 익힐 수 있습니다.