カテゴリー
Linux

/etc/ntp.conf のお勉強♪

電波時計みたいに、正確な時刻を受信して、CentOS の時刻を合わせたいです。

どうも CentOS の時刻同期がなされておりませんようで、激しく時刻がずれておりました。NTP の設定はしたと思ったのですけれど。。。きっと誤っていると思いますので、設定ファイルのお勉強をいたしたいと思います。

ポイント

restrict と server が最大のポイントと考えて良さそうです。

  • restrict アクセス制限、セキュリティ関係
  • server 参照する NTP サーバー、タイムサーバー、時刻同期サーバー
  • fudge 指定したホスト(たいていは自分自身)のハードウェア時計を読み込む。外部の NTP サーバーを参照するなら、コメントでも OK

yum でインストール後の /etc/ntp.conf

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1 
restrict -6 ::1

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

#broadcast 192.168.1.255 key 42		# broadcast server
#broadcastclient			# broadcast client
#broadcast 224.0.1.1 key 42		# multicast server
#multicastclient 224.0.1.1		# multicast client
#manycastserver 239.255.254.254		# manycast server
#manycastclient 239.255.254.254 key 42	# manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available. 
server	127.127.1.0	# local clock
fudge	127.127.1.0 stratum 10	

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

各設定項目のお勉強をしていきます。

restrict

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1

最初の2つの restrict で外部からの問い合わせをシャットアウトしています。

そして最後の2行で、自分自身からの問い合わせには応じるよう設定しています。

それぞれの設定で2行使用しているのは、最初の行が IPv4、次の行が IPv6 です。

  • restrict ホスト → ホストの問い合わせに応答
  • restrict (何もなし) オプション = restrict -4 オプション → IPv4 での設定
    restrict -6 オプション → IPv6 での設定
  • restrict default オプション → デフォルト、初期状態の設定行
  • kod → (kiss of death)問い合わせ頻度が閾値を超えた場合、クライアントに対して中止を連絡。頻度閾値は discard コマンドで設定されているらしいが、「問い合わせ先に設定されるものでこちらからコントロールは出来ない」と考えれば良さそう。
  • nomodify → 時刻問い合わせに応じ、時刻変更応急には応じない。リクエストがあった時にどう返答するかの設定
  • notrap → NTP 内部情報を提供しない。これもリクエストへの返答の設定
  • nopeer → 相手のホストと時間を合わせる(peer)ことをしない
  • noquery → ntpq(NTP サーバーの状態を照会)と ntpd(ntpd デーモンの状態を照会)の要求を拒否する。

server と fudge

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

server	127.127.1.0	# local clock
fudge	127.127.1.0 stratum 10

最初の3行で、時刻の問い合わせ先を指定しています。

そして最後の2行は、どこからも応答がなかった場合に自分自身(127.127.1.0)の時刻を見るようになっています。「予備」の位置づけですね。

そして fudge も指定することでハードウェアの時計からも読むようにしている、らしいです。これは stratum が 10 と優先度が低い方なため、いよいよ最後の手段という位置づけかと存じます。

  • server ホスト → ホストに時刻を問い合わせる
  • fudge → 指定したホスト(たいていは自分自身)のハードウェア時計を読み込む
  • stratum → ストレータム = 階級。数字が低いほど上位で正確性が要求され、責任あるタイムサーバーとなる。

driftfile

自分自身と時刻問い合わせ先の誤差を記録する場所を指定するため、特に気にしなくて大丈夫のようです。

driftfile /var/lib/ntp/drift
  • driftfile 時刻誤差を記録するファイル指定。いじらなくて OK

keys

これは認証に係るようですが、今はそこまで厳密なことは考えません。ですのでこのままとします。

keys /etc/ntp/keys
  • keys 認証を行うときに使うキーファイルの場所。他のサーバーのために自身が NTP サーバーとならない場合はコメントでも OK

おわりに

網羅的に、詳しく、わかりやすく説明されているページが多く、大変参考になりました。ありがとうございます。

以上です。

コメントを残す