- 우분투 OS의 경우 (22.04 이후), redhat 계열과 다르게 기본적으로 ntpd 또는 chronyd 둘 다 설치되지 않습니다.
대신 timedatectl 명령어와 함께 작동하는 systemd-timesyncd.service 가 설치됩니다.
timedatectl 사용법
– timedatectl status : 상태확인
– timedatectl show : 설정정보 확인
– timedatectl list-timezones : 사용가능한 timezone 확인
– timedatectl set-timezone Asia/Seoul : Seoul로 timezone 변경
– timedatectl set-ntp no : ntp 시간동기화 중지
– timedatectl set-time “2024-07-04 14:30:30” : 시간 설정 14시 30분 30초
– timedatectl set-ntp yes : ntp 시간동기화 활성화
– timedatectl set-local-rtc [yes:no] : local clock의 timezone를 UTC 기준이 아니라 local timezone와 동일하게 사용. (기본적으로 RTC:Real time clock:컴퓨터시간 은 UTC 기준으로 설정됨. Seoul로 OS에서 timezone가 설정되어 있으면 RTC+9시간으로 계산하여 OS에서 사용(최근 OS기준, 과거 OS는 RTC 또는 시스템클록에 timezone라는 개념이 없었음.) 이 RTC를 OS시간과 동일하게 맞출지(yes), UTC 기준으로 맞출지(no) 결정.
– timedatectl timesync-status : ntp 서버 시간동기화 상태 표시(–monitor 옵션붙여서 지속적 모니터 가능)
– timedatectl show-timesync : ntp 서버 시간동기화 상태 표시(machine readable)
timedatectl ntp server 설정변경
– /etc/systemd/timesyncd.conf 파일에서 설정 변경
(/etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.d/.conf /run/systemd/timesyncd.conf.d/.conf
/usr/lib/systemd/timesyncd.conf.d/*.conf 참조)
– systemctl restart systemd-timesyncd.service : systemd-timesyncd 재시작
NTP=203.248.240.140 : NTP 서버 IP 또는 FQDN 설정
RootDistanceMaxSec=16 : 패킷통신 최대 시간(linux기반 5s, Windows 기반 16s)
세부내역은 timesyncd.conf man page 참조
실행 예시.
# timedatectl status
Local time: Thu 2024-07-04 15:02:02 KST
Universal time: Thu 2024-07-04 06:02:02 UTC
RTC time: Thu 2024-07-04 06:02:02
Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
# timedatectl show
Timezone=Asia/Seoul
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Thu 2024-07-04 15:04:56 KST
RTCTimeUSec=Thu 2024-07-04 15:04:56 KST
# timedatectl timesync-status
Server: 185.125.190.56 (ntp.ubuntu.com)
Poll interval: 17min 4s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 2
Reference: 4FF33C32
Precision: 1us (-25)
Root distance: 1.037ms (max: 5s)
Offset: -6.332ms
Delay: 249.626ms
Jitter: 8.558ms
Packet count: 6
Frequency: +22.490ppm
** timedatectl timesync-status에서 각 항목의 의미
Frequency: 시스템의 로컬 클럭이 얼마나 빠르거나 느린지를 나타내는 값입니다. ppm
(parts per million) 단위로 표시됩니다.
Server: 현재 시스템이 시간 동기화를 위해 사용하는 NTP(Network Time Protocol) 서버의 주소입니다.
Poll interval: 시스템이 NTP 서버와 동기화하는 주기(간격)입니다.
Leap: 윤초(leap second) 상태를 나타냅니다. normal
이면 특별한 윤초 조정이 없는 상태입니다.
Version: NTP 프로토콜의 버전입니다. 여기서는 버전 4를 사용하고 있습니다.
Stratum: 시간 소스의 계층을 나타냅니다. Stratum 2
는 기본적인 시간 소스(예: GPS, 원자 시계 등)에서 직접 시간을 얻는 것이 아니라, 다른 NTP 서버(보통 Stratum 1)에서 시간을 얻는다는 뜻입니다.
Reference: 참조 시계(reference clock)의 식별자입니다.
Precision: 현재 시스템이 시간을 측정하는 정밀도를 나타냅니다.
Root distance: 현재 서버가 시간 소스로부터 얼마나 떨어져 있는지를 의미합니다. 값이 낮을수록 정확한 시간을 제공받을 가능성이 높습니다.
Offset: 시스템 시간과 NTP 서버 시간 간의 차이(편차)입니다.
Delay: NTP 요청이 서버에서 응답을 받을 때까지 걸린 지연 시간입니다.
Jitter: 시간 동기화 과정에서 발생한 변동(노이즈)을 나타냅니다. 값이 작을수록 안정적인 동기화를 의미합니다.
Packet count: 현재까지 서버와 주고받은 패킷 수입니다.
**NTPD를 사용시 ntpq -p 값 각 항목 의미.
remote: NTP 서버의 이름 또는 IP 주소입니다.
refid: 이 서버가 참조하는 상위 시간 서버의 식별자입니다.
st (Stratum): 시간 서버의 계층을 나타냅니다. Stratum 2
는 Stratum 1 서버에서 시간을 얻고 있다는 뜻입니다.
t (Type): 서버 유형입니다.u
: 유니캐스트(unicast) 서버l
: 로컬(local) 클럭-
: 아직 응답을 받지 못한 서버
when: 마지막으로 서버와 시간을 동기화한 후 경과된 시간(초 단위)입니다.
poll: 시스템이 서버와 동기화하는 간격(초 단위)입니다.
reach: 서버와의 최근 연결 상태를 8진수로 표시합니다. 377
은 최근 8번의 시도 중 모든 연결이 성공했음을 의미합니다.
delay: 요청을 보내고 응답을 받는 데 걸린 시간(밀리초 단위)입니다.
offset: 로컬 클럭과 NTP 서버 간 시간 차이(밀리초 단위)입니다.
jitter: 시간 동기화의 변동성(밀리초 단위)입니다. 값이 낮을수록 안정적인 동기화 상태를 의미합니다.

NTPD는 remote 의 서버주소 앞에 붙는 식별자를 통해 sync 상태를 구분한다.
기본적으로 “* , +” 만 정상적으로 동기화되는 서버라고 생각하면된다.
*
(sys.peer): 현재 시스템이 동기화하고 있는 주요 NTP 서버입니다.#
(selected): 동기화할 수 있는 서버지만 거리가 멀거나 다른 이유로 보조 서버로 선택됩니다.+
(candidate): 동기화 테스트를 통과했으며, 필요할 경우 동기화할 수 있는 후보 서버입니다.-
(outlyer): 클러스터링 검사 결과 동기화되지 않는 서버입니다..
(excess): 참조 서버가 너무 많아 선택되지 않은 서버입니다.x
(falsetick): 잘못된 시간 정보를 제공하는 서버로 판별되어 사용되지 않습니다.o
(pps.peer): PPS(Pulse Per Second) 신호를 통해 간접적으로 동기화되는 서버입니다.- (공백, reject): 거리가 너무 멀거나 신뢰할 수 없어 동기화되지 않는 서버입니다.