💡
Ubuntu 24.04にNTPサーバーを構築する
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
正しく設定されていることが確認できました.
参考
Discussion