OpenNTPD
OpenNTPD (OpenBSD プロジェクトのメンバー) は Network Time Protocol を使ってインターネット上の時刻サーバーとシステムクロックを同期することができるデーモンです。必要ならば OpenNTPD 自体も時刻サーバーとして使うことができます。
目次
インストール
openntpd パッケージをインストールしてください。ローカルコンピュータの時刻を同期したいだけならデフォルト設定で問題ありません。詳しい設定をしたいときは、/etc/ntpd.conf
ファイルを編集してください:
特定のサーバーと同期するには、"server" ディレクティブをアンコメント・編集します。www.pool.ntp.org/zone/@ であなたの地域にあるサーバーの URL を確認できます。
server ntp.example.org
"servers" ディレクティブも "server" ディレクティブと同じように機能しますが、DNS で複数の IP アドレスが解決される場合、全てのサーバーに同期されます。大抵の場合はデフォルトの "pool.ntp.org" で何の問題もありません。
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-openntpd で必要なスクリプトをインストールすることが可能です。
dhcpcd フックを使う
/usr/lib/dhcpcd/dhcpcd-hooks/*
dhcpcd#フックを見てください。
トラブルシューティング
時刻が同期されない
時刻が正しく設定されずログに以下のように表示される場合:
openntpd adjtime failed: Invalid argument
以下を実行してみてください:
ntpd -s -d
上記のコマンドでシステムを手動で同期することができます。
時刻のズレが増える
バックグラウンドで openntpd を実行すると実際の時刻とコンピュータに保存されている時刻の同期エラーが発生することがあります。デスクトップの時計と実際の時刻のズレが増えていっている場合、openntpd デーモンをバックグラウンドではなく通常の方法で起動してください。