리눅스 시스템의 시간은 정확해야 합니다. 정확한 시간은 시스템의 안정적인 운영과 보안을 위해 필수적입니다. NTP(Network Time Protocol)는 네트워크를 통해 시간 정보를 동기화하는 프로토콜입니다. NTP 서버를 사용하여 리눅스 시스템의 시간을 정확하게 유지할 수 있습니다.
리눅스 NTP 서버 시간 동기화 설정 단계
NTP 서버 시간 동기화는 다음과 같은 단계로 수행할 수 있습니다.
- chrony 패키지를 설치합니다.
- chrony.conf 파일을 편집하여 NTP 서버의 주소를 지정합니다.
- chronyd 서비스를 활성화하고 시작합니다.
- chronyc 명령을 사용하여 시간 동기화 상태를 확인합니다.
- timedatectl 명령을 사용하여 시스템의 시간을 확인합니다.
리눅스 NTP chrony
chrony 패키지 설치
chrony 패키지는 대부분의 리눅스 배포판의 기본 패키지 저장소에 포함되어 있습니다. 다음 명령을 사용하여 chrony 패키지를 설치할 수 있습니다.
# yum install chrony -y
chrony.conf 파일 편집
chrony.conf 파일은 chronyd 서비스의 설정을 지정하는 파일입니다. chrony.conf 파일을 편집하여 NTP 서버의 주소를 지정합니다. 다음은 NTP 서버 time.bora.net을 사용하는 예입니다.
# vi /etc/chrony.conf
server time.bora.net iburst
chronyd 서비스 활성화 및 시작
chronyd 서비스는 chrony 패키지를 설치하면 자동으로 활성화되지 않습니다. 다음 명령을 사용하여 chronyd 서비스를 활성화하고 시작할 수 있습니다.
# systemctl enable chronyd
# systemctl restart chronyd
chronyc 명령으로 시간 동기화 상태 확인
chronyc 명령을 사용하여 시간 동기화 상태를 확인할 수 있습니다. 다음 명령을 사용하여 chronyd 서비스의 현재 상태를 확인할 수 있습니다.
# chronyc sources -v
chronyc sources -v 명령으로 chronyd 서비스의 현재 상태를 확인하면 다음과 같은 출력 화면을 볼 수 있습니다.
chronyc sources -v
- time.bora.net 10.129.15.200 1 60 377 427ms 0.000ms 2023-07-20 08:35:03 +0900 -0.000000000000000000
출력 결과에서 다음과 같은 정보를 확인할 수 있습니다.
Source
: NTP 서버의 이름 또는 IP 주소입니다.Reference
: NTP 서버의 기준 시계입니다.Stratum
: NTP 서버의 신뢰도 수준입니다.Poll
: NTP 서버와의 동기화 간격입니다.Reach
: NTP 서버에 접근할 수 있는지 여부입니다.LastRx
: NTP 서버로부터 시간 정보를 수신한 마지막 시간입니다.LastErr
: NTP 서버로부터 시간 정보를 수신하는 데 발생한 오류입니다.When
: NTP 서버로부터 시간 정보를 수신한 마지막 시간의 UTC 시간입니다.Drift
: NTP 서버와 리눅스 시스템 간의 시간 차이입니다.
출력 결과에서 Stratum
은 NTP 서버의 신뢰도 수준을 나타냅니다. Root Delay
는 NTP 서버와 리눅스 시스템 간의 지연 시간을 나타냅니다. Root Dispersion
은 NTP 서버와 리눅스 시스템 간의 분산을 나타냅니다.
리눅스 NTP timedatectl
timedatectl 명령으로 시스템 시간 확인
timedatectl 명령을 사용하여 시스템의 시간을 확인할 수 있습니다. 다음 명령을 사용하여 시스템의 현재 시간을 확인할 수 있습니다.
# timedatectl
timedatectl 출력 결과
출력 결과에서 System Clock
은 시스템의 현재 시간을 나타냅니다. NTP synchronized
는 시스템 시간이 NTP 서버와 동기화되었는지 여부를 나타냅니다.
timedatectl 명령으로 시스템의 시간을 확인하면 다음과 같은 출력 화면을 볼 수 있습니다.
# timedatectl
Local time: 2023-07-20 08:35:03.000184186 +09:00
Universal time: 2023-07-20 01:35:03.000184186 UTC
RTC time: 2023-07-20 08:35:03.000184186 +09:00
Time zone: Asia/Seoul (KST)
NTP synchronized: yes
NTP peer: time.bora.net
NTP drift: 0.000000000000000000 seconds
System clock synchronized: yes
System clock error: 0.000000000 seconds
Last synchronization: 2023-07-20 08:35:03.000184186
timedatectl 출력 정보
출력 결과에서 다음과 같은 정보를 확인할 수 있습니다.
Local time
: 리눅스 시스템의 현재 시간입니다.Universal time
: UTC 시간입니다.RTC time
: 리눅스 시스템의 RTC(Real-Time Clock) 시간입니다.Time zone
: 리눅스 시스템의 시간대입니다.NTP synchronized
: NTP 서버와 시간 동기화가 되어 있는지 여부입니다.NTP peer
: NTP 동기화를 수행하는 NTP 서버의 이름 또는 IP 주소입니다.NTP drift
: NTP 서버와 리눅스 시스템 간의 시간 차이입니다.System clock synchronized
: 리눅스 시스템의 시간이 NTP 서버와 동기화되어 있는지 여부입니다.System clock error
: NTP 서버와 리눅스 시스템 간의 시간 차이입니다.Last synchronization
: NTP 서버와 시간 동기화가 마지막으로 수행된 시간입니다.
추가 설정
chrony.conf 파일에서 다음 설정을 사용하여 시간 동기화 성능을 개선할 수 있습니다.
driftfile
: chronyd 서비스가 시간 동기화를 위해 사용하는 드리프트 파일의 경로를 지정합니다.maxupdateskew
: NTP 서버의 시간과 리눅스 시스템 시간의 차이가 허용되는 최대 값을 지정합니다.logdir
: chronyd 서비스의 로그 파일이 저장되는 디렉토리의 경로를 지정합니다.
시간대 설정
chronyd 서비스는 NTP 서버에서 시간대 정보를 가져옵니다. 따라서 chronyd 서비스를 사용하면 별도의 설정 없이도 시스템의 시간대를 자동으로 설정할 수 있습니다.
그러나 시스템의 시간대를 수동으로 설정하려면 다음 명령을 사용하여 timedatectl 명령을 사용할 수 있습니다.
# timedatectl set-timezone Asia/Seoul
이 명령은 시스템의 시간대를 한국으로 설정합니다.