[Linux]NTP 패키지(chrony)를 설치하여 시간 동기화 하기
NTP(Network Time Protocol) 패키지를 설치하여 서버 시간 동기화를 수행하는 목적은 정확하고 일관된 시간을 유지하고 네트워크 상의 다양한 기기와 서버들 간에 시간을 동기화하여 효율적인 작업 및 로깅, 보안 및 데이터 정합성을 보장하는 것입니다.
NTP를 사용하여 서버 시간을 동기화하는 이유와 목적은 다음과 같습니다:
- 정확한 시간 유지: 컴퓨터와 네트워크 장치들 간에 정확한 시간을 유지하는 것은 데이터 정합성과 시스템 동작에 필수적입니다. 시간이 정확하지 않으면 로깅이나 타임스탬프 등에서 문제가 발생할 수 있습니다.
- 보안 강화: 시스템 로그와 보안 이벤트에 정확한 시간 정보를 유지하면, 보안 사건의 발생 시점을 정확히 파악할 수 있습니다. 시간 정보가 정확하지 않으면 보안 분석과 사건 관리가 어려워집니다.
- 분산 시스템 및 클라우드 환경: 클라우드 서비스나 분산 시스템에서는 서로 다른 지역의 서버들이 동작하므로 시간 동기화가 중요합니다. 이를 통해 분산 시스템 내의 여러 서버들이 일관된 시간을 가지게 되어 데이터의 일관성을 유지할 수 있습니다.
- 네트워크 트래픽 분석: 네트워크 문제를 분석할 때 시간 동기화가 필요합니다. 네트워크 이벤트가 언제 발생했는지 추적하여 문제의 근본 원인을 찾을 수 있습니다.
- 긴급 대응과 복구: 시스템의 장애나 사고가 발생할 경우, 정확한 시간 정보를 가지고 있으면 긴급 상황에서 빠르게 대응하고 복구할 수 있습니다.
ntpd
와 chronyd
는 둘 다 리눅스 시스템에서 시간 동기화를 관리하는 데 사용되는 도구입니다. 그러나 이 둘은 몇 가지 차이점을 가지고 있습니다.
- ntpd (Network Time Protocol Daemon):
ntpd
는 오랜 기간 동안 사용된 클래식한 NTP 데몬입니다.- 주요 목표는 안정적이고 정확한 시스템 시간을 유지하는 것입니다.
- 시간 동기화를 위해 작은 보정값을 계속 적용하여 서버의 시계를 조정합니다.
- 초기 설정이 조금 복잡할 수 있으며, 시스템 부팅 시 시간 동기화가 느릴 수 있습니다.
- 정확한 시간 유지와 오랜 시간 동작이 중요한 경우에 유용합니다.
- chronyd (Chrony Daemon):
chronyd
는 상대적으로 최근에 개발된 NTP 및 NTPD의 대안으로 등장한 데몬입니다.- 더 정확한 시간 동기화와 네트워크 불안정성에 더 잘 대응하기 위해 설계되었습니다.
chronyd
는 네트워크 지연을 고려한 알고리즘을 사용하여 보다 정확한 시간을 유지합니다.- 초기 설정이 더 간단하며, 부팅 후 빠르게 시간 동기화가 이루어집니다.
- 인터넷 연결이 불안정하거나 네트워크 변동이 빈번한 환경에서 유용합니다.
간단히 말해, ntpd
는 안정성과 오랜 시간 동작을 중요시하는 경우에, chronyd
는 정확성과 빠른 시간 동기화를 중요시하는 경우에 더 적합한 선택일 수 있습니다. 선택은 사용자의 요구사항과 환경에 따라 달라집니다.
최근에 개발되고 Redhat계열의 표준 NPT 데몬으로 선정된 chronyd
를 사용해서 서버 시간 동기화를 설정하는 절차를 알아 보겠습니다.
ntpd
와chronyd
는 동시에 사용할 수 없으므로 ntp 데몬이 설치되어 있다면 ntpd의 서비스를 중지시킵니다.
설치되어 있지 않다면 이번 단계는 건너뜁니다.systemctl disable --now ntpd.service
- Redhat 계열의 Linux를 사용하고 있다면 chrony 패키지가 디폴트로 설치되어 있습니다.
chrony 데몬의 상태를 확인하고 비활성화(inactive)되어 있다면 활성화시킵니다.systemctl status chronyd
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:chronyd(8)
man:chrony.conf(5)
systemctl enable --now chronyd.service
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service /usr/lib/systemd/system/chronyd.service.
chrony 패키지가 설치되어 있지 않다면 아래 명령어로 설치합니다.
dnf -y install chrony
- OS 방화벽(firewalld 데몬)를 사용하고 있다면
NTP 포트(123)가 오픈되어 있는지 확인하고, 오픈되어 있지 않다면 추가로 방화벽 정책에 등록해야 합니다.
다음 blog에서는 firewalld 데몬에 대한 설명과 관련 명령어의 사용법을 정리할 예정입니다.firewall-cmd --list-services
cockpit dhcpv6-client ssh
firewall-cmd --permanent --add-service=ntp
success
firewall-cmd --reload
success
firewall-cmd --list-services
cockpit dhcpv6-client ntp ssh
- chronyd 데몬의 환경 설정파일에 기존에 등록된 타임 서버는 주석처리(#)하고 사용할 타임 서버 추가 등록
– 사내 네트워크에 타임 서버가 준비되어 있다면 사내 타임 서버를 등록하거나,
– 인터넷 연결이 가능하다면 외부 타임 서버를 등록합니다.(저는 LGU+에서 제공하는 타임 서버 사용: time.bora.net)
– 설정이 완료되면 chronyd 데몬의 재시작이 필요합니다.[root@centos8 ~]# vi /etc/chrony.confserver time.bora.net iburst ..... MORE .....[root@centos8 ~]# systemctl restart chronyd.service - chronyd 데몬이 엑세스하고 있는 타임서버에 대한 정보 확인
Stratum : NTP(Network Time Protocol)의 계층을 Stratum이라 하며, 계급 구조의 순환 종속성을 방지하며 원자시계 또는 GPS와 같은 장치인 0단계부터 가장 낮은 15단계의 계층으로 구성된다. Stratum16은 비동기 장치를 의미한다.[root@centos8 ~]# chronyc sources -v.-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* time.bora.net 3 6 300 410 +701us[+3710us] +/- 179ms - 시스템 타임과 그 설정값을 조회
– RTC를 Local Time Zone으로 설정하는 방법에 대해서도 알아보겠습니다.[root@centos8 ~]# timedatectlLocal time: Mon 2023-08-14 20:14:50 KST Universal time: Mon 2023-08-14 11:14:50 UTC RTC time: Mon 2023-08-14 11:14:49 Time zone: Asia/Seoul (KST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no