【2024年最新版】NTPサーバーによる時刻合わせの方法

この記事は 3 分で読めます。
概要

サーバー内の時刻合わせには、NTP(Network Time Protocol)サーバーの設定方法をご紹介します。本記事ではUbuntuにおける環境で行っています。

管理人

本記事の読者層は以下の方を想定しています。

本記事の読者層
  • NTPサーバーを立ち上げたい方
目次

NTPサーバーとは

サーバー内の時刻合わせには、NTP(Network Time Protocol)という通信プロトコルを利用します。

国内であれば、以下に示す日本標準時に直結した時刻サーバーがあり、NTPサーバーを提供しています。

日本標準時 に直結した時刻サーバ
  • 国立研究開発法人・情報通信研究機構であるNICT (National Institute of Information and Comuunications Technology)が 公開しているNTPサービスではインターネットを利用して、日本標準時を時刻配信しています。
  • 時刻はこちらで確認出来ます。
  • ■ NTPサーバ名: ntp.nict.jp

この時刻サーバはNICT内に設置され、 日本標準時に直結しています(stratum 1)。

また、その時刻精度は日本標準時と10ナノ秒以内 処理能力は毎秒100万リクエスト以上の性能を有しているそうです。

本記事では、外部の時刻サーバ(以降、NTPサーバーと呼びます)と時刻を同期する方法を紹介します。

NTPサーバーのメリット

NTPサーバーを入れるメリットは、ネットワークを通して様々な機器に正確な時刻情報が提供されることにより、時間の遅延を防ぐことができます。

NTPサーバーのインストール方法

現在時刻を確認するためには、一般に「date」コマンドを利用します。

% date
2022年 11月  7日 月曜日 22:30:26 JST

これはLinux系では標準にインストールされているコマンドです。

この日時が大幅に違っているようであれば、以下の時刻合わせ用のアプリケーションサーバーを用いて時刻合わせをおこないます。

時刻合わせ用アプリケーションサーバー「ntp」

$sudo apt-get install ntp

NTPサーバと時間を同期させるためには、/etc/ntp.confファイル(ubuntuの場合)にNTPサーバのアドレスを設定します。

以下は、規定値の参照用NTPサーバーのアドレスになります。

$emacs /etc/ntp.conf
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

NTPサーバーのオススメの設定方法

こちらの代わりにNICTのサーバーで時刻合わせを行いたい場合には、以下のように記載ください。

server ntp.nict.jp

また、以下「pool」というサービスを使う方法もあります。このサービスは世界中にあるNTPサーバが登録されていて、上記URLにアクセスすると登録済みのNTPサーバの中から1つがランダムで選択されて接続してくれます。

以下のように書き換えてください。

$cat /etc/ntp.conf
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.

server -4 ntp.nict.jp iburst  
server -4 ntp1.jst.mfeed.ad.jp iburst  
server -4 ntp2.jst.mfeed.ad.jp iburst  
server -4 ntp3.jst.mfeed.ad.jp iburst  

ここで「pool ntp.jst.mfeed.ad.jp iburst」と「server ntp1.jst.mfeed.ad.jp iburst」は同じです。

sutatusを確認しておきます。ここで以下コマンドはroot権限で行ってください。

sudo systemctl status ntp
  ntp.service - Network Time Service
     Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-03-17 20:53:32 JST; 46s ago
       Docs: man:ntpd(8)
    Process: 3882695 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
   Main PID: 3882716 (ntpd)
      Tasks: 2 (limit: 14275)
     Memory: 2.8M
     CGroup: /system.slice/ntp.service
             mq3882716 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 132:140

次に設定を反映させるためにサーバー変更後に、ntpの再立ち上げを行います。

sudo systemctl restart ntp

同期進捗や状態を確認するにはntpq -pコマンドを実行する。

以下のntpqコマンドを入力します。

% sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
+ntp-k1.nict.jp  .NICT.           1 u   30   64    1   16.537    2.190   1.206
*ntp1.jst.mfeed. 133.243.236.17   2 u   30   64    1    8.929    2.752   1.670
+ntp2.jst.mfeed. 133.243.236.18   2 u   29   64    1    8.219    2.521   1.352
+ntp3.jst.mfeed. 133.243.236.19   2 u   28   64    1    7.953    1.212   2.126
 185.125.190.57  201.68.88.106    2 u   36   64    1  266.310    3.728   0.000
 alphyn.canonica 132.163.96.1     2 u   35   64    1  177.584   -1.810   0.000
 185.125.190.58  37.15.221.189    2 u   38   64    1  273.672    1.591   0.000
 185.125.190.56  194.121.207.249  2 u   36   64    1  245.995    4.989   0.000

上記で、構成された NTP ピアのリストと、それぞれの同期に関する情報が表示されます。
ここでは、ピアの横にある * 記号のNTP サーバーと同期したことを示します。

ntpq -qについて
ntpqコマンドに-qオプションをつけることでntpdの動作状況を表示することができます。
このコマンドにはroot権限が必要です。

おめでとうございます。

これで、Ubuntu または Linux Mint マシンに NTP サーバーがセットアップされました。

同期時間を変更したい場合

NTP デーモンはタイム サーバーを定期的にチェックし、ローカル クロックと参照サーバー間のずれを考慮してシステム クロックを調整します (デフォルトでは 1 ~ 17 分ごと)。

minpoll と maxpoll のデフォルト値は、それぞれ 6 と 10 です。両方に許可される値は、4 ~ 17 の任意の整数です。

たとえば、minpoll と maxpoll を 4 (つまり 16 秒) に設定すると、デーモンがほぼ毎分参照サーバーをポーリングするようになります。

以下のようにすれば対応できます。

$emacs /etc/ntp.conf
server -4 ntp.nict.jp iburst minpoll 4 maxpoll 4
server -4 ntp1.jst.mfeed.ad.jp iburst minpoll 4 maxpoll 4
server -4 ntp2.jst.mfeed.ad.jp iburst minpoll 4 maxpoll 4
server -4 ntp3.jst.mfeed.ad.jp iburst minpoll 4 maxpoll 4

(補足)仮にサーバーを変えない場合

仮にConfigファイルの変更を行わなかった場合は、以下のような表記になります。

$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
 hodor.bsdbg.net .GPS.            1 u    -   64    1  282.797  -11.365   0.000
 mirror.tillo.ch 192.33.96.102    2 u    -   64    1  254.153  -10.081   0.270
 any.time.nl     133.243.238.243  2 u    1   64    1   25.169   -7.768   9.015
 193.104.228.123 46.4.25.6        3 u    -   64    1  266.085  -17.192   7.483
 ntp1.wirehive.n 81.187.26.174    2 u    -   64    1  256.220  -12.886   5.937


$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
#hodor.bsdbg.net .GPS.            1 u   46   64  357  283.123  -17.293   4.042
*ntp-b2.nict.go. .NICT.           1 u   39   64  377    9.047   -7.585   4.242
#mirror.tillo.ch 194.242.34.149   2 u   41   64  157  254.646  -13.948   5.337
-any.time.nl     133.243.238.244  2 u   46   64  367    7.159   -8.917   5.440
-193.104.228.123 46.4.25.6        3 u   50   64  377  251.750  -19.836   4.696
-labs.netweaver. 85.199.214.98    2 u   49   64  367  248.256   -5.528   6.142
+ipv4.ntp3.rbaum 49.34.249.17     2 u   57   64  377    7.626   -2.283   4.302
-ap-northeast-1. 103.1.106.69     2 u   47   64  377    9.689   -6.446   4.051
#ntp1.wirehive.n 81.187.26.174    2 u   44   64  377  244.594  -17.182   3.944
#darwin.planet-r 161.143.24.141   2 u   39   64  377  251.485  -14.742   4.479
#evilhannie.eu   131.188.3.222    2 u   50   64  373  271.587   -4.953   4.644
-pugot.canonical 17.253.108.125   2 u    5   64  377  231.826   -9.644   3.949
+time.cloudflare 10.22.11.74      3 u   41   64  377    7.896   -3.167   7.526
-185.125.190.57  48.134.154.62    2 u    5   64  377  240.160   -5.090   3.813
-185.125.190.56  167.28.20.25     2 u    6   64  337  241.577   -4.009   5.385

2回目でようやく「*ntp-b2.nict.go. .NICT. 1 u 39 64 377 9.047 -7.585 4.242」にアスタリスクマークがついた。「*」がつけば同期が開始されたことになります。同期可能なサーバーに “+” がつきます。

ntpコマンドの結果の見方

タイトル内容
remoteNTPサーバのアドレス。
手前の記号についてはコードの一覧を参照。
refid参照ID サーバのIPアドレスあるいは外部クロックの名前
st階層
GPS時計など物理的な時計をst:0として、それを参照するNTPサーバはst:1、st:1を参照するNTPサーバst:2のように増えていく。
t種類
種類の一覧を参照
when最後にサーバからレスポンスがあったのが何秒前かを表す
pollポーリングの間隔(秒単位)
reach到達可能性
過去のポーリングの結果を成功:1、失敗:0とした8桁分のビット列を8進数で表現している。古い結果は上位桁に移動し、新しい結果は最下位桁に記録される。ntpdの再起動直後は 0 でポーリングが成功すると 1、3、7、10… という具合に増えていく。
delay往復にかかかる時間(ミリ秒単位)
サーバにクエリを送信したときに、応答パケットが戻ってくるまでにかかった時間で、小さいほど良い。
offset時差
サーバクロックとクライアントクロックがどれくらい離れているかを表す(ミリ秒単位)。小さいほうが良い。
ntpデーモンはこの値の絶対値を小さく保とうとする。
jitterNTPサーバの正確性の度合い。おそらくAIXのdispと同じ。

まとめ

本記事のまとめ

本記事のまとめは、

NTPサーバーの設定方法をご紹介しました。

本記事では、「ntp.nict.jp」を用いて同期をおこないました。

同期後は放置していても自動で更新されいます。

    次回の記事をご期待下さい。どうぞよろしくお願いいたします。

    関連リンク

    よかったらシェアしてね!
    • URLをコピーしました!
    • URLをコピーしました!

    コメント

    コメントする

    目次