NTP를 이용한 시간 동기화

이 페이지는 여러분의 컴퓨터의 시간을 정확하게 유지할 수 있는 방법을 설명합니다. 이것은 서버 머신에서 유용하게 사용되지만, 데스크탑 머신에서는 꼭 필요하지 않습니다.

NTP는 네트워크를 통해 시간을 동기화하는 TCP/IP 프로토콜입니다. 기본적으로 클라이언트는 서버에 현재 시간을 요청하여, 자신을 시계를 설정하는 데 사용합니다.

개념적으로는 간단하지만 이 뒷면에는 복잡한 사항들이 많이 포함되어 있습니다. 각 NTP 서버들에는 계층(tier)이 존재하는데, 1 계층의 NTP 서버들을 원자 시계에 연결되어 있으며, 2 계층과 3 계층 서버들은 실제적으로 인터넷을 통한 요청을 처리하기 위해 분산되어 있습니다. 또한 클라이언트 소프트웨어도 여러분이 생각하는 것보다 매우 복잡하게 구성되어 있습니다. 이 소프트웨어들은 통신에 따른 지연 시간을 계산해야 하며, 서버에서 동작하고 있는 다른 모든 프로세스들에게 안전한 방식으로 시간을 변경해야 합니다. 하지만 다행히도 이러한 복잡한 모든 사항들은 여러분이 고려할 필요가 없습니다!

우분투는 ntpdate와 ntpd라는 두 가지 방법을 통해 자동으로 시간을 설정할 수 있습니다.

ntpdate

우분투는 기본적으로 ntpdate를 포함하고 있으며, 이것은 부팅 시에 한 번만 우분투 NTP 서버에 연결하여 여러분의 시간을 설정하도록 되어 있습니다. 하지만 서버의 시계는 재부팅되기 전까지 많은 오차가 생길 수 있으므로, 시간을 자주 정정하는 것이 좋습니다. 이를 위한 가장 손쉬운 방법은 cron을 통해 매일 ntpdate를 실행하는 것입니다. 여러분이 사용하는 편집기를 관리자 권한으로 연 다음, 다음과 같은 내용을 포함하는 /etc/cron.daily/ntpdate 파일을 생성하세요:

ntpdate ntp.ubuntu.com

물론 /etc/cron.daily/ntpdate 파일은 실행 권한을 가지고 있어야 합니다.

sudo chmod 755 /etc/cron.daily/ntpdate

ntpd

ntpdate는 약간 둔한 프로그램입니다. 이 프로그램은 오직 하루에 한번만 대대적인 시간 정정을 수행합니다. ntp 대몬인 ntpd는 좀더 세밀하게 사용할 수 있습니다. 이 프로그램은 시스템 시계의 오류를 계산하여 꾸준히 정정합니다. 따라서 (예를 들어 로그 시각의 충돌을 일으킬 수도 있는) 대대적인 정정이 일어나지 않습니다. 이를 위해서는 약간의 CPU 파워와 메모리가 소모되지만, 최신의 서버에서 이 정도는 무시할 수 있는 수준입니다.

ntpd를 설정하려면:

sudo apt-get install ntp-simple

타임 서버 변경하기

위의 두 경우 모두, 여러분의 시스템은 기본적으로 ntp.ubuntu.com에 있는 우분투의 NTP 서버를 이용합니다. 이것은 아무런 문제가 없습니다, 하지만 여러분은 여러 서버들을 이용하여 정확도를 높이거나 신속한 정정을 하고 싶을 수도 있으며, 지리적으로 가까운 곳에 있는 타임 서버를 사용하고 싶을 수도 있습니다. ntpdate를 이용하는 경우에는 /etc/cron.daily/ntpdate 파일의 내용을 다음과 같이 수정하여 타임 서버를 변경할 수 있습니다.

ntpdate ntp.ubuntu.com pool.ntp.org 

ntpd를 사용하는 경우에는 /etc/ntp.conf 파일을 편집하여 다음과 같이 서버를 추가합니다:

server ntp.ubuntu.com
server pool.ntp.org

위의 예제에서는 pool.ntp.org 서버를 사용한 것을 알 수 있습니다. 이것은 라운드-로빈 DNS를 사용하여 NTP 서버를 풀에서 가져와서 여러 서버들에게 부하를 분산시킬 수 있는 좋은 방식입니다. 더 나아가서는 각 지역에 대한 풀을 가지고 있기 때문에, 만약 여러분이 뉴질랜드에 살고 있다면 pool.ntp.org 서버 대신에 nz.pool.ntp.org 서버를 이용할 수도 있습니다. 자세한 사항은 http://www.pool.ntp.org/(을)를 살펴보기 바랍니다.

또한 구글 검색을 통해 여러분의 지역에 있는 NTP 서버를 검색하여 설정에 추가할 수 있습니다. 이렇게 찾은 서버가 제대로 동작하는 지 검사하려면 sudo ntpdate ntp.server.name을 실행하고 어떤 일이 일어나는 지 살펴보면 됩니다.

참조