[Linux]NTP 패키지(chrony)를 설치하여 시간 동기화 하기

NTP(Network Time Protocol) 패키지를 설치하여 서버 시간 동기화를 수행하는 목적은 정확하고 일관된 시간을 유지하고 네트워크 상의 다양한 기기와 서버들 간에 시간을 동기화하여 효율적인 작업 및 로깅, 보안 및 데이터 정합성을 보장하는 것입니다.

NTP를 사용하여 서버 시간을 동기화하는 이유와 목적은 다음과 같습니다:

  1. 정확한 시간 유지: 컴퓨터와 네트워크 장치들 간에 정확한 시간을 유지하는 것은 데이터 정합성과 시스템 동작에 필수적입니다. 시간이 정확하지 않으면 로깅이나 타임스탬프 등에서 문제가 발생할 수 있습니다.
  2. 보안 강화: 시스템 로그와 보안 이벤트에 정확한 시간 정보를 유지하면, 보안 사건의 발생 시점을 정확히 파악할 수 있습니다. 시간 정보가 정확하지 않으면 보안 분석과 사건 관리가 어려워집니다.
  3. 분산 시스템 및 클라우드 환경: 클라우드 서비스나 분산 시스템에서는 서로 다른 지역의 서버들이 동작하므로 시간 동기화가 중요합니다. 이를 통해 분산 시스템 내의 여러 서버들이 일관된 시간을 가지게 되어 데이터의 일관성을 유지할 수 있습니다.
  4. 네트워크 트래픽 분석: 네트워크 문제를 분석할 때 시간 동기화가 필요합니다. 네트워크 이벤트가 언제 발생했는지 추적하여 문제의 근본 원인을 찾을 수 있습니다.
  5. 긴급 대응과 복구: 시스템의 장애나 사고가 발생할 경우, 정확한 시간 정보를 가지고 있으면 긴급 상황에서 빠르게 대응하고 복구할 수 있습니다.

ntpdchronyd는 둘 다 리눅스 시스템에서 시간 동기화를 관리하는 데 사용되는 도구입니다. 그러나 이 둘은 몇 가지 차이점을 가지고 있습니다.

  1. ntpd (Network Time Protocol Daemon):
    • ntpd는 오랜 기간 동안 사용된 클래식한 NTP 데몬입니다.
    • 주요 목표는 안정적이고 정확한 시스템 시간을 유지하는 것입니다.
    • 시간 동기화를 위해 작은 보정값을 계속 적용하여 서버의 시계를 조정합니다.
    • 초기 설정이 조금 복잡할 수 있으며, 시스템 부팅 시 시간 동기화가 느릴 수 있습니다.
    • 정확한 시간 유지와 오랜 시간 동작이 중요한 경우에 유용합니다.
  2. chronyd (Chrony Daemon):
    • chronyd는 상대적으로 최근에 개발된 NTP 및 NTPD의 대안으로 등장한 데몬입니다.
    • 더 정확한 시간 동기화와 네트워크 불안정성에 더 잘 대응하기 위해 설계되었습니다.
    • chronyd는 네트워크 지연을 고려한 알고리즘을 사용하여 보다 정확한 시간을 유지합니다.
    • 초기 설정이 더 간단하며, 부팅 후 빠르게 시간 동기화가 이루어집니다.
    • 인터넷 연결이 불안정하거나 네트워크 변동이 빈번한 환경에서 유용합니다.

간단히 말해, ntpd는 안정성과 오랜 시간 동작을 중요시하는 경우에, chronyd는 정확성과 빠른 시간 동기화를 중요시하는 경우에 더 적합한 선택일 수 있습니다. 선택은 사용자의 요구사항과 환경에 따라 달라집니다.

최근에 개발되고 Redhat계열의 표준 NPT 데몬으로 선정된 chronyd를 사용해서 서버 시간 동기화를 설정하는 절차를 알아 보겠습니다.

  1. ntpdchronyd는 동시에 사용할 수 없으므로 ntp 데몬이 설치되어 있다면 ntpd의 서비스를 중지시킵니다.
    설치되어 있지 않다면 이번 단계는 건너뜁니다.

    systemctl disable --now ntpd.service
  2. 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
  3. 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
  4. chronyd 데몬의 환경 설정파일에 기존에 등록된 타임 서버는 주석처리(#)하고 사용할 타임 서버 추가 등록
    – 사내 네트워크에 타임 서버가 준비되어 있다면 사내 타임 서버를 등록하거나,
    – 인터넷 연결이 가능하다면 외부 타임 서버를 등록합니다.(저는 LGU+에서 제공하는 타임 서버 사용: time.bora.net)
    – 설정이 완료되면 chronyd 데몬의 재시작이 필요합니다.

    [root@centos8 ~]# vi /etc/chrony.conf
    server time.bora.net iburst ..... MORE .....
    [root@centos8 ~]# systemctl restart chronyd.service
  5. 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
  6. 시스템 타임과 그 설정값을 조회
    RTC를 Local Time Zone으로 설정하는 방법에 대해서도 알아보겠습니다.
    [root@centos8 ~]# timedatectl
    Local 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

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다