業務でNTPサーバから時刻を取得する機能を実装することになりました。
会社のネットワークでは組込み機器から外部のNTPサーバにアクセスすることができないので、桜時計というフリーウェアを使って環境を構築しようとしましたが、その設定にかなりハマってしまいました。
そこで今回は、どのような設定をして問題を解消したかをまとめます🐜
開発環境
開発環境は下記の通りです(ちなみに、実際に開発しているのはスマホではありません)。
非常に単純な構成です。開発対象の組み込み機器は、無線LANなんて高価なものはありませんので、有線LANで行います。
なお、ノートPCはWindows10です。
桜時計
ググると普通のWindowsパソコンでも設定すれば、擬似的にSNTPサーバを立てることができるようでした。しかし、レジスタをいじらなければならず、戻すのもめんどくさいので、桜時計を使いました。
この桜時計ナニがすごいって、1997年で更新が止まっているのにもかかわらず1、まだみんな使っているっぽいです。
しかも、OCNが使い方のページまで作ってるぐらいすごいです。
フリーウェアを作っている方は本当にすごいですよね。ただただ尊敬します。
ハマった事象
で、本題です。
ググると、『「SNTPサーバとして動作する」のチェックボックスをつけるだけで、SNTPサーバとして使える!』と書いてあるんですが、まったく繋がりませんでした(泣)
そこで、組み込み機器の代わりにもう一台ノートPCを持ってきて、PC同士でも試しましたがダメでした。
このときの環境は以下の通りです。
あーでもないこーでもないを繰り返し、ダメ元で「ノートPC間を有線LANではなく無線LANにすれば、つながったりして」なんてことを考えて試したら、なんと接続できましたw
このときの環境は以下の通りです。
解決方法
接続できた環境を手がかりに試行錯誤を繰り返して、以下の2つをやるとつながることがわかりました。
Windows Defender ファイアウォールの設定をいじる
- 「コントロールパネル(カテゴリ)」の「システムとセキュリティ」を左クリック
- 「Windows Defender ファイアウォール」を左クリック
- 左側にある「詳細設定」を左クリック
- 左側にある「受信の規則」を左クリック
- 中央に出できた項目をスクロールすると以下のような項目が出てくる
- 明らかに怪しげな「桜時計 network time client パブリック」をダブルクリック
- 「操作」の「接続を許可する」のチェックボックスにチェックを入れて、OKを左クリック
SW_NORAS.EXEを使う
桜時計をダウンロードすると、readmeに「うまく動かないときはSW_NORAS.EXEを使ってね」みたいなことが書かれています。
私の環境ではSKRWATCH.EXEではうまく行かず、サーバ側をSW_NORAS.EXEを使うとうまくできました(クライアント側はSKRWATCH.EXEで大丈夫です)。
簡単な考察
一番効いたのはWindows Defender ファイアウォールの設定を見直したことだと思っています。
無線LANでつながったのは、
- 社内無線LANネットワークはドメインネットワークであり、
- 受信の規則でプロファイルのドメイン、プライベートのときはデフォルトで許可されていた
のが理由だと思います。
ただし、SKRWATCH.EXEでできない理由はよくわかっておりません。
おわりに
今回の事象で3日くらい潰しましたorz
ググってもみんな簡単にできたって書いてあるだけで、解決策が全然わからず、桜時計を諦めかけていました。
ダメ元で無線LANで試して接続できたところを足掛かりに、Windows側の設定を見直すまでにたどり着きました。 やっぱりこういうときは、可能性があるものはなんでも試すのが大事ですね。
参考になれば幸いです(^^)
-
作成者の宇野信太郎さんのHPのリンクはもうないみたいです。↩