Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 시간을 NTP 서버와 동기화하는 방법 완벽 가이드

리눅스 시간을 NTP 서버와 동기화하는 방법 완벽 가이드

컴퓨터의 시계는 완벽하지 않습니다. 며칠, 몇 주, 몇 달이 지나면 실제 시간과 어긋나기 시작하고, 결국 정확한 시간을 표시하지 못하게 됩니다. 쉽게 말해, 시계가 어긋난 후에는 실제로 '10:33'일 때 '10:30'으로 표시할 수 있다는 뜻입니다. 예전 컴퓨터에서는 주기적으로 컴퓨터 시계를 수동으로 다시 맞추는 것이 일반적인 관행이었습니다. 하지만 인터넷 연결이 보편화된 이후에는 현대 운영체제가 NTP 서버의 도움을 받아 시계를 자동으로 조정하기 시작했습니다.

NTP란 무엇인가?

NTP는 Network Time Protocol(네트워크 타임 프로토콜)의 약자입니다. 네트워크 연결을 통해 컴퓨터 시계를 동기화하고 정확한 시간을 유지하도록 설계된 알고리즘입니다.

리눅스에서 시간 동기화 활성화 방법

다행히도 대부분의 리눅스 배포판은 기본적으로 한 형태든 다른 형태로 시간 동기화 기능을 제공합니다. 컴퓨터 시계가 스마트폰 시계와 어긋난 것을 본 적이 없다면, 이미 NTP 클라이언트/데몬이 실행 중일 가능성이 거의 확실합니다.

systemd를 사용하는 리눅스 OS에서

대부분의 리눅스 배포판은 systemd를 채택했으며, 여기에는 'systemd-timesyncd' 데몬이 포함되어 있습니다. 즉, Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro 등에는 NTP 클라이언트가 이미 사전 설치되어 있습니다. 이러한 배포판과 그 기반 배포판(예: elementary OS, Zorin OS)에서는 다음 명령어로 NTP 동기화가 활성화되어 있는지 확인할 수 있습니다.

timedatectl

리눅스 시간을 NTP 서버와 동기화하는 방법 완벽 가이드

출력 결과에 Network time on: yes가 표시되면 컴퓨터 시계가 NTP를 통해 자동으로 주기적으로 조정되고 있는 것입니다. 때때로 NTP synchronized: no가 표시될 수도 있는데, 이는 'systemd-timesyncd' 외에 다른 도구를 통해 시계가 동기화되고 있음을 의미할 수 있습니다. 또는 systemd-timesyncd가 아직 동기화하지 않았지만 나중에 동기화할 예정이라는 의미일 수도 있습니다.

Network time on: no가 표시된다면, 다음 명령어를 실행하여 NTP 시간 동기화를 활성화하세요.

sudo timedatectl set-ntp true

이러한 배포판에서는 이것만 하면 됩니다.

systemd를 사용하지 않는 리눅스 OS에서

최근 MX Linux가 큰 인기를 얻으면서, 이 OS를 예로 들어 시작하는 것이 적절해 보입니다. MX Linux는 특수한 경우입니다. systemd를 '어느 정도' 갖추고 있지만 동시에 '어느 정도' 갖추고 있지 않습니다. timedatectl은 네트워크 시간이 'on'이라고 보고하지만, 실제로는 systemd-timesyncd를 사용하지 않습니다.

그렇다면 어떻게 동기화할까요? 다음 명령어로 확인할 수 있으며, 이 명령어는 다른 모든 리눅스 운영체제에서도 사용할 수 있습니다.

sudo cat /var/log/syslog | grep ntp

MX Linux에서는 아래 그림과 비슷한 결과를 얻을 수 있습니다.

리눅스 시간을 NTP 서버와 동기화하는 방법 완벽 가이드

필터링된 로그 메시지에서 'ntpdate' 클라이언트가 한 번 실행된 것을 확인할 수 있습니다. ntpdate는 많은 리눅스 배포판에 기본 설치되어 있는 인기 있는 클라이언트입니다. 가볍고 NTP 서버에 가끔씩만 쿼리를 보냅니다. 백그라운드에서 상시 실행되지 않고 스크립트에 의해 트리거되어 동기화 후 종료됩니다.

즉, 시간이 극도로 높은 정밀도(밀리초 또는 마이크로초 단위)로 동기화되지는 않지만, 대부분의 용도로는 충분히 정확합니다. 일반적으로 최소 초 단위까지는 정확합니다.

다른 운영체제에서는 'ntpd'를 볼 수 있습니다. ntpd는 백그라운드에서 상시 실행되는 데몬으로 매우 정확합니다. 오래 실행될수록 더욱 정밀해집니다.

어떤 이유로든 systemd를 사용하는 운영체제에 ntp 또는 ntpdate를 설치하려면, 먼저 systemd의 NTP 클라이언트를 비활성화해야 합니다.

sudo timedatectl set-ntp false

물론 위 명령어는 systemd가 아닌 배포판에서는 필요하지 않습니다.

ntpdate 클라이언트 설치

ntpdate는 항상 인터넷에 연결되어 있지 않은 가정용 컴퓨터, 노트북 및 기타 장치에 적합합니다.

Debian, Ubuntu, Linux Mint, Zorin 및 이들을 기반으로 하는 다른 배포판에서는 다음을 실행하세요.

sudo apt install ntpdate

위의 모든 Debian 계열 배포판에서는 새 네트워크 연결을 감지하면 자동으로 실행되도록 기본 구성되어 있습니다. 네트워크 연결을 끊었다가 다시 연결하면 지금 즉시 시간 동기화를 강제할 수 있습니다.

Fedora에서는 ntpdate가 더 이상 권장되지 않으므로 대신 ntpd 데몬을 사용하는 것이 좋습니다(다음 섹션 참조). 다음 두 가지 이유로 다른 모든 배포판에서도 동일하게 권장됩니다.

  • 때때로 ntpdate를 별도 패키지로 포함하지 않고 ntpd와 함께 번들로 제공합니다.
  • 모든 네트워크 연결 시 ntpdate가 자동으로 실행되도록 설정하지 않습니다. 네트워크 연결 후 자동으로 실행되는 스크립트에 직접 ntpdate를 삽입해야 합니다.

이런 경우라면 다음 섹션의 안내에 따라 ntpd를 설치하는 것이 더 합리적입니다.

ntpd 데몬 설치

Debian, Ubuntu, Zorin, Mint 및 Debian이나 Ubuntu 기반의 다른 배포판에서는 다음을 실행하세요.

sudo apt install ntp

이러한 배포판들은 ntpd를 즉시 시작하고 매 부팅 시 자동으로 실행하므로 추가 작업이 필요 없습니다.

Fedora에서는 다음과 같이 설치합니다.

sudo dnf install ntp

CentOS에서는 다음을 실행합니다.

sudo yum install ntp

Arch Linux에서는 다음을 사용합니다.

sudo pacman -S ntp

openSUSE에서는 다음을 입력합니다.

sudo zypper install ntp

설치 후에는 부팅 시 서비스가 시작되도록 활성화한 다음 서비스를 시작합니다.

sudo systemctl enable ntpd
sudo systemctl start ntpd

systemd 없이 실행되는 다른 배포판에서는 대신 다음 명령어를 실행해야 할 수 있습니다.

sudo update-rc.d ntpd enable
sudo service ntpd start

또는 해당 OS에 상응하는 명령어를 사용하면 됩니다.

ntpd가 존재하지 않는다는 오류가 발생하면 위 명령어에서 'ntpd'를 'ntp'로 바꾸세요. 일부 배포판은 ntpd 데몬 서비스 파일을 다르게 명명합니다.

결론

적어도 그래픽 사용자 인터페이스(GUI)를 갖춘 리눅스 OS에서는 이러한 단계를 따라야 하는 경우가 드뭅니다. 시간 동기화는 이미 구성되어 있을 가능성이 높습니다. 하지만 이러한 단계는 문제를 디버깅할 때 도움이 될 수 있습니다. 많은 데스크톱 환경의 제어판에서는 시간 동기화를 켜고 끌 수 있습니다. 내부적으로는 유사한 명령어를 사용하여 이를 구성하므로, GUI 도구가 작동하지 않을 때 직접 처리할 수 있습니다.