どうも、Tです。
Ubuntu 22.04でNTPサーバーを作った備忘録です。
環境
Ubuntu Serverをほぼデフォルトでインストールしたものを使用しています。
# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
これよりの操作はrootユーザーで行っています。
Chrony設定
インストール
Ubuntuは、デフォルトでNTPクライアント機能の提供する「systemd-timesyncd」しか導入されていません。NTPサーバーにしたいので、NTPサーバ・クライアント機能を持っている「chrony」をインストールします。
# apt -y install chrony
設定
設定を追加していきます。
# vi /etc/chrony/chrony.conf
外部の参照先NTPサーバを指定します。
デフォルトで用意されていたNTPサーバをコメントアウトして、任意の参照先NTPサーバを追加します。今回は参照先NTPに「ntp.nict.jp」を使いました。
#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 pool ntp.nict.jp iburst
自身にNTP同期してくるクライアント側のネットワーク範囲を制限します。設定値が用意されていなかったので下記2行を末尾に追記しました。
# AddConfig-Allow NTP Client Access from local network
allow 192.168.10.0/24
chronyサービスを再起動します。
# systemctl restart chrony
chronyサービスが起動していることを確認します。
# systemctl status chrony ● chrony.service - chrony, an NTP client/server Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-07-11 15:52:08 JST; 53s ago Docs: man:chronyd(8) man:chronyc(1) man:chrony.conf(5) Process: 2172 ExecStart=/usr/lib/systemd/scripts/chronyd-starter.sh $DAEMON_OPTS (code=exited, status=0/SUCCESS) Main PID: 2181 (chronyd) Tasks: 2 (limit: 9388) Memory: 1.2M CPU: 71ms CGroup: /system.slice/chrony.service tq2181 /usr/sbin/chronyd -F 1 mq2182 /usr/sbin/chronyd -F 1
同期確認
参照先NTPサーバ(ntp.nict.jp)を同期できていることを確認します。先頭に*がついたものがあれば同期できています。
# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- ntp-a3.nict.go.jp 1 6 17 63 -346us[ -346us] +/- 2008us ^- ntp-k1.nict.jp 1 6 17 64 -122us[ -66us] +/- 6423us ^* ntp-a2.nict.go.jp 1 6 37 0 +8803ns[ -86us] +/- 1764us ^- ntp-b2.nict.go.jp 1 6 17 65 -19us[ -58us] +/- 1844u
備考
chronyサービスはインストールした時点で自動起動が有効になっています。
# systemctl list-unit-files | grep chrony.service chrony.service enabled enabled
UbuntuはデフォルトでNTPクライアント機能のみ提供する「systemd-timesyncd」がありますが、chronyをインストール時に削除されて下記のような状態になります。
# systemctl list-unit-files | grep systemd-timesyncd systemd-timesyncd.service masked enabled
クライアントから動作確認
他のUbuntuサーバを使い、今回設定したNTPサーバに時刻同期が可能か確認します。
デフォルトで導入されているNTPクライアント「systemd-timesyncd」を使います。
設定ファイルを編集していきます。
# vi /etc/systemd/timesyncd.conf
NTPに設定したNTPサーバのIPアドレスを指定します。
[Time] NTP=192.168.10.201 #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048
systemd-timesyncdサービスを再起動します。
# systemctl restart systemd-timesyncd
下記のコマンドで時刻同期できていることを確認します。
# timedatectl timesync-status Server: 192.168.10.201 (192.168.10.201) Poll interval: 2min 8s (min: 32s; max 34min 8s) Leap: normal Version: 4 Stratum: 2 Reference: 85F3EEF3 Precision: 1us (-25) Root distance: 1.837ms (max: 5s) Offset: -2.785ms Delay: 127us Jitter: 1.052ms Packet count: 2 Frequency: +41.238ppm
NTPサーバに接続できてない場合、下記のように表示されます。
テストのため存在しないIPアドレス(192.168.10.20)を設定して試したところです。
# timedatectl timesync-status Server: 192.168.10.20 (192.168.10.20) Poll interval: 1min 4s (min: 32s; max 34min 8s) Packet count: 0
まとめ
NTPサービスっていっぱいあって・・・・ほんと・・・・。