どうも、Tです。
検証環境でローカルで動作するNTPサーバー(外部のNTPサーバーと同期しない。自分のシステムクロックを用いてStratum1になる)が必要になったので備忘録。
目次
やりたいこと
Stratum1(階層)として動作するローカルネットワーク(閉鎖ネットワーク)用の検証用NTPサーバーが欲しい。
なぜかというと1年後、2年後という未来の時刻の際にどのような動作になるか検証を行う必要があるという稀な状況のため・・・・。
Stratum0では?
Stratumの階層的にトップ階層はStratum0ですが、こちは原子時計などになります。
通常ネットワークでNTP同期をするための公開されているNTPサーバは、Stratum1もしくは2になります。
環境
- NTPサーバーOS:CentOS Linux release 8.2.2004 (Core)
- NTPサービス:chrony-3.5-1
事前準備
下記は、事前にできているとして説明しません。
- Firewalld無効化
- SELinux無効化
- 操作はrootで実施
- 動作確認のクライアント側の設定済み
方法
Chronyインストール・設定
下記のコマンドでchronyをインストールします。
# dnf -y install chrony
chronyの設定ファイルを開きます。
# vi /etc/chrony.conf
下記を設定変更します。デフォルトで2.centos.pool.ntp.orgと時刻同期を行う設定になっているためコメントアウトしてどこのNTPサーバーも時刻同期を行わないようにします。poolが複数ある場合はすべてコメントアウトします。
pool 2.centos.pool.ntp.org iburst ↓ #pool 2.centos.pool.ntp.org iburst
下記を設定変更します。NTPクライアントから時刻同期の許可するネットワークアドレスを記述します。自分の環境のものを設定してください。192.168.10.0/24は僕の環境です。
#allow 192.168.0.0/16 ↓ allow 192.168.10.0/24
下記を設定変更します。今作っているNTPサーバー自身が外部のNTPを同期がとれない場合、stratumをいくつで動作するか(クライアントに通知するか)の設定です。
#local stratum 10 ↓ local stratum 1
Chrony起動設定・確認
chronydサービスのstart(起動)とenable(自動起動)設定を行います。すでにstartしていた場合は、restartとして設定ファイルを読み込ませてください。
# systemctl start chronyd # systemctl enable chronyd
chronydの起動状態がactive(runnning)で動作していることを確認します。
# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-08-14 09:50:10 JST; 6min ago
--以下割愛--
時刻同期先を確認します。設定していれば下記のようにどことも時刻同期していない状態です。
# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample ===================================================
時刻とサービス状態を確認します。System clockはどことも同期されていない状態で、NTP serviceは稼働状態です。
# timedatectl Local time: 金 2020-08-14 09:50:12 JST Universal time: 金 2020-08-14 00:50:12 UTC RTC time: 金 2020-08-14 00:50:59 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: active RTC in local TZ: no
動作確認
NTPサーバーの時刻を未来時間に設定します。
# timedatectl set-ntp no # timedatectl set-time "2020-08-14 10:40:00" # timedatectl set-ntp yes
timedatectl set-ntp noでNTP同期を無効にしないと下記のように失敗します。
NTP同期無効→未来時間に設定→NTP同期有効の手順を踏んでください。
# timedatectl set-time “2020-08-14 10:40:00”
Failed to set time: NTP unit is active
NTPクライアントから同期状態を確認し未来時間に同期を行えることを確認します。
参考
まとめ
はぁ・・・検証しよ・・・・