1. 소개: 시간 동기화가 중요한 이유
시스템 시간 드리프트가 초래하는 문제
Ubuntu와 같은 Linux 시스템에서는 정확한 시스템 시간을 유지하는 것이 매우 중요합니다. 겉보기에는 작은 시계 오차가 사소해 보일 수 있지만, 서버 운영 및 애플리케이션 환경에서는 사소한 시간 드리프트도 심각한 문제를 일으킬 수 있습니다.
예를 들어, 다음과 같은 문제가 발생할 수 있습니다:
- 로그 일관성 손실 시스템 또는 애플리케이션 로그의 타임스탬프가 맞지 않으면 사고의 근본 원인을 파악하기 어려워집니다.
- 크론 작업 오작동 백업이나 배치 작업과 같은 예약 작업이 정확한 시간에 실행되지 않아 예기치 않은 동작이 발생합니다.
- 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의 핵심 특징은 “부드러운 동기화(smooth synchronization)”를 수행한다는 점으로, 급격한 시간 변동이 아니라 점진적으로 시간 드리프트를 보정합니다. 이러한 설계는 실행 중인 시스템 및 애플리케이션에 부정적인 영향을 최소화합니다.
또한 대칭 통신 및 인증과 같은 고급 NTP 기능을 지원해 기업 환경에서도 적합합니다.
Ubuntu에서 제공하는 시간 동기화 도구
Ubuntu에서는 여러 시간 동기화 옵션을 제공합니다:
- ntpd (ntp 패키지) 장기 운영 및 세밀한 설정이 필요한 환경에서 널리 사용됩니다. 높은 유연성과 안정성을 제공하며 공용 NTP 서버와 정확하게 동기화할 수 있습니다.
- chrony ntpd에 대한 현대적인 대안으로, 높은 정확도와 매우 빠른 초기 동기화를 제공합니다. 저사양 시스템 및 가상 머신에서 잘 작동하며, 많은 배포판에서 기본값으로 채택하고 있습니다.
- systemd-timesyncd Ubuntu 20.04 이후 기본으로 활성화되는 경량 시간 동기화 서비스입니다. 간단하고 편리하지만 기능이 제한적이며 고급 설정이나 로컬 NTP 서버 운영에는 적합하지 않습니다.
왜 ntpd를 선택해야 할까?
Ubuntu에서 ntpd를 선택하는 가장 큰 이유는 신뢰성과 안정성입니다. 특히 다음과 같은 상황에 적합합니다:
- 장시간 연속 운영되며 시간 정확도가 중요한 서버
- 네트워크 내에 로컬 NTP 서버를 구축해야 하는 환경
- 인증 및 세밀한 제어가 필요한 기업용 사례
ntpd는 오랜 운영 역사를 가지고 호환성이 넓어 배포 시 안심할 수 있습니다.
3. Ubuntu에 ntpd 설치 및 초기 설정
ntpd 설치
Ubuntu에서 ntpd를 사용하려면 먼저 ntp 패키지를 설치해야 합니다. 다음 명령어를 사용하면 쉽게 설치할 수 있습니다:
.
sudo apt update
sudo apt install ntp
이 명령은 ntpd와 관련 파일들을 설치합니다. Ubuntu 버전에 따라 기본적으로 chrony 또는 systemd-timesyncd가 활성화되어 있을 수 있습니다. 이러한 경우, 미리 비활성화하거나 제거하는 것이 권장됩니다.
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
서비스 활성화 및 시작 확인
설치가 끝난 후, ntpd 서비스를 활성화하고 실행 중인지 확인합니다:
sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp
상태가 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.nict.jp(국립정보통신기술원)ntp.jst.mfeed.ad.jp(JST / Mfeed)ntp.ring.gr.jp(Internet Multi Feed)
이들 서버는 고정밀 원자시계를 기반으로 운영되며, 별도의 등록 없이 개인 용도로도 사용할 수 있습니다.
다음 항목들을 /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 지시어 NTP 서비스에 접근할 수 있는 클라이언트를 제한하거나 허용합니다. 보안상의 이유로 불필요한 접근은 차단하는 것이 좋습니다. 예시: 로컬 네트워크에서의 접근 허용.
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
- driftfile 시스템 시계의 드리프트(오차)를 기록하는 파일을 지정합니다. 대부분의 경우 기본값으로 충분합니다.
driftfile /var/lib/ntp/ntp.drift

네트워크 내 로컬 NTP 서버 구축
Ubuntu에서 ntpd를 이용하면 내부 네트워크의 다른 장치에 시간을 배포하는 로컬 NTP 서버 역할도 수행할 수 있습니다. 이 구성은 인터넷 연결이 불가능한 환경이나 여러 시스템 간에 일관된 시간 관리가 필요할 때 유용합니다.
예시 설정 절차는 다음과 같습니다:
- 로컬 접근을 허용하도록
/etc/ntp.conf에restrict규칙을 추가합니다:restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap - 클라이언트 PC가 로컬 NTP 서버를 참조하도록 설정합니다:
server 192.168.0.10 iburst # 로컬 NTP 서버의 IP - 서버에서 NTP 포트를 허용합니다(방화벽에서 UDP 123 포트 허용):
sudo ufw allow 123/udp
통신이 차단되면 시간 동기화가 실패하고, ntpq 명령에서 서버와의 연결이 표시되지 않습니다.
final answer.## 5. ntpd 작동 확인 및 문제 해결
서비스 상태 확인
ntpd가 정상적으로 실행되고 있는지 확인하려면 다음 명령을 사용합니다:
sudo systemctl status ntp
active (running)이 표시되면 ntpd가 정상적으로 동작하고 있는 것입니다. 상태가 inactive 또는 failed인 경우, 설정 오류나 의존성 문제 때문에 시작되지 않을 수 있습니다.
자세한 로그를 확인하려면 다음 명령이 유용합니다:
journalctl -u ntp
이 명령을 통해 ntpd 서비스의 시작 이력과 오류 메시지를 시간 순서대로 검토할 수 있습니다.
동기화 상태 확인 (ntpq -p)
ntpq -p 명령은 ntpd가 NTP 서버와 제대로 동기화되고 있는지 확인할 때 가장 많이 사용됩니다.
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: 서버 스트라텀(값이 낮을수록 정확함; 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 # Perform a one-time immediate synchronization sudo systemctl restart ntp
지속적인 모니터링
운영 환경에서는 ntpq -p 출력 결과를 주기적으로 기록하고 이상 징후에 대한 알림을 설정하는 것이 권장됩니다. 로그가 누락되거나 reach 값이 지속적으로 0에 머무는 경우를 조기에 감지하면 장애를 빠르게 파악할 수 있습니다.
6. ntpd와 다른 시간 동기화 도구 비교
Ubuntu에서 주요 시간 동기화 도구
Ubuntu는 각각 특성이 다른 여러 시간 동기화 도구를 제공합니다. 시스템 요구사항과 사용 사례에 맞는 도구를 선택해야 합니다.
- ntpd (ntp 패키지)
- chrony
- systemd-timesyncd
ntpd의 특성
- 장점
- 오랜 운영 역사를 바탕으로 입증된 안정성과 신뢰성
- 세밀한 설정 옵션(로컬 NTP 서버, 인증, 대칭 모드 등)을 제공하는 풍부한 기능
- 공용 NTP 서버와의 높은 호환성 및 풍부한 문제 해결 자료
- 단점
- 시작 후 초기 동기화가 다소 느릴 수 있음
- 가상화 환경이나 변동성이 큰 네트워크 등 최신 환경에 대한 적응성이 떨어짐
chrony의 특성
- 장점
- 부팅 직후에도 매우 빠른 초기 동기화
- 가상화되거나 네트워크 환경이 변동적인 경우(노트북, VPN) 높은 정확도
- 적응형 학습을 통해 시간이 지남에 따라 정확도가 향상되며, 때때로 ntpd보다 뛰어남
- 단점
- 로컬 NTP 서버로 사용할 경우 약간 더 복잡한 설정
- ntpd에 비해 문서가 적고 실제 사례가 적음
systemd-timesyncd의 특성
- 장점
- Ubuntu 20.04 이후 기본 활성화, 관리가 매우 쉬움
- 기본 동기화 기능만으로도 최소한의 리소스 사용
- systemd와 잘 통합되어 표준 Ubuntu 환경에 적합
- 단점
- 기능이 제한적이며, 고급 설정 및 로컬 NTP 서버 운영을 지원하지 않음
- 정확도와 로그 기능이 기본 수준이라 대규모 시스템에는 부적합
비교 표
| Feature | ntpd | chrony | systemd-timesyncd |
|---|---|---|---|
| Accuracy | High | Very High | Moderate |
| Initial Sync Speed | Sometimes Slow | Very Fast | Moderate |
| Local NTP Server | Excellent | Good (More Complex) | Not Supported |
| Configuration Flexibility | High | Medium | Low |
| Virtual Environment Support | Limited | Excellent | Good |
| Operational History & Resources | Excellent | Good | Limited |
| Recommended Use Cases | Servers, Organization-wide Sync | Virtual Environments, Laptops | Single PCs, Beginners |
사용 사례별 권장 도구
- 서버 환경(특히 항상 켜져 있는 시스템) → 안정성과 정확성을 위해 ntpd 또는 chrony.
- 클라우드 환경, 가상 머신, 노트북 → 가장 높은 유연성과 정밀도를 제공하는 chrony.
- 기본 동기화만 필요한 단일 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
출력이 비어 있거나 reach가 0인 경우 외부 서버와의 통신에 문제가 있을 가능성이 높습니다.
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 기본 개념, ntpd를 사용한 시간 동기화 작동 방식, 설치 및 구성 단계, 사용자 정의 옵션, 검증 및 문제 해결 방법, 그리고 대체 도구와의 비교에 대한 포괄적인 개요를 제공했습니다.
독자에게 드리는 조언
Ubuntu에서 시간 동기화 도구를 선택할 때는 시스템 목적, 아키텍처, 가용성 요구 사항에 따라 달라집니다.
그러나 원칙은 언제나 동일합니다: 정확한 시간이 없으면 안정적인 시스템 운영은 불가능합니다.
- 서버 환경 및 로그가 많이 발생하는 시스템 →
ntpd또는chrony를 신중하게 구성하세요 - 간단한 요구 사항을 가진 단일 시스템 → 빠른 설정을 위해
systemd-timesyncd를 사용하세요
시간 동기화 문제는 일상적인 운영에서는 흔히 눈에 띄지 않지만, 사고를 해결할 때는 핵심적인 차별점이 됩니다.
이 가이드를 활용하여 Ubuntu 환경에 가장 적합한 시간 동기화 설정을 구축하세요.


