努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:other:other-046

文書の過去の版を表示しています。


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>
documents/other/other-046.1460767296.txt.gz · 最終更新: 2023/04/14 02:31 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki