Ubuntu에서 ntpd를 이용한 시각 동기화 완전 가이드 | 설치부터 설정·문제 해결까지

目次

1. 서론: 왜 시간 동기화가 중요한가

시스템 시계 오차가 초래하는 문제

Ubuntu를 비롯한 Linux 시스템에서는 시간이 정확하게 유지되는 것이 매우 중요합니다. 겉보기에 시계 오차 정도로 생각하기 쉽지만, 서버 운영이나 애플리케이션 실행 환경에서 시간 오차는 치명적인 문제의 원인이 됩니다. 예를 들어, 다음과 같은 문제가 발생합니다:
  • 로그의 일관성을 유지할 수 없게 된다 시스템 로그 및 애플리케이션 로그에 기록된 시간이 어긋나면, 문제 발생 시 원인 파악이 어려워집니다。
  • cron 작업의 오동작 스케줄된 처리(백업 및 배치 처리)가 정확한 시간에 실행되지 않아, 예상치 못한 시점에 동작할 가능성이 있습니다。
  • SSL 인증서 및 보안 인증 실패 HTTPS 통신이나 SSH 인증 등에서는 정확한 시간 정보가 필요합니다. 이것이 어긋나면 인증서가 “유효 기간 외”로 판단되어 연결 오류가 발생할 수 있습니다。
이러한 문제는 특히 여러 대의 서버를 네트워크 상에서 동기화하여 운영할 때 심각한 영향을 미칩니다。

NTP의 역할과 중요성

이러한 문제를 사전에 방지하기 위해 사용되는 것이 NTP(Network Time Protocol)입니다. NTP는 인터넷 또는 로컬 네트워크상의 시간 서버와 통신하여 시스템 시간을 자동으로 보정해 줍니다。 Ubuntu에서는 ntpd, chrony, systemd-timesyncd 등 여러 NTP 관련 도구를 사용할 수 있지만, 본 기사에서는 ntpd(Network Time Protocol daemon)에 초점을 맞추어 Ubuntu에서의 도입 방법과 활용에 대해 자세히 설명합니다。 특히 장기간 운영되는 서버나 로그의 일관성이 요구되는 시스템에서는 ntpd의 안정성이 강하게 지지되고 있습니다。 다음 장에서는 먼저 ntpd가 어떤 도구인지, 그 기본적인 역할과 Ubuntu에서의 선택지에 대해 소개합니다。

2. ntpd란? Ubuntu에서의 역할과 선택지

ntpd의 개요와 특징

ntpd (Network Time Protocol Daemon)은 NTP를 이용해 시스템의 시간을 정확하게 유지하기 위한 데몬 프로그램입니다. 인터넷이나 로컬 네트워크 내의 NTP 서버와 정기적으로 통신하여 시스템 시계를 자동으로 보정합니다. ntpd는 시간 차이를 단계적으로 조금씩 보정하는 “부드러운 동기화”를 수행하는 것이 특징입니다. 급격한 시간 변경을 피함으로써 가동 중인 시스템이나 애플리케이션에 악영향을 주지 않도록 설계되었습니다. 또한, ntpd는대칭 통신인증 기능 등 고급 NTP 기능도 지원하며, 엔터프라이즈 용도에도 대응 가능한 견고한 시간 동기화 서비스입니다.

Ubuntu에서 이용 가능한 시간 동기화 도구

Ubuntu에서는 시간 동기화 수단으로 다음과 같은 선택지가 있습니다:
  • ntpd(ntp 패키지) 장기 운영 및 상세 설정이 필요한 환경에서 널리 사용됩니다. 유연성과 안정성이 뛰어나며, 공개 NTP 서버와 연계해 높은 정확도의 시간 동기화가 가능합니다。
  • chrony ntpd의 대안으로 주목받는 도구이며, 정확도가 높고 시작 직후 동기화 속도가 우수합니다. 저사양 환경이나 가상 머신과의 호환성도 좋으며, 최근에는 chrony를 기본으로 채택하는 배포판도 늘어나고 있습니다。
  • systemd-timesyncd Ubuntu 20.04 이후 표준으로 활성화된 경량 시간 동기화 서비스입니다. 간단하고 편리하지만 기능이 제한되어 있어 고급 설정이나 로컬 NTP 서버로의 운영에는 적합하지 않습니다。

ntpd를 선택하는 이유와 그 장점

Ubuntu에서 ntpd를 채택하는 가장 큰 이유는 그신뢰성 및 안정성입니다. 특히 다음과 같은 경우에 ntpd가 유력한 선택지가 됩니다:
  • 오랜 기간 운영되는 서버에서, 시간 정확성을 중시하는 경우
  • 로컬 네트워크 내에서 NTP 서버를 구축하고자 하는 경우
  • 인증 기능 및 고급 제어가 필요한 엔터프라이즈 용도
또한, ntpd는 많은 기존 시스템과 호환성이 있으며, 운영 실적도 풍부해 도입 시 불안감이 적다는 장점이 있습니다.

3. Ubuntu에서 ntpd 설치 및 초기 설정

ntpd 설치 절차

Ubuntu에서 ntpd를 사용하려면 먼저 ntp키지를 설치해야 합니다. 아래 절차로 간단히 도입할 수 있습니다.
sudo apt update
sudo apt install ntp
이 명령으로 ntpd와 그 관련 파일이 자동으로 설치됩니다. 또한 Ubuntu 버전에 따라 chronysystemd-timesyncd가 기본으로 활성화되어 있을 수 있습니다. 이 경우 사전에 비활성화하거나 삭제하는 것을 권장합니다.
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

서비스 활성화 및 시작 확인

설치가 완료되면 ntpd 서비스를 활성화하고, 실행 상태를 확인해 봅시다.
sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp
status 명령으로 “active (running)”이라고 표시되면 ntpd가 정상적으로 시작된 것을 의미합니다.

초기 설정 파일 확인 및 편집

ntpd 설정은 /etc/ntp.conf 파일에 정의되어 있습니다. 설치 직후 설정에서는 여러 기본 NTP 서버(보통 pool.ntp.org 계열)가 등록되어 있습니다. 먼저 설정 파일의 내용을 확인해 봅시다.
cat /etc/ntp.conf
일본 국내 서버를 지정하고 싶다면, 아래와 같이 편집합니다:
server ntp.nict.jp iburst
iburst 옵션은 최초 연결 시 동기화 속도를 향상시키기 위한 것으로, 추가해 두는 것을 권장합니다. 설정을 변경하면 ntpd 서비스를 재시작하여 반영합니다.
sudo systemctl restart ntp

시스템 시각 자동 동기화 확인

ntpd는 시작 후 자동으로 서버와 시각 동기화를 수행하지만, 정상 동작 여부를 확인하려면 아래 명령이 유용합니다.
ntpq -p
이 명령으로 연결 중인 NTP 서버 목록과 지연, 오프셋 등의 상세 정보를 확인할 수 있습니다.

4. NTP 서버 설정 및 맞춤화

권장되는 NTP 서버 선택

ntpd 설정에서 중요한 것은 어느 NTP 서버와 동기화할지를 선택하는 것입니다. 인터넷을 통해 연결하는 경우, 일본 국내의 신뢰성이 높은 NTP 서버를 지정함으로써 보다 안정적인 시각 동기화가 가능해집니다. 대표적인 국내 NTP 서버는 다음과 같습니다:
  • ntp.nict.jp(정보통신연구기관)
  • ntp.jst.mfeed.ad.jp(JST·미피드)
  • ntp.ring.gr.jp(인터넷 멀티피드)
이들 서버는 고정밀 원자시계를 기반으로 운영되고 있으며, 개인 이용이라면 별도의 신청 없이 사용할 수 있습니다. /etc/ntp.conf에 아래와 같이 기록함으로써, 이들 서버와 동기화하도록 설정할 수 있습니다.
server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

ntp.conf 상세 설정 항목

/etc/ntp.conf에서는 NTP 서버 지정 외에도 세밀한 동작 제어가 가능합니다. 아래는 대표적인 설정 항목입니다.
  • restrict 디렉티브 클라이언트로부터의 연결 제한 및 허용을 설정합니다. 보안 향상을 위해 불필요한 연결은 제한해 두는 것이 좋습니다. 예: 로컬 네트워크에서의 연결을 허용
  restrict 192.168.0.0 mask 255.255.255.0 nomodify nottrap
  • driftfile 시스템 시계의 드리프트(미세한 오차)를 기록하는 파일을 지정합니다. 일반적으로는 기본값 그대로 사용해도 문제 없습니다.
  driftfile /var/lib/ntp/ntp.drift

로컬 네트워크 내에서 NTP 서버 구축

Ubuntu에서 ntpd를 이용해, 사내 네트워크 내 다른 단말에 시각을 배포하는 NTP 서버로 운영하는 것도 가능합니다. 이 구성은 인터넷에 연결할 수 없는 환경이나, 여러 단말의 일관된 시각 관리가 요구되는 환경에서 유효합니다. 설정 절차의 예시는 다음과 같습니다。
  1. /etc/ntp.conf에 로컬 접근을 허용하는 restrict 규칙을 추가 restrict 192.168.0.0 mask 255.255.255.0 nomodify nottrap
  2. 클라이언트 PC 측에서는, 이 로컬 NTP 서버를 참조하도록 설정 server 192.168.0.10 iburst # NTP 서버의 로컬 IP
  3. NTP 서버의 포트 개방(방화벽에서 UDP 123 포트를 허용) sudo ufw allow 123/udp
통신이 차단되면 시각 동기화가 되지 않으며, ntpq 명령에서도 서버와의 연결 상태가 표시되지 않게 됩니다.

5. ntpd 동작 확인 및 문제 해결

서비스 상태 확인 방법

ntpd가 정상적으로 시작되었는지 확인하려면 다음 명령을 사용합니다。
sudo systemctl status ntp
active (running)이라고 표시되면, ntpd는 정상적으로 동작하고 있습니다. 만약 inactive이나 failed가 표시되면, 설정 오류나 의존 관계 문제 때문에 시작되지 않았을 가능성이 있습니다。 로그를 자세히 확인하려면 아래 명령이 도움이 됩니다。
journalctl -u ntp
이를 통해, ntpd 서비스의 시작 기록 및 오류 내용을 시간 순서대로 확인할 수 있습니다。

동기화 상태 확인 명령 (ntpq -p)

ntpd가 NTP 서버와 적절히 동기화되고 있는지 확인하려면 ntpq -p 명령이 가장 많이 사용됩니다。
ntpq -p
출력 예시:
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nict.jp     .NICT.           1 u   25   64  377    1.123   -0.345   0.024
각 항목의 의미는 다음과 같습니다:
  • remote: 연결된 NTP 서버 이름
  • st: 서버의 계층(stratum), 1이 가장 정확한 원자시계 등
  • reach: 연결 성공 이력(8비트)
  • delay: 네트워크 지연(ms)
  • offset: 시각 오차(ms)
  • jitter: 변동(흔들림)
앞에 *가 붙은 서버는 현재 동기화 대상으로 선택된 것을 나타냅니다。

자주 발생하는 오류와 그 대처법

ntpd를 도입할 때 흔히 마주치는 오류와 그에 대한 구체적인 해결 방법을 소개합니다。

1. ntpq -p에 표시되지 않음 / reach가 0

  • 원인: 방화벽이나 라우터에서 UDP 123 포트가 차단되어 있을 가능성
  • 대책: 서버와 클라이언트 모두에서 방화벽 설정을 확인하고 NTP 통신이 허용되어 있는지 확인합니다。
sudo ufw allow 123/udp

2. System clock not synchronized가 표시됨

  • 원인: ntpd가 시작되지 않았거나 다른 동기화 서비스(systemd-timesyncd 등)와 충돌하고 있을 가능성
  • 대책: 불필요한 시각 동기화 서비스를 비활성화하고 ntpd를 재시작합니다。
sudo systemctl disable systemd-timesyncd
sudo systemctl restart ntp

3. NTP 서버 이름 해석에 실패함

  • 원인: DNS 설정 문제 또는 네트워크 장애
  • 대책: ping ntp.nict.jp 등으로 이름 해석이 가능한지 확인하고, 필요에 따라 DNS 서버 설정을 수정합니다。

4. 시각이 크게 틀어져 있지만 동기화되지 않음

  • 원인: ntpd는 시각이 크게 틀어져 있을 경우 자동으로 조정하지 않음(안전성 때문에)
  • 대책: 수동으로 초기 시각을 맞춘 후 ntpd를 재시작합니다。
sudo ntpd -gq  # 한 번만 즉시 동기화 수행
sudo systemctl restart ntp

지속적인 모니터링을 위해

운용 환경에서는 정기적으로 ntpq -p의 출력 결과를 로그로 기록하는 스크립트를 설정하고, 이상 발생 시 알림을 보내는 체계를 마련해 두면 안심됩니다. 로그가 갑자기 끊기거나 reach 값이 지속적으로 0이 되는 등의 징후를 포착함으로써 장애를 조기에 발견할 수 있습니다。

6. ntpd와 다른 시계 동기화 도구 비교

Ubuntu에서 사용되는 주요 시계 동기화 도구

Ubuntu 환경에서는 시계 동기화를 위해 여러 도구를 사용할 수 있습니다. 각각 특성이 있으며, 용도와 시스템 요구 사항에 따라 선택이 필요합니다. 대표적인 3가지 도구는 다음과 같습니다.
  • ntpd (ntp 패키지)
  • chrony
  • systemd-timesyncd
각각의 차이를 이해함으로써, 자신의 환경에 최적의 동기화 방법을 선택하는 데 도움이 됩니다.

ntpd의 특징

  • 장점
  • 오랜 실적과 안정성을 가지고 있어 신뢰성이 매우 높다.
  • 기능이 풍부하고 세밀한 설정이 가능 (로컬 NTP 서버 구축, 인증, 대칭 모드 등).
  • 공개 NTP 서버와의 호환성이 높고, 문제 발생 시 정보도 풍부하다.
  • 단점
  • 시작 후 최초 동기화에 시간이 걸릴 수 있다.
  • 현대적인 네트워크 환경(가상화, 가변 네트워크) 적응력이 다소 낮다.

chrony의 특징

  • 장점
  • 고속 초기 동기화가 가능하며, 부팅 직후의 오차도 빠르게 보정한다.
  • 가상 머신이나 가변 네트워크 환경(노트북 PC, VPN 사용 시)에서도 정확도가 높다.
  • 자율 학습 기능(주변 상황에 따라 정확도를 높임)으로 인해 ntpd보다 뛰어난 정확도를 발휘하는 경우도 많다.
  • 단점
  • 로컬 NTP 서버로 운영할 경우 설정이 다소 복잡하다.
  • 문서와 사례가 ntpd에 비해 적다.

systemd-timesyncd의 특징

  • 장점
  • Ubuntu 20.04 이후 기본 활성화되어 도입 및 관리가 매우 간단하다.
  • 필요 최소한의 동기화 기능으로, 리소스 소비도 극히 적다.
  • systemd와의 통합이 진행되어 Ubuntu 표준 구성에서 사용하기 쉽다.
  • 단점
  • 기능이 제한적이며, 수동으로 고급 설정이나 로컬 NTP 서버로 운영할 수 없다.
  • 정확도와 로그 기능도 간단하여 대규모 시스템에는 부적합하다.

도구 비교표 (목록)

특징ntpdchronysystemd-timesyncd
정밀도높음매우 높음보통
초기 동기화 속도느릴 수 있음매우 빠름보통
로컬 NTP 서버 운영○(다소 복잡)×(불가)
설정 유연성높음중간낮음
가상 환경 적응
운용 실적 및 정보량
추천 용도서버, 조직 내 통일가상 환경, 노트북 PC단일 PC, 초보자용

사용 상황별 추천

  • 서버 용도(특히 지속 가동 환경)ntpd 또는 chrony를 추천합니다. 안정성과 정확도가 중요합니다.
  • 클라우드 환경 및 가상 머신, 노트북 PCchrony가 가장 유연하고 고정밀합니다.
  • 단일 PC에서 간단한 시계 동기화가 목적systemd-timesyncd로 충분합니다.

7. 자주 묻는 질문(FAQ)

Q1. Ubuntu 22.04에서는 ntpd가 처음부터 설치되어 있나요?

A1. 아니요, Ubuntu 22.04에서는 ntpd가 기본으로 설치되어 있지 않습니다. 기본적으로 systemd-timesyncd가 활성화되어 있어 시각 동기화를 간단히 수행하고 있습니다. ntpd를 사용하려면 명시적으로 ntp 패키지를 설치해야 합니다.
sudo apt install ntp
또한, 설치 후에는 systemd-timesyncd를 비활성화해 두면 충돌을 피할 수 있습니다.

Q2. ntpq -p가 제대로 표시되지 않는데?

A2. 몇 가지 원인이 생각됩니다.
  • 서비스가 시작되지 않음sudo systemctl status ntp로 확인하고, 필요에 따라 시작
  • NTP 서버와 통신이 안 됨:방화벽이 UDP 포트 123을 차단하고 있지 않은지 확인
  • 설정 파일의 서술 오류/etc/ntp.conf에 오기가 없는지 확인
우선 아래 명령으로 기본 동작을 확인해 봅시다.
ntpq -p
출력이 비어 있거나 reach0인 경우, 외부 서버와의 통신에 실패했을 가능성이 있습니다.

Q3. ntpd와 chrony, 어느 것을 선택해야 할까요?

A3. 사용 환경에 따라 최적의 도구가 다릅니다.
  • 장기 가동되는 물리 서버나 로컬 NTP 서버 구축ntpd가 안정성에 뛰어나므로 추천
  • 가상 환경이나 노트북, 가변 네트워크 환경(Wi-Fi 등)chrony가 더 높은 정밀도와 속도를 제공합니다
  • 간단한 시각 맞춤만으로 충분한 경우systemd-timesyncd로 해결할 수 있습니다

Q4. ntpd -gq는 무엇을 하는 명령인가요?

A4. ntpd -gq는 한 번만 NTP 서버와 동기화하고 바로 종료하는 명령입니다.
  • -g:큰 시간 차이도 허용하고 수정
  • -q:한 번만 동기화하고 종료(데몬으로 상주하지 않음)
시각이 크게 차이나서 일반적인 ntpd로는 보정되지 않는 경우에, 이 명령을 사용하면 한 번만 정확한 시각에 맞출 수 있습니다.

Q5. NTP 서버를 여러 개 지정하는 의미가 있나요?

A5. 네, 여러 NTP 서버를 지정함으로써 중복성 및 신뢰성을 확보할 수 있습니다. 만약 하나의 서버에 장애가 발생해도 다른 서버에서 시각 정보를 얻을 수 있어 안정적인 동기화가 가능합니다. 설정 예시 (/etc/ntp.conf):
server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

8. 요약: 안정적인 시각 동기화로 시스템 신뢰성 향상

ntpd의 매력을 재확인

Ubuntu 시스템에서 정확한 시각 동기화는 단순한 편리성을 넘어, 보안·트러블슈팅·로그 관리·자동 처리의 정확성 등 모든 운영 측면에 직접 연결되는 중요한 요소입니다. 본 기사에서는 NTP(Network Time Protocol)의 기본부터, ntpd를 사용한 시각 동기화 메커니즘, 도입 방법, 설정 커스터마이징, 동작 확인, 그리고 다른 도구와의 비교까지 포괄적으로 설명했습니다.

독자에게 조언

Ubuntu에서 어떤 시각 동기화 도구를 채택할지는 시스템의 목적·구성·가용성 요구사항에 따라 달라집니다。 하지만, “정확한 시각 없이는 안정적인 운영이 없다”는 원칙은 모든 환경에 공통됩니다.
  • 서버 용도 및 로그 관리를 중시하는 경우ntpd 또는 chrony를 확실히 구성
  • 단독 사용으로 간단히 처리하고 싶은 경우systemd-timesyncd로 손쉽게 도입
시각 동기화의 정확성은 일상 운영에서는 눈에 띄기 어렵지만, 문제 발생 시 “차이를 알 수 있는 기준”으로 반드시 도움이 됩니다. 꼭 본 기사를 참고하여, 여러분의 Ubuntu 환경에 최적의 시각 동기화 시스템을 구축하시기 바랍니다.
年収訴求