みなさん、こんにちは。
閉域網内で正確な時刻同期を実現したいと思ったことはありませんか?
インターネットに接続できない環境でも、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 ID
が7F7F0101 ()
、Stratum
が設定したストラタム(例:10)になっていれば、ローカルクロックを参照してNTPサーバーとして動作しています。
また、System time
、Frequency
、Leap 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ライフを!
ピンバック: Windows Server環境でNTPサーバーを構築する方法 - ビューローみかみ
ピンバック: 軽量Linuxの決定版?!Bodhi Linux インストールガイド – ビューローみかみ