NTPD 소개와 설치 가이드
레거시 ntpd 소개와 운영 가이드입니다. chronyd와 선택 기준, ntp.conf, restrict, ntpq -p, ntpstat, UDP 123 방화벽, 로그 확인과 초기 시간 보정을 정리했습니다.
ntpd는 Network Time Protocol(NTP)로 서버 시간을 동기화하는 전통적인 데몬입니다. 현재 많은 리눅스 배포판은 기본 시간 동기화 도구로 chronyd를 권장하지만, 기존 시스템이나 특정 운영 표준에서는 여전히 ntpd를 사용합니다. 레거시 ntpd를 운영해야 하는 경우의 설치, 설정, 확인 절차를 정리합니다.
chronyd와 ntpd 선택
신규 서버라면 보통 chronyd를 먼저 검토하는 것이 좋습니다. VM, 노트북, 네트워크 단절이 잦은 환경에서는 chronyd가 더 다루기 쉽습니다. 반대로 이미 ntpd 기반으로 모니터링, 정책, 방화벽, 운영 절차가 잡혀 있는 환경이라면 동일성을 위해 ntpd를 유지할 수 있습니다.
설치
배포판 버전에 따라 패키지 이름과 제공 여부가 다를 수 있습니다.
# Ubuntu/Debian 계열
sudo apt update
sudo apt install -y ntp
# CentOS 7 계열
sudo yum install -y ntp
RHEL/Rocky/Alma 8 이상 계열에서는 chrony가 기본인 경우가 많습니다. ntp 패키지가 없거나 정책상 사용하지 않는 환경이면 chronyd 글을 확인하세요.
기본 설정
설정 파일은 보통 /etc/ntp.conf입니다. 조직 내부 NTP 서버가 있다면 외부 pool보다 내부 서버를 우선 사용합니다.
# /etc/ntp.conf 예시
driftfile /var/lib/ntp/drift
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
iburst는 초기 동기화를 빠르게 하는 데 도움이 됩니다. restrict는 외부에서 이 서버를 임의 질의하거나 peer로 쓰는 것을 제한하는 기본 안전장치입니다.
서비스 시작
# Ubuntu/Debian
sudo systemctl enable --now ntp
sudo systemctl status ntp --no-pager
# CentOS 7
sudo systemctl enable --now ntpd
sudo systemctl status ntpd --no-pager
동기화 상태 확인
ntpq -p
ntpstat 2>/dev/null || true
timedatectl
ntpq -p 출력에서 *가 붙은 source가 현재 선택된 시간 서버입니다. reach가 0이면 통신이 안 되는 상태이고, offset과 jitter가 크면 시간 품질이 좋지 않을 수 있습니다.
방화벽 확인
NTP는 UDP 123을 사용합니다. 클라이언트가 외부 NTP 서버로 나가는 것과, 이 서버가 내부 NTP 서버로 동작하는 것은 방화벽 방향이 다릅니다.
# outbound 확인
nc -vzu 0.pool.ntp.org 123
# firewalld에서 서버로 허용
sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload
문제 해결
journalctl -u ntp -n 100 --no-pager 2>/dev/null || journalctl -u ntpd -n 100 --no-pager
ntpq -pn
ss -lunp | grep ':123'
시간 차이가 너무 큰 서버는 ntpd가 천천히 보정하려고 하면서 수렴이 오래 걸릴 수 있습니다. 초기 구축 시에는 유지보수 시간에 수동 보정 후 서비스를 올리는 방식을 사용합니다.
sudo systemctl stop ntp 2>/dev/null || sudo systemctl stop ntpd
sudo ntpdate -u 0.pool.ntp.org
sudo systemctl start ntp 2>/dev/null || sudo systemctl start ntpd
ntpdate는 레거시 도구이므로 신규 환경에서는 chrony의 chronyc makestep 방식이 더 일반적입니다. ntpd 글에서는 기존 시스템 유지보수 관점으로만 이해하면 됩니다.