WindowsをNTPサーバーに設定し、Linuxクライアントが時刻同期できない場合、以下の原因が考えられます。

① WindowsのNTPサーバーが正しく動作していない

確認方法

Windowsで以下のコマンドを実行し、NTPサーバーとして動作しているか確認してください。

w32tm /query /configuration

出力の確認ポイント
	•	NtpServer が Enabled: 1 になっているか
	•	AnnounceFlags が 5 になっているか
	•	Type が NTP または AllSync になっているか

Windows NTPサーバーの状態確認

w32tm /query /status

NTPサーバーとして動作している場合、時刻情報やストラタム(階層)が表示されます。

② WindowsのファイアウォールでUDP 123がブロックされている

NTPは UDP 123 を使用します。ファイアウォールで開放されていないとクライアントが接続できません。

開放確認(PowerShell)

Get-NetFirewallRule | Where-Object { $_.DisplayName -like "*NTP*" }

開放されていない場合は追加

New-NetFirewallRule -DisplayName "NTP Server" -Direction Inbound -Protocol UDP -LocalPort 123 -Action Allow

またはGUIで確認
	1.	「Windows Defender ファイアウォール」を開く
	2.	「受信の規則」→「新しい規則」→「ポート」→「UDP 123」→「許可」

③ LinuxクライアントがWindowsのNTPサーバーに接続できない

Linux側でWindowsのNTPサーバーに接続できるか確認します。

接続テスト

NTPポートが開いているか確認

nc -zvu 192.168.1.100 123

→ succeeded と表示されない場合、ネットワークかファイアウォールの問題

ntpdateで直接時刻取得(Chrony/NTPクライアントの代わりにテスト)

sudo ntpdate -q 192.168.1.100

→ no server suitable for synchronization found なら、WindowsのNTPサーバーが動作していない可能性あり

chronyc sources でサーバーの状態確認(Chrony使用時)

chronyc sources -v

→ Reach の値が 0 ならサーバーに接続できていない

④ WindowsのNTPサーバーが時刻同期を許可していない

WindowsのNTPサーバーがクライアントからの同期リクエストを拒否している可能性があります。

対処方法
	1.	Windowsのレジストリ設定を見直す
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config の LocalClockDispersion を 0 に設定

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v LocalClockDispersion /t REG_DWORD /d 0 /f

WindowsのNTPサービスを再起動

net stop w32time
net start w32time


	2.	Windowsの時刻サービスを強制的に同期させる

w32tm /resync /force

⑤ Windows NTPサーバーのストラタムが高すぎる

WindowsのNTPサーバーが「信頼性の低い時間源」として扱われると、Linuxクライアントが同期しません。

ストラタム確認

w32tm /query /status

→ Stratum: 16 の場合、サーバーが無効な状態なので 外部NTPと同期するか、LocalClockDispersion を 0 にする 必要があります。

⑥ LinuxクライアントのNTP設定ミス

LinuxクライアントがWindowsのNTPサーバーを正しく指定しているか確認します。

Chronyの場合(推奨)

sudo nano /etc/chrony/chrony.conf

以下のように記述:

server 192.168.1.100 iburst

Chronyを再起動:

sudo systemctl restart chronyd
chronyc tracking

NTP(ntpd)の場合

sudo nano /etc/ntp.conf

server 192.168.1.100 iburst

再起動:

sudo systemctl restart ntp
ntpq -p

まとめ

チェック項目	対処方法
WindowsのNTPサーバーが動作しているか	w32tm /query /status
WindowsのファイアウォールがUDP 123を開放しているか	New-NetFirewallRule
LinuxクライアントがWindowsに接続できるか	nc -zvu 192.168.1.100 123
LinuxがWindowsのNTPサーバーを信頼しているか	ntpq -p や chronyc sources -v
Windowsのストラタムが高すぎないか	w32tm /query /status
Windowsが時刻同期を許可しているか	LocalClockDispersion を 0 に設定

これらを順に確認すれば、問題が特定できるはずです。