OpenNTPD

提供: ArchWiki
2024年8月14日 (水) 22:59時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (ネットワークタイムプロトコルに変更)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

OpenNTPD (OpenBSD プロジェクトのメンバー) はネットワークタイムプロトコルを使ってインターネット上の時刻サーバーとシステムクロックを同期することができるデーモンです。必要ならば OpenNTPD 自体も時刻サーバーとして使うことができます。RFC 5905 で定義されている Simple Network Time Protocol バージョン 4 と RFC 1305 で定義されている Network Time Protocol バージョン 3 が実装されています。

インストール

openntpd パッケージをインストールしてください。ローカルコンピュータの時刻を同期したいだけならデフォルト設定で問題ありません。

設定

詳しい設定をしたいときは、/etc/ntpd.conf ファイルを編集してください。利用可能なオプションは ntpd.conf(5) を参照。

ヒント: 設定したら、次のコマンドを実行して設定ファイルが正しいか確認してください: $ ntpd -n
ノート: HTTPS 制約機能openntpd ではサポートされていません。使用するには LibreSSL を使って OpenNTPD をビルドする必要があります。openntpd は OpenSSL でビルドされています。

クライアント

特定のサーバーと同期するには、"server" ディレクティブをアンコメント・編集します。www.pool.ntp.org/zone/@ であなたの地域にあるサーバーの URL を確認できます。

server ntp.example.org

"servers" ディレクティブも "server" ディレクティブと同じように機能しますが、DNS で複数の IP アドレスが解決される場合、全てのサーバーに同期されます。大抵の場合はデフォルトの "pool.ntp.org" で何の問題もありません。

servers pool.ntp.org

"server" や "servers" ディレクティブはいくらでも使うことができます。

サーバー

OpenNTPD を時刻サーバーとしてコンピュータで実行したい場合、"listen" ディレクティブをアンコメント・編集してください。例:

listen on *

上記の設定だと全てのインターフェイスを listen します。ループバックインターフェイスだけを listen するには:

listen on 127.0.0.1

精度を高めるために、まず現在の時刻を同期してから時刻サーバーは時刻を送信し始めます。システムの精度によって、数時間から数日かかることもあります。

使用方法

systemd で OpenNTPD を有効化

openntpd サービスを起動・有効化してください。

openntpd をネットワーク接続に依存させる

ネットワーク接続が必ずしもあるわけではない場合 (ノートパソコンで無線接続している場合やダイアルアップ接続を使っている場合など)、起動時にシステムデーモンとして openntpd を実行することは理にかなっていません。以下はネットワーク接続にあわせて openntpd を制御する方法です。以下の設定は ntpd でも使うことができます。

NetworkManager dispatcher を使う

NetworkManager の dispatcher スクリプトを使うことでネットワーク接続に合わせて OpenNTPD を立ち上げたり停止することができます。networkmanager-dispatcher-openntpdAUR で必要なスクリプトをインストールすることが可能です。

wicd を使う

以下のスクリプトを作成して chmod で実行可能権限を付与してください:

/etc/wicd/scripts/postconnect/openntpd-start.sh
#!/bin/sh
systemctl start openntpd.service
/etc/wicd/scripts/predisconnect/openntpd-stop.sh
#!/bin/sh
systemctl stop openntpd.service

dhcpcd フックを使う

/etc/dhcpcd.exit-hook
if $if_up; then
	systemctl start openntpd.service
elif $if_down; then
	systemctl stop openntpd.service
fi

dhcpcd#フックを見てください。

トラブルシューティング

時刻が同期されない

時刻が正しく設定されずログに以下のように表示される場合:

openntpd adjtime failed: Invalid argument

以下を実行してみてください:

# ntpd -s -d

上記のコマンドでシステムを手動で同期することができます。

時刻のズレが増える

バックグラウンドで openntpd を実行すると実際の時刻とコンピュータに保存されている時刻の同期エラーが発生することがあります。デスクトップの時計と実際の時刻のズレが増えていっている場合、openntpd デーモンをバックグラウンドではなく通常の方法で起動してください。

参照