「NTPサーバーって何?」
「NTPサーバーの仕組みが良く分からない」
「時刻同期の設定方法を知りたい」
このような疑問を持つ方はいませんか?
実は、私たちのパソコンやスマホが常に正確な時間を保っているのは、NTPサーバーのおかげです。
本記事ではNTPサーバーの概要や仕組み、時刻同期設定の方法などをわかりやすく解説していきます。
信頼できる代表的なNTPサーバーも紹介するので、ぜひ最後までお読みください。
株式会社Jiteraは、独自のAI技術を使った高品質&最短納期の開発が得意です。システム開発やアプリ開発に関する相談は、気軽にお問い合わせください。
NTPサーバーとは?
NTPサーバーについて軽く説明すると、NTPクライアント側となるwindows pcやスマートフォン等と、インターネット回線を介して時刻同期を行うプロトコルのNTPと呼ばれるものを使用します。
これにより、クライアント側となるwindows pc やスマートフォン等と同期を行うサーバー側の事を、NTPサーバーと呼びます。
NTPサーバーは通常であれば、正確な時刻をネットワーク上から取得し、クライアント端末であるwindows pc等に送信している為、同期時はクライアント端末のwindows pcも同様にNTPサーバーから正確な時刻を取得します。
NTPサーバーの上位となるものについては、一般的には公開されておりませんので、基本的には通信事業者からNTPサーバーが提供されています。
NTPとは
NTPプロトコルとは、通信を利用したプロトコルと呼ばれるものの一つです。
Network Timeプロトコルの事を指しており、windows pc等に内蔵されている時計を、インターネットを介する事により正しい時間を同期させるためのプロトコルの事を、NTPと呼びます。
117に電話をすると、電話から自動音声で正しい時刻を聞く事できますがNTPはその機能と同じような動きとなるプロトコルと言われています。
次はNTPの役割について解説していきます。
NTPの役割
NTPの役割は、windows pcの時刻同期だけではなく、システム開発やネットワーク、サーバ運用にも必要な役割があります。
システムを運用しているサーバー上の時刻と連携しているクライアントとの時刻が正しく同期されていないと、バックグラウンドで動いているタスクやアプリケーション等が、指定している時刻に意図した時刻に動作せず、最悪な場合システムが正常に動作しなくなってしまう事もあります。
それを防ぐ為にNTPプロトコルと呼ばれる通信プロトコルの導入が必要となります。
NTPサーバの時刻同期とは?
NTPサーバーが行う上位サーバと下位サーバによる時刻の同期とは、NTPサーバーの上位にある、原子の時計やGPSを基準にNTPサーバーが時刻を取得し、そのNTPサーバーから別のNTPサーバと時刻を共有するようになっています。
ですのでNTPサーバーは階層的な構造で時刻同期を行っている事になります。
協定世界時(UTC)
協定世界時とは、世界中にある時間研究機構によって維持をされている、時間メモリによるとても高精細な原資による時計によって設定されているものです。
UTCは1日/ナノ秒により計算されているので、とても正確です。
現在は世界各地の標準時刻として、協定世界時を定めています。
ただし、UTCは日本時間から9時間引いたものとなりますので、その点はご注意下さい。
※UTCはCoordinated Universal Timeの略称とも呼ばれています。
日本標準時(JST)
日本標準時(JST)は、先ほどご説明しましたUTCに9時間足したタイムゾーンの事を指します。
スポーツなどの中継でよく呼ばれている「日本の標準時間」や、あまり聞き馴じみがないと思いますが、「中央標準時」、「JST(Japan Standard time)」とも呼ばれています。
NTPの仕組み
NTPはそれぞれサーバー側とクライアント側の関係によって成り立っています。
NTPサーバーとはクライアント側の親のような存在、NTPクライアント側はNTPサーバ側の子どものような役割をしており、それぞれ相互関係で通信を行っています。
NTPサーバーとNTPクライアント
NTPサーバー:それぞれにサーバ側とクラアント側のように、上位から下位へのように構成されています。
そのため、下位のNTPサーバーやwindows pc 等クライアント端末から時刻を参照される事もありますが、NTPサーバ自体がクラアント側になる事により、上位にあるNTPサーバーを参照する事もあります。
NTPクライアント:windows pcのほかにもシステム環境等ではサーバー自体がクライアント側になる事も多いので、その事も念頭においておく必要があります。
NTPサーバーの仕組み
NTPサーバーは基本的に先ほどもご紹介しましたが、非常に精度の高いGPSや原子時計を最上位としており、その配下にNTPサーバーが存在します。
原子時計側がサーバー側の立ち位置となり、NTPサーバーはクライアント側という立ち位置になります。
NTPサーバーは基本的に、このような精度の高いNTPサーバと時刻同期をする事により、正確な時間を取得します。
さらに、NTPサーバーとNTPクライアント間の通信も、NTPプロトコルにより遅延や時差が修正され、正確な時刻同期を実現しています。
NTPサーバーはなぜ重要?
さて、ここまでNTPサーバーについての仕組みや、種類、同期の仕方などをご紹介しましたが、NTPサーバーがなぜ重要なのかについて、ご説明したいと思います。
NTPサーバーの重要性については、以下の3点にてご説明させて頂ければと思います。
システムの連携時に正確な時刻が必要
企業のシステムは、外部サーバーと内部サーバーの連携、内部サーバーから端末への連携等、様々な機能が搭載されている外部及び内部のサーバーとの連携及びクライアント側の端末への連携によって稼働されています。
時刻が正しく設定されていないと、バッチファイル等が意図した時間に起動せず、システムの稼働に悪影響を及ぼします。
また、ファイルサーバー側によるファイル共有機能等も、サーバー側から端末間で時刻のずれがあると、ファイルサーバー側から端末への共有が上手くいかず、業務に支障が出る可能性があります。
ネットワーク機器やサーバの認証に必要
システム環境において、外部と内部による外部及い内部のインターネット接続用の機器や内部及び外部サーバー機器の連携は必須です。
しかし、インターネット外部及び内部からのネットワーク機器とサーバー側機器の認証の間に時刻のずれが生じると、お互いの通信をするためのプロトコルが上手く動作せず、認証に時間がかかる事もあります。
それによってシステム環境の動作が不安定になることもあるため注意が必要です。
例えばシステムを利用しているユーザーの業務に支障が発生する可能性や、時刻がずれていく事によって、システム担当者の意図した時間にシステムが動作せず、システム検証のやり直しが発生する可能性も考えられるでしょう。
障害発生時に正確な時刻が必要
システムに何らかの障害が発生した場合、システム担当者はサーバーや内部及び外部ネットワーク接続用の機器にログインし、エラーログ等を採取、障害が発生している箇所の洗い出し、障害の復旧を行う必要があります。
しかし、時刻のずれが発生している外部及び内部のネットワーク機器やサーバーが存在すると、不具合が発生している機器の特定が難しくなるのが欠点です。
その結果障害の原因の特定に時間がかかってしまい、その間にサービスを止めてしまう為、ユーザーに悪影響を与えてしまいます。
代表的なNTPサーバー
代表的なNTPサーバーは一般的なユーザーであれば、独立行政法人情報通信研究機構(NECT)、企業やITインフラなどベンダー向けであればNTP Pool Project、日本での時刻合わせで代表的なNTPサーバーはインターネットマルチフィード(Mfeed)時刻情報提供サービスfor publicとなります。
独立行政法人情報通信研究機構(NICT)の公開NTPサーバ
NICTは1秒間に100万以上のリクエスト処理が可能なハードウェアを使用したNTPサーバーを構築することにより、上位のNTPサーバー側として一般的に公開しています。
サーバー名はntp.nict.jpとなっており、基本的にどのようなユーザーでも使用可能です。
windowsやmac osにも標準でこの機能が搭載されています。
NTP POOL PROJECTの公開NTPサーバ
NTPpoolは、タイムサーバー上に存在する仮想クラスタ群で、数百万のクライアント側に安定したNTPサーバーサービスとして提供しているプロジェクトの事を指しています。
主な対象はインターネットやサーバー等のベンダー向けとなります。
インターネットマルチフィード(MFEED)の時刻情報提供サービス for Public
mfeedは基本的に、NTPを参照出来ればwindows pcやベンダー向け機器等すべてのクライアントに対応するNTPサーバーです。mfeedNTPサーバを利用する事により、ネットワークを通じてとても高い精度の「日本標準時間」の時刻同期を無料で利用できるNTPサーバーです。
NTPサーバの参照方法
NTPサーバーをwindows、mac、及びLixux等クライアント端末へ簡単に参照させる事ができます。
NTPサーバーの参照方法はos毎になりますのでご注意下さい。
NTPサーバーのos毎の設定方法は下記のとおりです。
Windowsの時刻同期設定
windowsでの時刻自動同期設定は下記の通りです。
- Windowsの下のタスクバーの右にある、時刻と年月日が表示されているところを右クリックします。
- 表示された右クリックメニューの中にある日時を調整するを選択します。
- 日付と時刻の画面のウインドウが表示されますので、その中にある時刻を自動的に設定する欄を確認します。
- 時刻を自動的に設定する欄の右にあるつまみでオフと表示されている場合は、そのつまみを選択し、オンに切り替えます。
- オンに切り替えた後、タスクバーにある時刻が、ずれている時刻から正常な時刻に戻ったら、日付と時刻のウインドウを×で閉じます。
以上で作業完了となります。
Macの時刻同期設定
mac osでの時刻同期設定の方法は下記の通りです。
- mac osの上のバーにあるアップルメニューを選択します。
- その中から「システム設定」を選択します。
- サイドバーの中から、「一般」を選択します。
※場合によってはtoutchIDやパスワードの入力が求められますので、画面の指示に従ってtoutchIDもしくはパスワードを入力して下さい。 - 少し下にスクロールすると「日付と時刻」の設定箇所が表にありますので、その項目を選択します。
- 「日付と時刻を自動的に設定する」がオフになっている場合は、オンにします。
- mac osの時刻のずれが、自動的に修正されれば正常にNTPサーバーと同期が取れた事になります。
- 開いていた全てのウインドウを閉じます。
以上で作業完了となります。
Linuxの時刻同期設定
Linux(RHEL及びCentOS)での時刻同期方法は下記の通りです。
- RHELもしくはcentOSを立ち上げ、root権限(管理者権限)モードになります。
- ntpdateコマンドを使用し、NTPサーバーを指定します。具体的な使用例は下記の通りです。
ntpdate -v ntp.nict.jp (nictを使用した場合。引数であります -v を入力すると、時刻同期の詳細表示が確認できます。) - コマンドが成功すると、時刻同期のログが表示されますので、内容を確認します。
- 内容を確認後、現在時刻とあっているか確認する為、以下のコマンドを入力します。
date
すると日付と時刻の詳細が表示されるため、時刻があっているか確認できます。
無事時刻があっていれば、作業完了です。
NTPサーバの構築方法
windows、mac os 及びLinuxには、指定のNTPサーバーを設定することが出来ます。
ただし、設定方法はos毎に違いますのでご注意下さい。
それぞれのosでのNTPサーバー設定方法につきまして、ご紹介します。
WindowsのNTPサーバの設定
WindowsのNTPサーバー設定方法は下記のとおりです。
- windowsのタスクバーから時計と年月日がでているところを右クリック。
- 右クリックして出たメニューより日時を調整するを選択します。
- 日付と時刻の画面が表示されるので、その中のその他の時計を選択します。
- インターネット時刻タブで、設定の変更を選択します。
- 参照したいNTPサーバーのアドレスを入力します。
例:nictの場合 - ntp.nict.jpと入力します。
- インターネット時刻サーバーと同期するにチェックを入れ、今すぐ更新を選択します。
- 時計は正常に~~同期しましたと表示されたらokを選択して完了です。
MacのNTPサーバーの設定
mac osの場合の設定方法は下記の通りです。
- アップルメニューをクリックし、システム設定を選択します。
- メニューの中から一般を選択します。
- 日付と時刻を選択します。
- 日付と時刻の設定画面の中から、タイムサーバの横にある設定を選択します。
- touchIDもしくはパスワードを入力し、ロックを解除します。
- NTPサーバーを入力する画面が表示されますので、NTPサーバーのアドレスを入力します。
例:nictの場合:ntp.nict.jpと入力 - 完了を選択後、日付と時刻の画面に戻り、タイムサーバー欄に入力したNTPサーバーアドレスが表示されれば完了となります。
これでNTPサーバーとmac osの時刻が自動的にクライアント側と同期されます。
LinuxのNTPサーバの設定
Linux(RHEL及びCentOS)での場合は
- systemctl status chronydと入力後、エンターキーを押します。
※chronyをインストールしていない場合は、yumコマンドで下記の通りに操作を行って下さい。
yum install chrony - statusコマンドでenableになっていない場合は、下記の通り入力します。
systemctl enable chronyd - 再度 systemctl status chronydと入力し、enableになっていればOKです。
- NTPサーバーの参照先を設定します。
vi /etc/chrony.conf
と入力すると設定ファイルの編集画面に入りますので、server横に下記のように入力します。
server ntp.nict.jp iburst
port 0 - .:wqでviエディタを終了させます。
- chronyを再起動する為、下記の通り入力します。
systemctl restart chronyd - chronyが再起動したら、下記の通り入力後、NTPサーバーのアドレス左に*マークが表示されたら完了です
chronyc sources
Windows 10 をNTPサーバにする手順
windowsを利用して、 NTPサーバーとして動作させる事も可能です。
以下のように設定及び操作する事により、windowspcをNTPサーバーに設定できます。
レジストリエディターの起動
- windowsマークをクリックし、ファイル名を指定して実行を選択します。
- 入力ボックスが表示されますので、そこにregeditと入力し、OKを選択します。
- するとレジストリエディタが表示されますので、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesW32Time\TimeProviders\NtpServer
上記まで移動します。 - 移動後、右のスペースにEnabledの項目がありますので、項目をダブルクリックします。
- すると画面が表示されますので、値のデータを0から1へ変更します。
- 変更後、今度はHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesW32Time\Configまで移動します。
- 移動したら、AnnounceFlagsの項目がありますので、その項目をダブルクリックします。
- すると画面が表示されますので、値のデータを0から5へ変更し、OKを選択します。
その後regedit画面を閉じます。
サービスの再起動
- w32timeというサービスの再起動を行う為、ファイル名を指定して実行から管理者権限で「cmd」と入力し、コマンドプロンプトを開きます。
- するとコマンドプロンプトが起動されますので、コマンドライン上でnet stop w32timeと入力し、エンターキーを押します。
- その後、エラーログ等が出力されていなければ、続けてコマンドライン上でnet start w32timeと入力し、w32timeサービスを起動します。
- windows time サービスは正常に開始されましたと表示されれば完了です。
ファイアウォールの設定
NTPサーバーとして動作させるため、ポートの解放が必要となりますので、ファイアウォールの設定から行います。
- スタートボタンを選択し、システムツールを開きます。
- カテゴリ表示に変更し、システムとセキュリティの項目の中から、windowsdefenderファイアウォールをダブルクリックで開きます。
- 左の詳細設定を選択します。
- すると左に受信の規則とありますので受信の規則を選択した後、右の操作画面から新しい規則をクリックします。
- 規則の種類の画面が表示されますので、その中からポートを選択し次へを選択します。
- するとTCPかUDPか、ポートはどのような種類かを選択する画面が表示されますので、UDPを選択し、特定のポートを選択後、ボックス欄に123と入力し、次へを選択します。
- 接続を許可するにチェックを入れて、次へを選択します。
- 規則のプロファイルをどの接続の種類に適用するか表示されますので、全てにチェックを入れて次へを選択します。
- 名前はNTPにし、完了を選択します。
動作確認
- NTPクライアントとして、同じネットワークに所属している別の端末を用意します。
- 先ほど構築したwindows10のNTPサーバーアドレスをクライアント側の端末の時刻同期の入力欄に入力し、無事同期出来れば成功です。
NTPサーバにIPアドレスを設定するには
NTPサーバーをIPアドレスにて設定する方法は、これまでご紹介した各端末ごとの設定方法をご確認頂き、設定したいNTPのサーバーアドレスを、IPアドレスに置き換えて設定する事が可能です。
ただし、NTPサーバーによっては名前解決が必要になる為、NTPサーバーをIPアドレスのみでは設定できない場合がありますのでご注意下さい。
推奨の公開NTPサーバを指定する
推奨している公開NTPサーバーは、インターネットマルチフィード株式会社が提供しているNTPサーバーです。
NTPサーバーアドレスの指定の他に、ipv4、ipv6での指定でも問題無く可能となっています。
更に全て無償で提供されている為、コストをあまりかけず、多様な設定方法が可能です。
ipv4での設定方法は下記の通りです。
windowsまたはmac os、及びlinuxの各種端末毎のNTPサーバアドレスを指定する箇所で、以下の通り指定して下さい。
210.173.160.27(ntp1.jst.mfeed.ad.jp)
IPアドレスの指定の場合は左の数値のみの方を設定下さい。
これにより、NTPサーバーをIPアドレスとして設定が可能です。
推奨のサーバと接続が悪い場合
上記で記載したIPアドレスとクライアント(各種端末)との接続が悪い場合は、下記のいずれかのIPアドレスで設定してみて下さい。
210.173.160.57(ntp2.jst.mfeed.ad.jp)
210.173.160.87(ntp3.jst.mfeed.ad.jp)
IPv4での設定で接続が悪い場合は、下記のipv6アドレスのいずれかで設定してみて下さい。
2001:3a0:0:2001::27:123(ntp1.v6.mfeed.ad.jp)
2001:3a0:0:2005::57:123(ntp2.v6.mfeed.ad.jp)
2001:3a0:0:2006::87:123(ntp3.v6.mfeed.ad.jp)
おすすめのNTPサーバソフトウェア
ntpd:Linux
ntpdは昔から利用されているLinuxOSによる時刻合わせのソフトウェアの一つです。
LinuxOSをインストールした直後にパッケージに入っており、yumコマンドによるインストールも不要ですので、初心者の方にお勧めできるLinuxOSでのNTPサーバーソフトウェアの一つです。
Chrony:Linux(CentOS)
ChronyはCentOSと呼ばれるLinuxOSの1つでお勧めできるNTPサーバーソフトウェアです。
Chronyはntpd同様に、最新版のCentOSをインストールすれば、ほぼ全てのパッケージにて初期から搭載されているNTPサーバーソフトウェアですので、初心者のNTPサーバーソフトウェアとしておすすめです。
桜時計:Windows
桜時計は、windows専用のソフトウェアとなっており、時刻のずれをミリ秒単位で修正する時刻同期ソフトウェアです。
桜時計を起動して、windowsにて常駐させておく事により、指定したNTPサーバーと自動同期してくれます。
また、NTPサーバーはソフトウェアで自由に選択する事が可能です。
まとめ
いかがでしたでしょうか。
NTPサーバーとは時刻修正をそれぞれのクライアントに行う為のものであり、NTPサーバーとNTPクライアントの関係になっていれば、windowsでもmac osでもLinuxでも、時刻同期を行う事が可能です。
もしシステム環境等にてNTPサーバーによって同期されていない場合は業務に支障が出る可能性があるので、必ずシステム環境を構築する際はNTPサーバーも構築し、クライアント端末等と同期するようにしましょう。
NTPサーバーはサーバーアドレスだけでなく、ipv4及びipv6でも指定も可能ですので、環境に合った設定を頂ければと思います。
また、NTPサーバーを構築する際は、上位に設定するNTPサーバーが多数ございますので、事前に設定する事をおすすめします。
もしNTPサーバー、ITインフラ及びシステム開発をご検討中であれば、株式会社JITERAへお問い合わせ頂ければ、詳細な提案を纏めてお送りしますので、お気軽にお問合せ下さい。
では、最後までご覧いただき有難うございました。