目次
samba4で構築したActive Directoryドメインに参加しているWindows PCのタイマーを同期させる方法
2016/04/15
ntpdへの設定メモ。
環境は FreeBSD 10.2 x86-64環境。samba4が稼働している状態が前提。
大体5分ズレる
最近になってPCのタイマーが大体5分ズレている事に気づく。
部屋のWindows PCはFreeBSD上で稼働しているsamba4のADドメインに参加していて、タイマーはこのドメインコントローラーと同期をとる。
たまたまFreeBSDのタイマーとWindows PCのタイマーを比べたら、Windowsは約5分進んでいた。
気持ち悪いので調べて直す事に。
Windows純正 Active Directoryでもおこる
ActiveDirectory環境でクライアントの時刻がずれる!! (コマンドw32tm sc) - なんでもシステム管理者(IT大好き?)
他にも同じ事象についてエントリを書いている方々がいて、純正Active Directoryでもタイマーの同期ができないことがしばしばあるらしい。 上記blogで説明のあるコマンドをWindows PCで叩いてちょっと確認してみる。
うん、ドメインコントローラーにつながっていないね
管理者としてコマンドプロンプトを起動する。管理者のアカウントでログインしてコマンドプロンプトを立ち上げるのではなく、コマンド立ち上げ時に管理者として立ち上げるオプションを選択する。Windows10だと‟コマンドプロンプト(管理者)”のショートカットから起動。Windows 7 や Windows Server 2008 R2 なんかなら、コマンドプロンプトのメニュー上で右クリックして‟管理者として実行”を選択する。
そしてw32tmコマンドを実行してみる。
Microsoft Windows [Version 10.0.10586] (c) 2015 Microsoft Corporation. All rights reserved. C:\WINDOWS\system32>w32tm /query /status 閏インジケーター: 3 (最後の 1 分間は 61 秒) 階層: 0 (未指定) 精度: -6 (ティックごとに 15.625ms) ルート遅延: 0.0000000s ルート分散: 0.0000000s 参照 ID: 0x00000000 (未指定) 最終正常同期時刻: 未指定 ソース: Free-running System Clock ポーリング間隔: 10 (1024s) C:\WINDOWS\system32>
Free-running System Clock は外部と同期ができていなくてローカルクロックのままな状態。そしてああだこうだと弄っていると今度は Local CMOS Clock になった。
C:\WINDOWS\system32>w32tm /query /status 閏インジケーター: 3 (最後の 1 分間は 61 秒) 階層: 0 (未指定) 精度: -6 (ティックごとに 15.625ms) ルート遅延: 0.0000000s ルート分散: 0.0000000s 参照 ID: 0x00000000 (未指定) 最終正常同期時刻: 未指定 ソース: Local CMOS Clock ポーリング間隔: 10 (1024s) C:\WINDOWS\system32>
Local CMOS Clock は外部との同期すら諦めた状態の模様。
samba 側の設定
smb4.conf 確認
samba4の設定を行う。
/usr/local/etc/smb4.conf の“[global]“セクションにあるパラメタ server services にntp_signdを追加する。すでにあるなら修正不要。
- smb4.conf
# Global parameters [global] : : server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, smb : :
ntp.conf 確認
ntpdの設定を行う。
/etc/ntp.conf の restrict default パラメタに mssntp を追加する。次に ntpsigndsocket オプションで通信で使う署名を指定する。
署名付きの通信ができない ntpd ではタイマー同期ができないので、ntpd のバージョンを調べて古いならバージョンアップをする。
root@amanda:/home/adc # ntpd -v /usr/sbin/ntpd: illegal option -- v ntpd - NTP daemon program - Ver. 4.2.8p6 Usage: ntpd [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \ [ <server1> ... <serverN> ] Try 'ntpd --help' for more information. root@amanda:/home/adc #
うちの環境下にインストールされている ntpd はバージョン 4.2.8p6 で、このバージョンでは動作した。
ntpsigndsocket オプションに指定する署名は以下で探し出せる。
root@amanda:/home/adc # samba -b | grep NTP NTP_SIGND_SOCKET_DIR: /var/run/samba4/ntp_signd root@amanda:/home/adc #
こんな追加修正になる。
- ntp.conf
: : restrict default limited kod nomodify notrap nopeer noquery mssntp : : ntpsigndsocket /var/run/samba4/ntp_signd : :
サービス再起動
ntpdとsambaのサービスデーモンを再起動する。
root@amanda:/home/adc # service ntpd restart Stopping ntpd. Waiting for PIDS: 78885, 78885. Starting ntpd. root@amanda:/home/adc # service samba_server restart Performing sanity check on Samba configuration: OK Stopping samba. Waiting for PIDS: 77849. Performing sanity check on Samba configuration: OK Starting samba. root@amanda:/home/adc #
/var/log/messages にチトおっかない感じのログが出るけど大丈夫らしい。
[Samba] MS-SNTP signd block
Apr 15 22:03:59 amanda ntpd[79111]: MS-SNTP signd operations currently block ntpd degrading service to all clients.
Windows PC 側の設定
管理者としてコマンドプロンプトを起動する。先のものと同じく、コマンド立ち上げ時に管理者として立ち上げるオプションを選択する。そして再度同期を指定する。
C:\WINDOWS\system32>w32tm /config /update /syncfromflags:DOMHIER コマンドは正しく完了しました。 C:\WINDOWS\system32>
この後、PCを再起動する。
結果
無事にタイマーは同期した。
C:\WINDOWS\system32>w32tm /query /status 閏インジケーター: 0 (警告なし) 階層: 4 (二次参照 - (S)NTP で同期) 精度: -6 (ティックごとに 15.625ms) ルート遅延: 0.1266174s ルート分散: 7.8578657s 参照 ID: 0xXXXXXXXX (ソース IP: xxx.xxx.xxx.xxx) 最終正常同期時刻: 2016/04/15 20:47:43 ソース: dc01.hgotoh.local ポーリング間隔: 10 (1024s) C:\WINDOWS\system32>