【Ubuntu】ntpdateではなくtimedatectlによる時刻合わせ

【Ubuntu】ntpdateではなくtimedatectlによる時刻合わせ サーバー

時刻合わせと言えば、ntpdateだと相場が決まっています。
しかし、Ubuntuにおいては違います。

timedatectlを利用することが、正解なのです。

本記事の内容

  • ntpdateのインストールは不要
  • timedatectlによる時刻合わせ(時刻同期)
  • systemd-timesyncdの設定
  • systemd-timesyncdの起動

それでは、上記に沿って解説していきます。

ntpdateのインストールは不要

Ubuntunは、デフォルトでntpdateコマンドが使えません。
試しにコマンドを実行すると、以下のように言われます。

$ ntpdate

コマンド 'ntpdate' が見つかりません。次の方法でインストールできます:

apt install ntpdate         # version 1:4.2.8p12+dfsg-3ubuntu4.20.04.1, or
apt install ntpsec-ntpdate  # version 1.1.8+dfsg1-4build1

Ask your administrator to install one of them.

このことは、Ubuntu 18.04以降であれば確実です。
ちなみに、検証中のOSは以下となります。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

では、インストールをおススメされたパッケージを確認してみましょう。

$ sudo apt show ntpdate
Package: ntpdate
Version: 1:4.2.8p12+dfsg-3ubuntu4.20.04.1
Priority: optional
Section: universe/net
Source: ntp
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian NTP Team <ntp@packages.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 178 kB
Depends: netbase, libc6 (>= 2.17), libssl1.1 (>= 1.1.0)
Homepage: http://support.ntp.org/
Download-Size: 48.8 kB
APT-Sources: http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages
Description: client for setting system time from NTP servers (deprecated)
Network Time Protocol 略称 NTP は、インターネット又はローカルのネットワークに
接続されたコンピュータと時刻を同期するか、GPS、DCF-77、NIST 又は同様の時刻信号
を解釈できる正確なハードウェア受信機に従うことにより、コンピュータの時刻を 正確に保つために利用できます。
.
ntpdate is deprecated. Please use sntp instead for manual or scripted NTP
queries/syncs.

インストール対象のパッケージは、Ubuntuの公式がメンテンナンスしています。
じゃあ、インストールしても問題ありませんね。

ということで、インストールをするのが普通です。
でも、ntpdateをインストールする必要がありません。

インストールする必要があれば、デフォルトでインストール済みのはずです。
では、自動の時刻合わせ(時刻同期)をどうすればよいのでしょうか?

次に、そのための方法を説明します。

timedatectlによる時刻合わせ(時刻同期)

Ubuntuでは、デフォルトでtimedatectlコマンドが利用可能です。
timedatectlの機能は、時刻の表示・設定となります。

このtimedatectlを利用して、時刻合わせが可能なのです。
正確には、timedatectlとsystemd-timesyncdが連携しています。

systemd-timesyncdの機能を一言で表現すると、 ネットワーク時刻同期となります。
そして、timedatectlがsystemd-timesyncdを管理しているイメージです。

そのイメージは、timedatectlコマンドの実行結果からも掴めると思います。

$ timedatectl
               Local time: 日 2021-06-20 16:17:23 JST
           Universal time: 日 2021-06-20 07:17:23 UTC
                 RTC time: 日 2021-06-20 07:17:22
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

「NTP service: inactive」
ネットワーク時刻同期が、機能していないということです。

このときのsystemd-timesyncdの状況は、以下。

$ sudo systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:systemd-timesyncd.service(8)

これより、timedatectlとsystemd-timesyncdが一蓮托生だとわかります。

以上、timedatectlによる時刻合わせ(時刻同期)について説明しました。
次は、systemd-timesyncdの設定を行います。

systemd-timesyncdの設定

systemd-timesyncdの設定といっても、そんな面倒なことではありません。
単純に、時刻を見に行くNTPサーバーを登録するだけです。

systemd-timesyncdの設定ファイルは、以下のパスとなります。
/etc/systemd/timesyncd.conf

初期状態では、以下の内容です。

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

1か所だけ変更します。

NTP=ntp.nict.jp

日本でNTPサーバーと言えば、 ntp.nict.jpでしょう。
もちろん、他のNTPサーバーを設定しても構いません。

以上、systemd-timesyncdの設定の説明でした。
次は、systemd-timesyncdを起動していきます。

systemd-timesyncdの起動

timedatectlコマンドを使って、systemd-timesyncdを起動します。

$ sudo timedatectl set-ntp true

連携状況を確認しましょう。

$ timedatectl
               Local time: 日 2021-06-20 16:37:06 JST
           Universal time: 日 2021-06-20 07:37:06 UTC
                 RTC time: 日 2021-06-20 07:37:07
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

「NTP service: active」
inactiveからactiveに変わりました。

では、systemd-timesyncdの状況も確認しましょう。

$ sudo systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-06-20 16:35:12 JST; 3min 54s ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 8572 (systemd-timesyn)
     Status: "Initial synchronization to time server 133.243.238.243:123 (ntp.nict.jp)."
      Tasks: 2 (limit: 9513)
     Memory: 1.3M
     CGroup: /system.slice/systemd-timesyncd.service
             └─8572 /lib/systemd/systemd-timesyncd

6月 20 16:35:12 ubuntu-focal systemd[1]: Starting Network Time Synchronization...
6月 20 16:35:12 ubuntu-focal systemd[1]: Started Network Time Synchronization.
6月 20 16:35:12 ubuntu-focal systemd-timesyncd[8572]: Initial synchronization to time server 133.243.238.243:123 (ntp.nict.jp).

起動していることが確認できます。
NTPサーバーの設定も適切に反映しています。

Status: "Initial synchronization to time server 133.243.238.243:123 (ntp.nict.jp)."

以上、systemd-timesyncdの起動について説明しました。

タイトルとURLをコピーしました