Skip to content

Instantly share code, notes, and snippets.

@azass
Last active February 8, 2025 08:57
Show Gist options
  • Save azass/8658983ffc1fa6a45656f21befaa177e to your computer and use it in GitHub Desktop.
Save azass/8658983ffc1fa6a45656f21befaa177e to your computer and use it in GitHub Desktop.
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 に設定
これらを順に確認すれば、問題が特定できるはずです。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment