「OpenNTPD」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
1行目: 1行目:
[[Category:ネットワーク]]
+
[[Category:Network Time Protocol]]
 
[[en:OpenNTPD]]
 
[[en:OpenNTPD]]
 
[[it:OpenNTPD]]
 
[[it:OpenNTPD]]
9行目: 9行目:
 
{{Related articles end}}
 
{{Related articles end}}
   
OpenNTPD (OpenBSD プロジェクトのメンバー) は Network Time Protocol を使ってインターネット上の時刻サーバーとシステムクロックを同期することができるデーモンです。必要ならば OpenNTPD 自体も時刻サーバーとして使うことができます。
+
OpenNTPD (OpenBSD プロジェクトのメンバー) は Network Time Protocol を使ってインターネット上の時刻サーバーとシステムクロックを同期することができるデーモンです。必要ならば OpenNTPD 自体も時刻サーバーとして使うことができます。RFC 5905 で定義されている Simple Network Time Protocol バージョン 4 と RFC 1305 で定義されている Network Time Protocol バージョン 3 が実装されています。
   
 
== インストール ==
 
== インストール ==
{{Pkg|openntpd}} パッケージを[[インストール]]してください。ローカルコンピュータの時刻を同期したいだけならデフォルト設定で問題ありません。詳しい設定をしたいときは、{{ic|/etc/ntpd.conf}} ファイルを編集してください:
+
{{Pkg|openntpd}} パッケージを[[インストール]]してください。ローカルコンピュータの時刻を同期したいだけならデフォルト設定で問題ありません。
   
  +
== 設定 ==
  +
詳しい設定をしたいときは、{{ic|/etc/ntpd.conf}} ファイルを編集してください。利用可能なオプションは {{man|5|ntpd.conf}} を参照。
  +
  +
{{Tip|設定したら、次のコマンドを実行して設定ファイルが正しいか確認してください: {{ic|$ ntpd -n}}。}}
  +
  +
{{Note|1=[https://marc.info/?l=openbsd-tech&m=142356166731390&w=2 HTTPS 制約機能] は {{Pkg|openntpd}} ではサポートされていません。使用するには LibreSSL を使って OpenNTPD をビルドする必要があります。{{Pkg|openntpd}} は OpenSSL でビルドされています。}}
  +
  +
=== クライアント ===
 
特定のサーバーと同期するには、"server" ディレクティブをアンコメント・編集します。[http://www.pool.ntp.org/zone/@ www.pool.ntp.org/zone/@] であなたの地域にあるサーバーの URL を確認できます。
 
特定のサーバーと同期するには、"server" ディレクティブをアンコメント・編集します。[http://www.pool.ntp.org/zone/@ www.pool.ntp.org/zone/@] であなたの地域にあるサーバーの URL を確認できます。
   
20行目: 28行目:
 
"servers" ディレクティブも "server" ディレクティブと同じように機能しますが、DNS で複数の IP アドレスが解決される場合、全てのサーバーに同期されます。大抵の場合はデフォルトの "pool.ntp.org" で何の問題もありません。
 
"servers" ディレクティブも "server" ディレクティブと同じように機能しますが、DNS で複数の IP アドレスが解決される場合、全てのサーバーに同期されます。大抵の場合はデフォルトの "pool.ntp.org" で何の問題もありません。
   
pool.ntp.org
+
servers pool.ntp.org
   
 
"server" や "servers" ディレクティブはいくらでも使うことができます。
 
"server" や "servers" ディレクティブはいくらでも使うことができます。
   
  +
=== サーバー ===
 
OpenNTPD を時刻サーバーとしてコンピュータで実行したい場合、"listen" ディレクティブをアンコメント・編集してください。例:
 
OpenNTPD を時刻サーバーとしてコンピュータで実行したい場合、"listen" ディレクティブをアンコメント・編集してください。例:
   
34行目: 43行目:
 
精度を高めるために、まず現在の時刻を同期してから時刻サーバーは時刻を送信し始めます。システムの精度によって、数時間から数日かかることもあります。
 
精度を高めるために、まず現在の時刻を同期してから時刻サーバーは時刻を送信し始めます。システムの精度によって、数時間から数日かかることもあります。
   
  +
== 使用方法 ==
 
=== systemd で OpenNTPD を有効化 ===
 
=== systemd で OpenNTPD を有効化 ===
 
{{ic|openntpd}} サービスを[[systemd#ユニットを使う|起動・有効化]]してください。
 
{{ic|openntpd}} サービスを[[systemd#ユニットを使う|起動・有効化]]してください。
   
== openntpd をネットワーク接続に依存させる ==
+
=== openntpd をネットワーク接続に依存させる ===
 
ネットワーク接続が必ずしもあるわけではない場合 (ノートパソコンで無線接続している場合やダイアルアップ接続を使っている場合など)、起動時にシステムデーモンとして {{Ic|openntpd}} を実行することは理にかなっていません。以下はネットワーク接続にあわせて {{Ic|openntpd}} を制御する方法です。以下の設定は {{Ic|ntpd}} でも使うことができます。
 
ネットワーク接続が必ずしもあるわけではない場合 (ノートパソコンで無線接続している場合やダイアルアップ接続を使っている場合など)、起動時にシステムデーモンとして {{Ic|openntpd}} を実行することは理にかなっていません。以下はネットワーク接続にあわせて {{Ic|openntpd}} を制御する方法です。以下の設定は {{Ic|ntpd}} でも使うことができます。
   
=== NetworkManager dispatcher を使う ===
+
==== NetworkManager dispatcher を使う ====
 
[[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager の dispatcher スクリプト]]を使うことでネットワーク接続に合わせて OpenNTPD を立ち上げたり停止することができます。{{Pkg|networkmanager-dispatcher-openntpd}} で必要なスクリプトを[[インストール]]することが可能です。
 
[[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager の dispatcher スクリプト]]を使うことでネットワーク接続に合わせて OpenNTPD を立ち上げたり停止することができます。{{Pkg|networkmanager-dispatcher-openntpd}} で必要なスクリプトを[[インストール]]することが可能です。
   
=== dhcpcd フックを使う ===
+
==== wicd を使う ====
  +
{{ic|/usr/lib/dhcpcd/dhcpcd-hooks/*}}
 
  +
以下のスクリプトを作成して [[chmod]] で実行可能権限を付与してください:
  +
  +
{{hc|/etc/wicd/scripts/postconnect/openntpd-start.sh|
  +
#!/bin/sh
  +
systemctl start openntpd.service
  +
}}
  +
  +
{{hc|/etc/wicd/scripts/predisconnect/openntpd-stop.sh|
  +
#!/bin/sh
  +
systemctl stop openntpd.service
  +
}}
  +
  +
==== dhcpcd フックを使う ====
  +
{{hc|/etc/dhcpcd.exit-hook|
  +
if $if_up; then
  +
systemctl start openntpd.service
  +
elif $if_down; then
  +
systemctl stop openntpd.service
  +
fi
  +
}}
   
 
[[dhcpcd#フック]]を見てください。
 
[[dhcpcd#フック]]を見てください。
56行目: 86行目:
 
以下を実行してみてください:
 
以下を実行してみてください:
   
ntpd -s -d
+
# ntpd -s -d
   
 
上記のコマンドでシステムを手動で同期することができます。
 
上記のコマンドでシステムを手動で同期することができます。
65行目: 95行目:
 
==参照==
 
==参照==
 
* http://www.openntpd.org
 
* http://www.openntpd.org
  +
* [https://github.com/openntpd-portable/openntpd-portable OpenNTPD Portable]

2018年1月1日 (月) 22:07時点における版

関連記事

OpenNTPD (OpenBSD プロジェクトのメンバー) は Network Time Protocol を使ってインターネット上の時刻サーバーとシステムクロックを同期することができるデーモンです。必要ならば 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-openntpd で必要なスクリプトをインストールすることが可能です。

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 デーモンをバックグラウンドではなく通常の方法で起動してください。

参照