サーバー内の時刻合わせには、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コマンドの結果の見方
タイトル | 内容 |
---|---|
remote | NTPサーバのアドレス。 手前の記号についてはコードの一覧を参照。 |
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デーモンはこの値の絶対値を小さく保とうとする。 |
jitter | NTPサーバの正確性の度合い。おそらくAIXのdispと同じ。 |
まとめ
本記事のまとめは、
NTPサーバーの設定方法をご紹介しました。
本記事では、「ntp.nict.jp」を用いて同期をおこないました。
同期後は放置していても自動で更新されいます。
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント