NTP ~ 1초의 차이도 없이 정확하게 서버 시계 맞추기

최근에 출석체크하기가 인기가 많아서 매일 새벽 0시 0분 0초에 출석체크하는게 경쟁이 붙어버렸네요. 그놈의 포인트가 뭐라고… 결국 서버 시간이 안맞다는 사용자들의 원성까지 듣게 되는 상황이 왔습니다.

저는 그동안에 아래와 같이 cron.d 에 넣고 매일 시간 동기화를 하고 있었는데.. 왜 시간이 안맞다고 난리일까요..

0 3 * * * root rdate -s time.bora.net

혹시나 해서 ‘네이버 초시계’와 비교해 봤더니 약 0.5 ~ 1초이내 정도 차이가 나는게 눈으로도 보이더군요.

결국 구글링을 통해 우분투 서버에 NTP 서비스를 설치해서 사용해 보기로 했습니다.

NTP 설치

> sudo apt install ntp

제대로 동기화 동작하는지 확인…

> sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
+ec2-13-209-36-8 133.243.238.164  2 u   55   64  377    3.196   -0.764   4.088
+dadns.cdnetwork 216.239.35.12    2 u   52   64  377    1.229    2.743   4.056
+send.mx.cdnetwo 216.239.35.8     2 u   55   64  377    1.317    1.614   4.443
+210.183.236.141 141.223.182.106  2 u   52   64  377    6.131    1.114   4.151
*ec2-54-180-134- 133.243.238.243  2 u   52   64  377    2.263    1.028   4.234
+ec2-13-124-227- 131.130.251.107  2 u   55   64  377    3.439   -0.026   4.184
-alphyn.canonica 17.253.34.253    2 u   11   64  377  210.766    2.711   1.100
+golem.canonical 17.253.34.125    2 u    5   64  377  274.186   -1.458   1.312
+chilipepper.can 17.253.34.125    2 u   10   64  377  262.381   -2.411   1.088
-pugot.canonical 17.253.34.125    2 u    1   64  357  270.619   -6.411   4.188

설치만 하면 위와 같이 자동으로 타임서버를 찾아서 동기화를 합니다.

맨앞에 문자는 동기화 상태를 알려줍니다.

* 는 현재 동기화받는 상태
+ 는 접속은 가능하지만 동기화 하고 있지는 않음
 는 접속은 가능하지만 동기화 가능 리스트에서 제외
‘ ‘ (빈칸)은 접속 불가능

그러니까 * 표시가 있는 항목이 1개 이상 있어야 정상으로 동작하고 있다고 볼 수 있겠습니다.

이제 서버 시간을 봐보면 되겠죠?

> date
Wed Jul 17 10:53:15 KST 2019

네이버 초시계와 비교해 봅니다.

만약 제대로 동작하지 않는다면 방화벽 문제일 가능성이 높습니다.

NTP 서비스를 제대로 이용하려면 방화벽 OutboundUDP 123번 포트가 열려 있어야 합니다.

별도의 /etc/ntp.conf 에 원하는 NTP 서버를 추가할 수도 있습니다.
예를들어 pool.ntp.org 에 한국 존 서버를 넣어볼 수 도 있습니다.

https://www.pool.ntp.org/ko/zone/kr

이상으로 서버 시계를 NTP 서비스로 정확하게 동기화 하는 방법을 알아봤습니다.