CentOS Stream 10에서 chrony로 서버 시간을 동기화하는 방법

안녕하세요. 지구 IDC 기술팀입니다.

오늘은 CentOS Stream 10에서 chrony를 설치하고 NTP 서버와 시스템 시간을 동기화하는 방법을 알아보겠습니다. 서버 시간이 맞지 않으면 로그 순서가 뒤섞이거나 TLS 인증서 검증, 데이터베이스 작업, 예약 작업과 클러스터 통신에 문제가 발생할 수 있으므로 운영 초기 단계에서 시간 동기화 상태를 확인하는 것이 좋습니다.

CentOS Stream 10에서는 chronyd 데몬이 실제 시간 보정을 수행하고, chronyc 명령으로 동기화 상태를 점검합니다. 이 문서에서는 chrony 설치, 시간대 설정, NTP 소스 구성, 서비스 자동 시작, 동기화 확인, 오류 해결과 원상복구 순서까지 설명합니다.

적용 환경

운영체제 CentOS Stream 10
시간 동기화 도구 chrony 패키지, chronyd 서비스, chronyc 관리 명령
설정 파일 /etc/chrony.conf
통신 NTP 클라이언트의 외부 통신은 일반적으로 UDP 123 사용

CentOS Stream 10 BaseOS 저장소에는 chrony 패키지가 제공됩니다. 실제 설치 버전은 저장소 업데이트 시점에 따라 달라질 수 있으므로 본문의 rpm -q chrony 명령으로 확인하십시오.

chrony 시간 동기화에서 알아둘 점

  • 시스템 시간: 운영체제가 실제 작업에 사용하는 시각이며 chrony가 NTP 소스를 기준으로 보정합니다.
  • 시간대: UTC 시간을 서울, 도쿄, 뉴욕 등 지역 시각으로 표시하는 규칙입니다. 시간대를 바꾸는 것만으로 NTP 동기화가 이루어지지는 않습니다.
  • chronyd: 백그라운드에서 시간 오차와 시스템 시계의 드리프트를 측정하고 보정하는 서비스입니다.
  • chronyc: 현재 선택된 시간 소스, 오차, 도달 가능 여부와 동기화 상태를 확인하는 명령입니다.

1. 현재 시간과 운영체제 확인

먼저 서버가 CentOS Stream 10인지 확인하고 현재 시간, 시간대, NTP 활성화 상태를 점검합니다.

cat /etc/centos-release
timedatectl
date --iso-8601=seconds

timedatectl 출력에서는 현재 시간대와 System clock synchronized, NTP service 항목을 확인합니다. 아직 chrony가 설치되지 않았거나 유효한 NTP 소스에 연결되지 않았다면 동기화 상태가 no로 표시될 수 있습니다.

2. chrony 설치

chrony가 설치되어 있지 않거나 패키지 상태가 확실하지 않다면 DNF로 설치합니다. 이미 설치되어 있으면 DNF가 설치 상태를 확인하고 필요한 업데이트만 처리합니다.

sudo dnf install -y chrony

설치된 패키지와 명령 경로를 확인합니다.

rpm -q chrony
command -v chronyd
command -v chronyc

정상이라면 chrony 패키지 버전과 /usr/sbin/chronyd, /usr/bin/chronyc 경로를 확인할 수 있습니다.

3. 서버 시간대 설정

한국 표준시로 로그와 명령 출력을 표시하려면 시간대를 Asia/Seoul로 설정합니다. 서버 운영 정책상 UTC를 사용하는 경우에는 이 단계를 건너뛰거나 Etc/UTC를 사용하십시오.

timedatectl list-timezones | grep '^Asia/Seoul$'
sudo timedatectl set-timezone Asia/Seoul
timedatectl

4. chrony NTP 소스 설정

4.1 설정 파일 백업

기존 배포판 설정을 복구할 수 있도록 먼저 /etc/chrony.conf를 백업합니다.

sudo cp -a /etc/chrony.conf /root/chrony.conf.jiguidc-backup

현재 설정된 시간 소스와 주요 보정 항목을 확인합니다.

sudo grep -nE '^(server|pool|sourcedir|makestep|rtcsync)' /etc/chrony.conf

4.2 시간 소스 지정

배포판 기본 NTP 소스를 그대로 사용할 수 있다면 설정을 변경하지 않아도 됩니다. 자체 NTP 서버나 지정된 공개 풀을 사용해야 한다면 설정 파일에서 기존 server 또는 pool 행을 확인한 뒤 필요한 소스로 교체합니다.

sudo vi /etc/chrony.conf

공개 NTP 풀을 사용하는 최소 구성 예시는 다음과 같습니다. 기존 파일 전체를 무조건 덮어쓰지 말고, 중복되는 pool, server, driftfile, makestep, rtcsync 항목이 생기지 않도록 현재 설정을 확인하면서 반영하십시오.

pool pool.ntp.org iburst

driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
  • pool: DNS 이름에서 여러 시간 서버를 선택해 가용성을 높입니다.
  • iburst: 서비스 시작 직후 여러 측정 요청을 빠르게 보내 초기 동기화를 단축합니다.
  • driftfile: 로컬 시스템 시계의 장기적인 오차율을 저장합니다.
  • makestep 1.0 3: chronyd 시작 후 초기 세 번의 업데이트에서 오차가 1초보다 크면 시간을 즉시 보정할 수 있게 합니다.
  • rtcsync: 동기화된 시스템 시각을 하드웨어 시계에 반영하도록 합니다.

5. chronyd 서비스 시작과 즉시 시간 보정

설정을 저장한 뒤 chronyd를 부팅 시 자동으로 시작하도록 활성화하고 서비스를 다시 시작합니다.

sudo systemctl enable chronyd
sudo systemctl restart chronyd

서비스 활성화와 실행 상태를 확인합니다.

systemctl is-enabled chronyd
systemctl is-active chronyd
systemctl status chronyd --no-pager

서버 시간이 크게 틀려 있고 chronyd가 유효한 시간 소스를 확보한 상태라면 다음 명령으로 남아 있는 보정을 즉시 적용할 수 있습니다.

sudo chronyc makestep

6. chrony 시간 동기화 상태 확인

6.1 전체 추적 상태 확인

chronyc tracking

정상 동기화 상태에서는 유효한 Reference ID가 표시되고, Leap status가 일반적으로 Normal로 나타납니다. System time, Last offset, RMS offset은 시간 소스와의 오차를 보여주며 네트워크 품질과 서버 환경에 따라 값이 달라질 수 있습니다.

6.2 NTP 소스 확인

chronyc sources -v

^* 표시는 현재 선택된 NTP 서버, ^+는 선택 가능한 결합 소스, ^?는 아직 측정할 수 없거나 도달할 수 없는 소스를 의미합니다. Reach 값은 0이 아니어야 하며 안정적으로 통신하면 8진수 값 377에 도달할 수 있습니다.

6.3 소스 통계와 systemd 상태 확인

chronyc sourcestats
timedatectl

최종적으로 timedatectl에서 System clock synchronized: yes와 활성화된 NTP 서비스를 확인합니다. 서비스 시작 직후에는 측정값이 충분히 쌓일 때까지 잠시 no로 보일 수 있으므로 먼저 chronyc sources -v에서 유효한 소스가 선택되는지 확인하십시오.

7. 방화벽과 네트워크 주의사항

대신 서버에서 외부 NTP 소스로 나가는 UDP 123 통신과 DNS 조회가 네트워크 방화벽, 클라우드 보안 정책 또는 호스팅 사업자의 상위 방화벽에서 차단되지 않아야 합니다. 운영 환경에서 외부 통신을 엄격하게 제한한다면 허용된 사내 NTP 서버 주소를 /etc/chrony.conf에 지정하십시오.

8. 자주 발생하는 오류와 해결 방법

문제가 발생하면 먼저 chronyd 로그와 현재 소스 상태를 함께 확인합니다.

sudo journalctl -u chronyd -b --no-pager
chronyc activity
chronyc sources -v
CentOS Stream 10 chrony 오류 점검표
증상 가능한 원인 확인 및 해결 방법
chronyc가 데몬과 통신하지 못함 chronyd 중지, 시작 실패 또는 로컬 명령 소켓 문제 systemctl status chronydjournalctl -u chronyd -b를 확인하고 설정 오류를 수정한 뒤 서비스를 재시작합니다.
모든 소스가 ^?, Reach가 0 DNS 실패, 외부 UDP 123 차단, 잘못된 서버 주소 또는 NTP 서버 장애 getent ahosts pool.ntp.org로 DNS를 확인하고 상위 방화벽의 아웃바운드 정책을 점검합니다. 지정한 NTP 소스 주소가 실제로 운영 중인지도 확인합니다.
Leap status: Not synchronised 유효한 시간 소스 미선택 또는 초기 측정 진행 중 chronyc sources -v에서 ^* 소스가 생기는지 확인합니다. 서비스 시작 직후라면 잠시 기다린 뒤 다시 확인하고, 계속 유지되면 네트워크와 로그를 점검합니다.
System clock synchronized: no가 계속 표시됨 chronyd는 실행 중이지만 아직 소스를 선택하지 못했거나 오차 계산이 완료되지 않음 chronyc tracking의 Reference ID와 Leap status를 먼저 확인합니다. 소스가 정상인데 시간이 크게 틀렸다면 영향도를 검토한 뒤 chronyc makestep을 실행합니다.
설정 변경 후 서비스가 실패함 오타, 잘못된 지시어, 중복 또는 지원되지 않는 옵션 journalctl -u chronyd -b에서 오류가 발생한 설정 행을 확인합니다. 원인을 찾기 어렵다면 백업한 설정을 복원하고 서비스를 다시 시작합니다.
재부팅 또는 VM 이동 후 시간이 반복적으로 변경됨 하이퍼바이저의 게스트 시간 동기화와 chronyd가 동시에 시간을 조정 가상화 플랫폼의 시간 동기화 정책과 게스트 에이전트 설정을 확인합니다. 호스팅 환경의 정책을 모르면 임의로 에이전트를 제거하지 말고 공급자 문서를 먼저 확인하십시오.

소스가 오프라인 상태로 남아 있는 경우

네트워크가 복구되었는데도 chronyc activity에서 소스가 오프라인으로 표시되면 다음 명령으로 모든 소스를 온라인 상태로 전환한 뒤 다시 확인합니다.

sudo chronyc online
chronyc activity
chronyc sources -v

9. chrony 설정 원상복구

이 문서에서 만든 백업 파일이 남아 있다면 기존 설정을 복원하고 chronyd를 다시 시작합니다.

sudo test -f /root/chrony.conf.jiguidc-backup
sudo cp -a /root/chrony.conf.jiguidc-backup /etc/chrony.conf
sudo systemctl restart chronyd
chronyc sources -v

chrony 자동 동기화를 완전히 중지해야 하는 경우에는 다음 명령을 사용할 수 있습니다. 이 상태에서는 별도의 시간 동기화 서비스가 없다면 서버 시간이 서서히 어긋날 수 있습니다.

sudo systemctl disable --now chronyd

공식 참고자료

  • Red Hat Enterprise Linux 10: Using chrony — chronyd 서비스 관리, 수동 시간 보정, 동기화 확인 명령 검토. 조회일: 2026-07-17.
  • chrony Project: chrony.conf(5)pool, iburst, makestep, rtcsync 설정 문법 검토. 조회일: 2026-07-17.
  • CentOS Project: CentOS Stream 다운로드 및 소개 — CentOS Stream 10 제공 상태 확인. 조회일: 2026-07-17.
  • systemd: timedatectl 매뉴얼 — 시간대 변경과 시간 동기화 상태 조회 방법 검토. 조회일: 2026-07-17.

자주 묻는 질문

chrony 클라이언트에서 UDP 123 포트를 열어야 하나요?

외부 NTP 서버로 시간을 받아오는 클라이언트 용도라면 일반적으로 로컬 firewalld에 인바운드 UDP 123을 열 필요가 없습니다. 다만 외부로 나가는 UDP 123 통신은 상위 네트워크 정책에서 허용되어야 합니다.

시간대를 Asia/Seoul로 바꾸면 시간이 자동으로 동기화되나요?

아닙니다. 시간대는 표시 형식만 바꾸며 실제 시스템 시간 동기화는 chronyd가 NTP 소스와 통신하여 수행합니다.

공개 NTP 풀과 호스팅 사업자 NTP 중 무엇을 사용해야 하나요?

호스팅 사업자나 회사가 내부 NTP 주소를 제공한다면 네트워크 지연과 정책을 고려해 해당 소스를 우선 사용할 수 있습니다. 별도 지정이 없다면 배포판 기본 소스나 신뢰할 수 있는 공개 NTP 풀을 사용할 수 있습니다.

chronyc makestep을 매번 실행해야 하나요?

일반적으로 필요하지 않습니다. chronyd는 평상시에 시간을 점진적으로 보정합니다. 큰 오차를 즉시 수정해야 하고 시간 점프가 애플리케이션에 미칠 영향을 검토한 경우에만 수동으로 실행하십시오.

이 서버를 다른 장비의 NTP 서버로 사용할 수 있나요?

chronyd는 NTP 서버 역할도 지원하지만, 클라이언트 접근을 허용하는 allow 지시어와 인바운드 UDP 123 방화벽 규칙, 접근 범위 제한이 별도로 필요합니다. 본 문서는 로컬 서버 시간을 동기화하는 클라이언트 설정을 기준으로 합니다.

마무리

이번 문서에서는 CentOS Stream 10에서 chrony를 설치하고 /etc/chrony.conf의 시간 소스를 구성한 뒤, chronyd 자동 시작과 실제 동기화 상태를 확인하는 방법을 살펴봤습니다.

설정 완료 후에는 서비스가 실행 중이라는 사실만 확인하지 말고 chronyc tracking의 Leap status, chronyc sources -v의 선택 소스와 Reach 값을 함께 점검하십시오. 또한 NTP 클라이언트 서버에 불필요한 인바운드 UDP 123 규칙을 추가하지 않도록 주의하시기 바랍니다.

  • 0 Users Found This Useful
Was this answer helpful?
« Back