FreeBSD10.2にOpenNTPdをインストールして設定する方法
序章
ネットワーク時間プロトコルであるNTPは、さまざまなオペレーティングシステムで時間を同期する方法を提供する標準化されたプロトコルです。 OpenNTPd は、元々 OpenBSD プロジェクトの一部として開発された、ネットワークタイムプロトコル(NTP)の無料で使いやすい実装です。 リモートNTPサーバーからローカルクロックを同期する機能を提供し、サーバー自体としても機能します。
このチュートリアルでは、FreeBSDにOpenNTPdをインストールする方法を説明します。
Note: As of July 1, 2022, DigitalOcean no longer supports FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.
前提条件
このチュートリアルに従うには、次のものが必要です。
- One FreeBSD 10.2 server with a root user; in this tutorial, we will refer to the user freebsd.
A FreeBSD server requires an SSH key for remote access. SSHキーの設定については、FreeBSDサーバーでSSHキーベースの認証を設定する方法をお読みください。 To learn more about FreeBSD servers and basic management, check out the Getting Started with FreeBSD tutorial series.
ステップ1—OpenNTPdをインストールする
OpenNTPdをインストールする前に、によって使用されるリポジトリ情報を更新してください pkg
:
- sudo pkg update
次に、OpenNTPdパッケージをインストールします。
- sudo pkg install openntpd
デフォルトのOpenNTPd構成は pool.ntp.org
デフォルトのタイムサーバーとして使用され、クライアントマシンとしてのみ機能するように構成されています。 このチュートリアルの残りの部分では、使用するタイムサーバーを変更する方法と、OpenNTPdをタイムサーバーとして構成する方法を示します。
手順2—タイムサーバーの変更((オプション)
次のいくつかのステップは編集します /usr/local/etc/ntpd.conf
、デフォルトの構成ファイル。 使用する ee
, vi
、またはお気に入りのテキストエディタを使用して、構成ファイルを編集します。
- sudo ee /usr/local/etc/ntpd.conf
AskBjørnHansenのGeoDNSを搭載、 pool.ntp.org
通常、あなたの国またはその近くのサーバーのIPアドレスを返します。 ほとんどのユーザーにとって、これは最良の結果をもたらします。
または、次のようなカントリーゾーンを使用することもできます br.pool.ntp.org
, de.pool.ntp.org
、 また ru.pool.ntp.org
あなたの個人的なニーズに合うように結果を強制/制限します。 NTPプールプロジェクトの詳細については、pool.ntp.orgにアクセスしてください。
このチュートリアルの例では、 NTP.br を使用します。これは、ブラジルの領土で法定時間を保存および配布するブラジルのプロジェクトです。 ブラジルにいない場合は、お住まいの国または地域で同様のプロジェクトを使用してください。
このように希望のタイムサーバーを定義し、代わりに pool.ntp.br
選択したタイムサーバーで。
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
#listen on *
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br
# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"
ステップ3—制約を変更する
カスタムクライアントセットアップでは、制約にサポートを追加することもできます。 ntpd
クエリできます Date:
TLSを介した信頼できるHTTPSサーバーからのヘッダー。
The ntpd.conf(5)
マンページには次のように書かれています。「時間情報が制約に近い範囲外にある受信したNTPパケットは破棄され、そのようなNTPサーバーは無効としてマークされます」。 これにより、クロックの精度を維持しながら、一部のMITM攻撃を防ぐことができます。
に制約を追加します /usr/local/etc/ntpd.conf
. 必ず1つ以上の信頼できる有名なHTTPSサイトを使用してください。 最初の行を削除することで、ファイルで提供されている例の行のコメントを解除できます #
以下で強調表示されている文字:
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
#listen on *
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br
# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
# constraints from "https://www.google.com/search?q=openntpd"
ステップ4—OpenNTPdをタイムサーバーとして設定する
このセクションでは、OpenNTPdのデフォルトの動作を変更し、FreeBSDをIPv4およびIPv6で時間を提供できるNTPサーバーに変更する方法を示します。
サーバー構成の最終結果は次のようになります。 your_server_ip
サーバーのIPv4またはIPv6アドレスに置き換えられます。
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
listen on your_server_ip
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br
# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"
ステップ5—起動時にOpenNTPdを開始する
OpenNTPdのデフォルトのサービス設定は、FreeBSDのブートプロセス中にデーモンを起動しません。 によって提供されるNTPサービスを追加するには ntpd
FreeBSDで、以下を実行します。
- sudo sysrc openntpd_enable="YES"
出力は次のようになります。
Outputopenntpd_enable: -> YES
起動直後に時刻を設定したい場合は、 -s
に openntpd_flags
. -v
へのすべての呼び出しが adjtime
ログに記録されます。 通過 -s
に ntpd
デーモンは、構成されたNTPサーバーの1つが応答するのを[X21X]待機して
- sudo sysrc openntpd_flags="-s -v"
出力は次のようになります。
Outputopenntpd_flags: -> -s -v
ステップ6—OpenNTPdサービスの管理
すべてのニーズに合うように構成ファイルを編集およびカスタマイズしたので、OpenNTPdが提供するサービスを開始できます。
サービスを開始するには:
sudo service openntpd start
正常に起動すると、次のように表示されます。
OutputStarting openntpd.
OpenNTPdデーモンのフラグがデバッグ情報をログに記録するように構成されている場合、出力の開始は次のようになります。
OutputStarting openntpd.
constraint certificate verification turned off
ntp_adjtime returns frequency of 8.643158ppm
通常のコマンドでOpenNTPdサービスを管理できます。 status
, restart
、など。
ステップ7—トラブルシューティング(オプション)
OpenNTPdは2つのバイナリを使用します: ntpd
と ntpctl
. 1つ目はデーモン自体であり、クライアントまたはサーバーマシンに提供されるNTPサービスを担当します。 2つ目は、実行中のデーモンに関する情報を表示するために使用されます。
このセクションでは、使用方法を説明します ntpctl
, nc
、 と sockstat
OpenNTPdとそのデーモンによって提供されるNTPサービスのトラブルシューティングを行います。 実行中のサービスがある場合、またはサービスが実行されているかどうかを確認する別の方法が必要な場合は、このセクションを使用してください。
ステータスとピアの取得
OpenNTPdの ntpctl
OpenNTPdデーモンとの通信にローカルソケットを使用します。 デフォルトは /var/run/ntpd.sock
. このチュートリアルでは、実行できる2種類のクエリについて説明します。 ntpctl
: status
と peers
.
status
ピアとセンサーのステータス、およびシステムクロックが同期されているかどうかを示します。 システムクロックが同期されると、階層が表示されます。 システムクロックが同期されていない場合、システムクロックのオフセット。 adjtime
システムコールが表示されます。 中央値制約が設定されている場合、現地時間へのオフセットが表示されます。
ntpctlを使用してステータスを表示するには:
- sudo ntpctl -s status
出力は次のようになります。
8/8 peers valid, clock synced, stratum 2
peers
は、各ピアに関する次の情報を示しています。weight(wt)、trustlevel(tl)、stratum(st)、およびピアの次の更新(次のポーリング)までの秒数。 オフセット、ネットワーク遅延、およびネットワークジッターの値はミリ秒単位です。 システムクロックがピアに同期されると、そのピアの重み列の左側にアスタリスク( * )が表示されます。
を使用してピア情報を表示するには ntpctl
:
- sudo ntpctl -s peers
次の出力は、OpenNTPdが実行され、「200.160.7.193」( pool.ntp.br から解決)として応答するストラタム1サーバーに同期され、OpenNTPdデーモンが時刻を更新するという情報を示しています。 31秒でNTP経由:
Output peer
wt tl st next poll offset delay jitter
200.160.0.8 from pool pool.ntp.br
1 10 2 8s 30s -0.005ms 44.814ms 0.023ms
200.160.7.193 from pool pool.ntp.br
* 1 10 1 26s 31s -0.012ms 44.814ms 0.027ms
200.20.186.76 from pool pool.ntp.br
1 10 1 18s 31s 0.023ms 37.481ms 0.031ms
. . .
リスニングソケット
使用できます sockstat
開いているIPv4、IPv6、およびUNIXドメインソケットを一覧表示します。 NTP over IPv4およびIPv6に関連するリスニングソケットを一覧表示するには、次の手順に従います。
- sudo sockstat -4 -6 -p 123
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
_ntp ntpd 44208 7 udp4 203.0.113.123:16987 200.160.0.8:123
_ntp ntpd 44208 8 udp4 203.0.113.123:38739 200.160.7.193:123
. . .
ネットワーク経由で時間を提供するためにOpenNTPdを実行している場合、 LOCAL ADDRESS
列には、IPアドレスの行が表示されます。 your_ipv4_address:123
、IPv4ソケットを表し、および your_ipv6_address:123
、リスニングIPv6ソケットを示しています。
インターネットへの接続
使用する nc
NTPだけでなく、多くのネットワークデーモンとそのソケット(UNIX、TCP、またはUDP)のトラブルシューティングを行います。 マンページには次のように書かれています。 telnet
、netcatスクリプトはうまく機能し、エラーメッセージを標準出力に送信するのではなく標準エラーに分離します。 telnet
いくつかで行います」。
IPv4を介してNTPサーバーまたはプールホストに到達できるかどうかを確認するには、次の手順に従います。
- sudo nc pool.ntp.br 123 -z -4 -u -v
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!
IPv6を介してNTPサーバーまたはプールホストに到達できるかどうかを確認するには、次の手順に従います。
- sudo nc pool.ntp.br 123 -z -6 -u -v
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!
ntpdateを使用する
使用する ntpdate
使用する可能性のあるいくつかのサーバーのトラブルシューティングを行います。 NTPサービスを実行しているマシンに関する情報を取得できます。 stratum
, offset
と delay
.
- sudo ntpdate -q -4 ntp.cais.rnp.br
出力は次のようになります。
Outputserver 200.144.121.33, stratum 3, offset -0.000049, delay 0.09001
1 Sep 17:28:54 ntpdate[66740]: adjust time server 200.144.121.33 offset -0.000049 sec
の機能に注意してください ntpdate
FreeBSDで利用できるようになりました ntpd
プログラム。 を参照してください -q
FreeBSDのコマンドラインオプション ntpd
マンページ、または使用 ntpq
.
警告: ntpdate
ユーティリティはまもなく廃止されます。
マニュアルページを読む
OpenNTPdの ntpd
, ntpd.conf
と ntpctl
FreeBSDのベースシステムの一部ではないため、そのマニュアルページもオペレーティングシステムのデフォルトの一部ではありません。 MANPATH
. OpenNTPdのマニュアルページを確実に読むには、次を実行する必要があります man
と -M /usr/local/man
. FreeBSDのデフォルトと混同しないでください ntpd(8)
マンページ。
- man -M /usr/local/man ntpd
同じ手順を繰り返してOpenNTPdを読み取ります ntpctl(8)
また ntpd.conf(5)
マンページ。
結論
時間は、ワークステーション、サーバー、ルーター、およびネットワークの機能にとって本質的に重要です。 同期された時間がないと、デバイス間の情報を正確に関連付けることは、不可能ではないにしても困難になります。 セキュリティに関しては、各ルーターとすべてのネットワークサーバー間でログを正常に比較できない場合、インシデントの信頼できる画像を作成するのは非常に困難です。