34
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WindowsサーバをLinuxからも同期できるNTPサーバとして構成する

Last updated at Posted at 2015-11-20

##時刻同期は大切です!
nebou_man.png
WindowsサーバをNTPサーバにするとLinuxからの時刻同期に手こずることがよく有りますよね?そんな人のために設定手順をまとめてみました。

##環境

  • 外部NTPサーバ: ntp.jst.mfeed.ad.jp (210.173.160.87)
  • 内部NTPサーバ: 192.168.0.1(Windows Server 2012 R2)
  • 内部NTPクライアント: 192.168.0.23(CentOS 7.x)

※Active Directory 環境の場合はFSMO(PDCエミュレータ)を持っているドメインコントローラ、それ以外のドメインコントローラーともにデフォルト状態でLinuxから時刻同期をすることができました。確認したのはWindows Server 2016になります。

時刻同期フロー
外部NTP←内部NTP←(Linux、Windows、ルータ等のNTPクライアント)
※NTPプロトコルが通信できるようファイアウォールなどの許可設定が別途必要です

##NTP設定
レジストリを編集します。

ntp.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters]
"NtpServer"="ntp.jst.mfeed.ad.jp,0x8"
"Type"="NTP"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config]
"LocalClockDispersion"=dword:00000000
"AnnounceFlags"=dword:00000005
"MinPollInterval"=dword:00000006
"MaxPollInterval"=dword:0000000a
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000001
Parameters - NtpServer
外部NTPサーバを記述します。RFC準拠でMin/MaxPollIntervalを使えるよう0x8フラグを指定します。複数記載する場合は区切り文字にスペースを使います。
デフォルト値:time.windows.com,0x9
Parameters - Type
タイプをNTPにします
デフォルト値:NTP(AD環境の場合はNT5DS)
Config - LocalClockDispersion
0x0を指定します。
デフォルト値:0xa
Config - AnnounceFlags
権威ある時刻サーバを意味する0x5を指定します。
デフォルト値:0xa
Config - MinPollInterval
0x6(2の6乗=64秒)を指定します。Linuxのntpdのminpoll値がデフォルトで6の為。ntpdのminpoll値を変更している場合は調整が必要かもしれません。
デフォルト値:0xa(AD環境の場合は0x6)
Config - MaxPollInterval
0xa(2の10乗=1024秒)を指定します。Linuxのntpdのmaxpoll値がデフォルトで10の為。ntpdのmaxpoll値を変更している場合は調整が必要かもしれません。
デフォルト値:0xf(AD環境の場合は0xa)
TimeProviders\NtpServer - Enabled
NTPサーバを有効にする為、0x1を指定します。
デフォルト値:0x0(AD環境の場合は0x1)

※各デフォルト値は検証環境のWindows Server 2008 R2の場合です。後日、Windows Server 2016で確認すると一部異なるものもありました。

##サービス設定
スタートアップ設定を行い自動起動するようにします。
※AD環境の場合はデフォルトで自動起動の為、スタートアップ設定は不要です

sc config w32time start= auto

レジストリ変更を反映させる為、サービス再起動します。

sc stop w32time && sc start w32time

##NTP動作確認(Windowsサーバ)
w32tmコマンドにて確認を行います。

>w32tm /query /status /verbose
閏インジケーター: 0 (警告なし)
階層: 3 (二次参照 - (S)NTP で同期)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.1221313s
ルート分散: 0.8496165s
参照 ID: 0xD2ADA057 (ソース IP:  210.173.160.87) ← ソースIPが表示されていればOK
最終正常同期時刻: 2015/11/20 16:22:11
ソース: ntp.jst.mfeed.ad.jp,0x8
ポーリング間隔: 7 (128s)

フェーズ オフセット: -0.0090275s
クロック レート: 0.0156250s
State Machine: 1 (保留)
タイム ソース フラグ: 0 (なし)
サーバーのロール: 576 (高信頼タイム サービス)
最終同期エラー: 0 (コマンドは正しく完了しました。) ← このメッセージが表示されていればOK
最終正常同期時刻からの時間: 36.9219284s

 上記のステータスになっていれば基本的には正常なのですが、この状態でもしばらく待たないとLinuxから同期できないことがあります。(通常、w32timeサービス再起動から1~2分程度)
 ソースが「Local CMOS Clock」となっている場合は、外部NTPサーバと正常に同期できていません。設定を確認し問題無い場合は参照する外部NTPサーバを変更してみてください。

##Linuxの設定と動作確認
設定ファイルを編集します。

/etc/ntp.conf
server 192.168.0.1 iburst

サービスを再起動しntpq -pコマンドで同期確認を行います。

# systemctl restart ntpd
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.0.23    210.173.160.87   3 u   21   64    1    0.253   42.460   0.517
↑
内部NTPサーバ(192.168.0.23)の先頭にアスタリスクが付いていること
refidに外部NTPサーバのIPアドレスが表示されていること

##バック・トゥ・ザ・フューチャー?
コレでサーバが未来や過去にタイムトラベルすることが無くなりますねッ!
time_machine.png

34
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?