🍒

ラズパイ4にChronyでNTPサーバを立てる

2024/06/11に公開

目次

  • NTPサーバとは
  • インストール
  • 補足
  • 参考文献

NTPサーバとは

NTPサーバ(Network Time Protocol server)とは,ネットワーク上で正確な時刻情報を提供をするためのサーバである.
NTPは,RFC1305RFC4330で決められている.
本記事ではNICTの公開NTPサーバにあわせている.

環境

機能 説明
PC RaspberryPi 4
OS Ubuntu24.04 LTS

インストール

OSのアプデートを行う

この行為を飛ばしていきなりインストールから始める人をたまに見かけるけどよっぽどのことがない限り,アップデートはこまめにやるべし.

$ sudo apt update | sudo apt upgrade -y

Chronyをインストール

$ sudo apt install chrony

設定ファイルの変更

$ sudo vim /etc/chrony/chrony.conf

もともと設定されているNTPサーバをコメントアウトして,server ntp.nict.jp iburstを追加.
また,同一LANからアクセスでききるようにallow 192.168.1.0/24を追加.

- 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.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
+ server ntp.nict.jp iburst
+ allow 192.168.1.0/24

動作しているか確認

$ systemctl restart chrony  # 再起動
$ chronyc sources -v

ntp-b2.nict.go.jpの前に^*が表示されていれば設定完了.


  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp-b2.nict.go.jp             1   6    17    35  -1223ns[ +597us] +/- 9632us

補足

タイムゾーンの設定

dateコマンドを使って時刻を確かめたら,かなりずれていたので原因を探ったところタイムゾーン設定が間違っていることに気づいた.
初期状態ではUCT()になっていたため9時間の時差が生まれていた.
タイムゾーン設定の変更を備忘録として書いておく.

タイムゾーンとして設定できる地域のリストがあるのでAsia/Tokyoがあることを確認

$ timedatectl list-timezone

正しいタイムーゾンを設定する

$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl  # 確認

タームゾーン設定前

               Local time: Thu 2024-06-06 03:18:44 UTC
           Universal time: Thu 2024-06-06 03:18:44 UTC
                 RTC time: n/a
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

タイムゾーン設定後

               Local time: Thu 2024-06-06 12:33:39 JST
           Universal time: Thu 2024-06-06 03:33:39 UTC
                 RTC time: n/a
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

chronyの同期確認と再起動を行う

$ chronyc tracking
$ chronyc sources -v
$ sudo systemctl restart chrony

外部NTPサーバへのアクセス間隔

同期するために設定したNICTの公開NTPサーバでは無料で使えますが,アクセス間隔(ポーリング間隔)が決まっている.

[Q. 1-4] ポーリング間隔(アクセス回数)に制限はありますか?

[A. 1-4] 1時間平均で20回(1日の合計が480回)を超えないようにしてください。 それ以上が必要な場合は事前にご連絡ください。

引用元

何も設定していない場合だと,最小の間隔は2^6秒(64秒),最大の間隔は2^{10}秒(1024秒)で十分に条件を満たすので気にする必要はない.

設定

もし設定するなら次のようにする.
ただし,maxpollの設定値は2^3(256秒)以上を設定する必要がある.

server ntp.nict.jp iburst minpoll 6 maxpoll 11

参考文献

fabcross | 土日で完成! 趣味のラズパイ ラズパイをNTPサーバーにする

Discussion