#author("2025-05-22T12:20:13+00:00","default:sysosa","sysosa")
#author("2025-05-22T12:21:50+00:00","default:sysosa","sysosa")
NTP: Network Time Protocol

皆の時間をあわせるもの

以前は ntp、今は chrony で行っているのが多いかな.

ntp本家様 [[http://www.ntp.org/>+http://www.ntp.org/]]
chrony本家様 [[https://chrony-project.org/>+https://chrony-project.org/]]


***windows11をntpサーバにしてみる [#z751897b]
まずはwindows自体のntpクライアントを有効にして上位の時計サーバに繋げる.
[設定]->[時計と言語]->[日付と時刻]->[その他の時計]をクリックして「日付と時計」パネルを表示させる.
「インターネット時刻」タブをクリックして「設定の変更..」ボタンを押下して「インターネット時刻設定」パネルで有効な上位のntpサイトを指定して「OK」ボタンを押下します
&ref(2025y05m22d_204634230.png,nolink,60%);

これで上位のntpサーバから時計情報がlinkされました.
次に本題のwindows自体をntpサーバに仕立てます.
レジストリを弄ります.
検索欄、もしくはcmdから regedit と実行して「レジストリ エディター」を起動します。
修正場所は HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer でEnabledを0から1に変更します
&ref(2025y05m22d_205030660.png,nolink,80%); &ref(2025y05m22d_205407509.png,nolink,80%);

次に HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config の AnnounceFlags を a から 5 に変更します
&ref(2025y05m22d_205649725.png,nolink,80%); &ref(2025y05m22d_205724501.png,nolink,80%);

以上で「レジストリ エディター」の作業は完了.

次に、w32timeを再起動させます。面倒ならwindowsを再起動で行けますが、コマンドプロンプトで行けます。
まず、検索欄で[cmd]と記入して検索された「コマンドプロンプト」にて右クリック「管理者として実行」を選択します
&ref(2025y05m22d_210057812.png,nolink);

そこで現れたコマンドプロンプトで
#code(nonumber){{
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ファイアウォール」を開きます。
そこで左のツリーから「受信の規則」を選び、右側の「新しい規則..」を押下します.
-どの種類の規則を作成しますか?
「ポート」を選択します
-TCPとUDPのどちらにこの規則を適用しますか?
「UDP」を選びます
-すべてのローカルポートと特定のローカルポートのどちらを対象にこの規制を適用するか選択してください
「特定のローカルポート」で値は「123」を指定します
-接続が指定の条件に一致した場合に、どの操作を実行しますか?
「接続を許可する」を選択
-この規則はいつ適用しますか?
全て選択します
-名前
「NTPサービス」

として「完了ボタン」を押下します。これでファイアウォールに穴が開き外部からntpサーバとして機能します。

既定で全てのインターフェースにこれが適用されます。なので二本のnicをもって片方にのみサービスを提供したい場合とか作ったサービス[NTPサービス]のプロパティで修正します




***windowsをntpサーバにした場合の留意点 [#y20b2f5c]

chronyで接続を試みても失敗します. 「/etc/chrony.conf」に「maxdistance」を淹れないと無理みたい

#code(nonumber){{
[root@rockylinux9 ~]#
server win11 iburst
maxdistance 16.0

[root@rockylinux9 ~]#
}}

「chronyc tracking」とかで接続確認します



***ntpの構築 [#lef0df64]
最新の安定板を取得して、コンパイル、インストール
#code(nonumber){{
 # 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 を
#code(nonumber){{
 prog=ntpd
    ↓
 prog=/opt/ntp/bin/ntpd
}}
に変更すればOK

■設定ファイル
基本ntpdを稼働させれば、そのマシンはntpサーバとなる。ntpのサービスを提供するかしないかはrestrictの定義に依存。
何もrestrict(制限)しなければ、そのマシンは他から来る時刻問い合わせを受けて、返事をだす形になる。
また、時計の参照先はserverで指定したマシンになるが、127.127.1.0 のIPアドレスは自が持っている時計を参照することを意味する。
#code(nonumber){{
 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から届く時間参照要求のパケットは許可するけど、それ以外は許可しなくなる。
(自分自身は構わないけど)


***配布パッケージの場合 [#v9c99269]
ごくごく簡単に配布パッケージを利用して時計合わせを行う場合。192.168.0.3がntpサーバ
#code(nonumber){{
[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
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS