閉域網でUbuntuをNTPサーバーに!chronyで簡単時刻同期

みなさん、こんにちは。

閉域網内で正確な時刻同期を実現したいと思ったことはありませんか?

インターネットに接続できない環境でも、NTPサーバーがあればネットワーク内の機器の時刻を正確に保つことができます。

今回は、Ubuntuとchronyを使って、閉域網内にNTPサーバーを構築する方法を解説します。

なお、Ubuntuと限定していますが、Debian系のディストリビューションであれば、同様の手法でNTPサーバーの構築が可能です。Red Hat系など他のディストリビューションは、使用するコマンドが異なりますので注意してください。

Windows Server を使いたい場合は以下の記事を参考にしてください。

 


 

1. NTPサーバーとは?

NTP(Network Time Protocol)は、ネットワーク経由で機器の時刻を正確に同期するためのプロトコルです。NTPサーバーは、正確な時刻情報を提供し、クライアントはNTPサーバーから時刻を取得して自身の時刻を調整します。

ネットワークに接続された機器は、時間のずれによって様々な問題が発生する可能性があります。例えば、ログの時間がずれることで問題発生時の原因特定が困難になったり、システムの時間がずれることで連携しているシステムでエラーが発生したり、セキュリティの観点からも正確な時間管理は重要です。

NTPサーバーを導入することで、これらの問題を解決し、システムの安定性を向上させることができます。

特に閉域網内でIoT機器やサーバーを運用する場合、外部のNTPサーバーに接続できないため、ネットワーク内にNTPサーバーを構築することが必須となります。

 


 

2. chronyとは?

chronyは、高速かつ正確に時刻同期を行うことができるNTPサーバーです。

小規模なネットワーク環境や、仮想マシン環境での利用に適しています。

 


 

3. NTPサーバー構築手順

 

3.1. chronyのインストール

まず、chronyをインストールします。

sudo apt update
sudo apt install chrony

3.2. 設定ファイルの編集

次に、chronyの設定ファイルを編集します。外部NTPサーバーとの同期を無効にし、ローカルクロックを参照するように設定します。

sudo nano /etc/chrony/chrony.conf

ファイル内のpoolまたはserverで始まる行をすべて#でコメントアウトします。

# pool ntp.nict.jp iburst
# server ntp.ubuntu.com iburst

次に、/etc/chrony/conf.d/ディレクトリ内に新しい設定ファイルを作成し、ローカルクロック参照とアクセス許可の設定を行います。

sudo nano /etc/chrony/conf.d/local.conf

ファイルに以下の内容を記述します。

local stratum 10
allow 192.168.1.0/24 # ローカルネットワークのIPアドレス範囲に合わせて変更
  • local stratum 10
    ローカルクロックを参照し、ストラタム10のNTPサーバーとして動作します。
     
  • allow 192.168.1.0/24
    ローカルネットワークからのNTPリクエストを許可します。ネットワーク環境に合わせてIPアドレス範囲を変更してください。もしすべてのアドレスからのリクエストを許可したい場合は allow とだけ入力してください。

3.3. chronyの再起動

設定を反映するために、chronyサービスを再起動します。

sudo systemctl restart chrony

3.4. ファイアウォールの設定

NTPサーバーのセキュリティを確保するために、ファイアウォールでNTPポート(UDP 123)へのアクセスを制限します。以下のコマンドを実行して、ローカルネットワークからのNTPリクエストのみを許可します。

sudo ufw allow from 192.168.1.0/24 to any port 123 proto udp
sudo ufw enable
  • 192.168.1.0/24は、ローカルネットワークのIPアドレス範囲に合わせて変更してください。
  • もしすべてのアドレスを許可したい場合は以下のコマンドを実行してください。
    sudo ufw allow 123/udp

3.5. 動作確認

chronyc trackingコマンドを使用して、chronyが正常に起動しているかを確認します。

chronyc tracking

出力結果のReference ID7F7F0101 ()Stratumが設定したストラタム(例:10)になっていれば、ローカルクロックを参照してNTPサーバーとして動作しています。

また、System timeFrequencyLeap statusなどの項目も確認し、正常な値になっているかを確認します。

3.6. クライアントの設定

今回、クライアントとしてはLinuxが動作しているIoT端末を想定します。

NTPサーバーを利用するクライアント側では、/etc/systemd/timesyncd.confファイルを編集し、NTPサーバーのアドレスを指定します。

sudo nano /etc/systemd/timesyncd.conf

ファイル内のNTP=の行を編集します。

[Time]
NTP=192.168.1.1 # NTPサーバーのIPアドレス

systemd-timesyncdを再起動します。

sudo systemctl restart systemd-timesyncd

timedatectl statusコマンドで、NTPサーバーとの同期状況を確認します。

timedatectl status

System clock synchronized: yesと表示されれば、NTPサーバーと正常に同期しています。

 


 

4. まとめ

今回は、Ubuntuとchronyを使って、閉域網内にNTPサーバーを構築する方法を解説しました。

NTPサーバーを構築することで、ネットワーク内の機器の時刻を正確に保ち、システムの安定性を向上させることができます。

ぜひ、今回の記事を参考にして、NTPサーバーを構築してみてください。

 

本日も最後までお読みいただきありがとうございました。

それではよいUbuntuライフを!

「閉域網でUbuntuをNTPサーバーに!chronyで簡単時刻同期」への2件のフィードバック

  1. ピンバック: Windows Server環境でNTPサーバーを構築する方法 - ビューローみかみ

  2. ピンバック: 軽量Linuxの決定版?!Bodhi Linux インストールガイド – ビューローみかみ

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール