💡

Ubuntu 24.04にNTPサーバーを構築する

2024/12/12に公開

MMA Advent Calendar 2024 13日目の記事です

はじめに

制約のあるネットワーク内に置かれたホストは,外部のNTPサーバーと通信できません.

すると,いつの間にかとんでもなく時刻がずれていることがあると思います.

今回は,自前でNTPサーバーを構築し,他のクライアントに設定することで時刻同期をしてみようと思います.

今回の環境

サブネット IPアドレス FQDN OS
NTPサーバー 192.168.0.0/24 192.168.0.1 ntp.example.com Ubuntu 24.04 LTS
クライアント 同上 192.168.0.2 - Ubuntu 24.04 LTS

NTPサーバーの構築

NTPサーバーのchronyをインストールします.

$ sudo apt install chrony

chrony以外にも,NTPdがあるのですが,
私の環境ではうまく設定できなかったのでchronyにしました.

設定ファイルを書き換えます.

$ sudo vi /etc/chrony/chrony.conf
# すでにあるpoolをすべてコメントアウト
#pool ntp.ubuntu.com        iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2

# NTPサーバーの時刻同期元のサーバーを新しくpoolで追記
pool ntp-parent.example.com iburst

# アクセスを許可するクライアントのアドレスを追記
allow 192.168.0.0/24

設定ファイルを書き換えたので,chronyを再起動します.

$ sudo systemctl restart chrony

これで構築が完了です.

試しにntpdateコマンドで問い合わせてみます.コマンドがない場合はntpsec-ntpdateでインストールできます.

$ ntpdate -q ntp.example.com
2024-12-11 13:40:05.491365 (+0900) +0.000037 +/- 0.000159 192.168.0.1 s2 no-leap

無事問い合わせできることが確認できました.

クライアントの設定

systemd-timesyncdを使い,時刻同期の設定をします.
Ubuntuなら大抵は標準でインストールされていると思います.

まず,設定ファイルを書き換えます.

$ sudo vi /etc/systemd/timesyncd.conf
# 下記を追記
NTP=ntp.example.com

設定ファイルを書き換えたらtimesyncdを再起動します.

$ sudo systemctl restart systemd-timesyncd.service

timedatectlで正しく設定されているか確認しましょう.

$ timedatectl timesync-status
       Server: 192.168.0.1 (ntp.example.com)
Poll interval: 2min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: AC151787
    Precision: 1us (-25)
Root distance: 21.361ms (max: 5s)
       Offset: -7.153ms
        Delay: 675us
       Jitter: 2.703ms
 Packet count: 2
    Frequency: +68.653ppm

正しく設定されていることが確認できました.

参考

https://www.server-world.info/query?os=Ubuntu_22.04&p=ntp&f=3

Discussion