NTP: Network Time Protocol
皆の時間をあわせるもの
以前は ntp、今は chrony で行っているのが多いかな.
ntp本家様 http://www.ntp.org/
chrony本家様 https://chrony-project.org/
まずはwindows自体のntpクライアントを有効にして上位の時計サーバに繋げる.
[設定]->[時計と言語]->[日付と時刻]->[その他の時計]をクリックして「日付と時計」パネルを表示させる.
「インターネット時刻」タブをクリックして「設定の変更..」ボタンを押下して「インターネット時刻設定」パネルで有効な上位のntpサイトを指定して「OK」ボタンを押下します
これで上位のntpサーバから時計情報がlinkされました.
次に本題のwindows自体をntpサーバに仕立てます.
レジストリを弄ります.
検索欄、もしくはcmdから regedit と実行して「レジストリ エディター」を起動します。
修正場所は HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer でEnabledを0から1に変更します
次に HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config の AnnounceFlags を a から 5 に変更します
以上で「レジストリ エディター」の作業は完了.
次に、w32timeを再起動させます。面倒ならwindowsを再起動で行けますが、コマンドプロンプトで行けます。
まず、検索欄で[cmd]と記入して検索された「コマンドプロンプト」にて右クリック「管理者として実行」を選択します
そこで現れたコマンドプロンプトで
C:\Windows\System32>net stop w32time
Windows Time サービスを停止中です.
Windows Time サービスは正常に停止されました。
C:\Windows\System32>net start w32time
Windows Time サービスを開始します.
Windows Time サービスは正常に開始されました。
C:\Windows\System32>
と実行します. これでwindows11はntpサーバに成れました。次にサーバになったら要求を受け入れる必要があるのでファイアウォールに穴をあけます。
[検索欄]にてコントロールパネルを検索して開きます. 表示方法を「小さいアイコン」にして「Windows Defenderファイアウォール」を起動します
左縦メニューから「詳細設定」を選び「セキュリティが強化されたWinodws Defenderファイアウォール」を開きます。
そこで左のツリーから「受信の規則」を選び、右側の「新しい規則..」を押下します.
として「完了ボタン」を押下します。これでファイアウォールに穴が開き外部からntpサーバとして機能します。
既定で全てのインターフェースにこれが適用されます。なので二本のnicをもって片方にのみサービスを提供したい場合とか作ったサービス[NTPサービス]のプロパティで修正します
chronyで接続を試みても失敗します. 「/etc/chrony.conf」に「maxdistance」を淹れないと無理みたい
[root@rockylinux9 ~]#
server win11 iburst
maxdistance 16.0
[root@rockylinux9 ~]#
「chronyc tracking」とかで接続確認します
最新の安定板を取得して、コンパイル、インストール
# wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
# gzip -cd ntp-4.2.6p5.tar.gz | tar xf -
# cd ntp-4.2.6p5
# ./configure --prefix=/opt/ntp --enable-step-slew --enable-ntp-signd=/opt/samba/var/run/ntp_signd
# make
# make test; make install
起動スクリプトは既存の /etc/init.d/ntpd を
prog=ntpd
↓
prog=/opt/ntp/bin/ntpd
に変更すればOK
■設定ファイル
基本ntpdを稼働させれば、そのマシンはntpサーバとなる。ntpのサービスを提供するかしないかはrestrictの定義に依存。
何もrestrict(制限)しなければ、そのマシンは他から来る時刻問い合わせを受けて、返事をだす形になる。
また、時計の参照先はserverで指定したマシンになるが、127.127.1.0 のIPアドレスは自が持っている時計を参照することを意味する。
server ntp1.jst.mfeed.ad.jp <-- 外部の信頼ある時刻参照先
server 127.127.1.0 stratum 10 <-- もし外部が繋がらなかった際、緊急として自分の体内時計を参照する
restrict default ignore <-- クライアントから来る全てのパケットを拒否します
restrict 127.0.0.1 <-- (ただし)この''サーバ''からこの''サーバ''へのパケットは構わない
restrict 192.168.0.0 mask 25.255.255.0 nomodify notrap <-- (ただし)192.168.0.0/24から届く、
nomodify: サーバーの状態を変更するパケットは受け取らない
notrap : trap サービスのためのパケットも受け取らない
restrict ntp1.jst.mfeed.ad.jp mask 255.255.255.255 nomodify notrap noquery
<-- (ただし)ntp1.jst.mfeed.ad.jpからの届く
nomodify: サーバーの状態を変更するパケットは受け取らない
notrap : trap サービスのためのパケットも受け取らない
noquery : 質問・紹介らのパケット要求も受け取らない(192.168.0.0/24では頂くけど)
driftfile /var/lib/ntp/drift
logfile /var/log/ntpd.log
broadcastdelay 0.008
keys /etc/ntp/keys
ntpsigndsocket /opt/samba/var/run/ntp_signd
これで、192.168.0.0/24から届く時間参照要求のパケットは許可するけど、それ以外は許可しなくなる。
(自分自身は構わないけど)
ごくごく簡単に配布パッケージを利用して時計合わせを行う場合。192.168.0.3がntpサーバ
[root@c131 ~]# yum -y install ntp
[root@c131 ~]# vi /etc/ntp.conf
driftfile /var/lib/ntp/drift
server 192.168.0.3
*この2行で十分
[root@c131 ~]# echo 192.168.0.3 >> /etc/ntp/step-tickers
*起動時に/etc/init.d/ntpdateで採用されるntpサーバを指定
[root@c131 ~]# /etc/init.d/ntpd start
[root@c131 ~]# chkconfig ntpd on; chkconfig ntpdate on
最低限これでOK