電波時計みたいに、正確な時刻を受信して、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
おわりに
網羅的に、詳しく、わかりやすく説明されているページが多く、大変参考になりました。ありがとうございます。
- コラム【Linux道場 ネットワーク編】第5回 – NTP(network time protocol)について
LPI のページということもあり、基礎から詳細に説明があります。素晴らしい♪ - Stray Penguin – Linux Memo (ntpd)
fudge の説明の仕方はどこのページも一致しなかったのですが、ここが一番調べているように感じました。ntpd がどのように時刻を合わせていくかを詳細に説明されています。素晴らしい♪ - ntpdの構築に必要なファイル(WBEL3,CentOS3) お便利サーバー.com
設定ファイル ntp.conf を具体的にわかりやすく説明されています。素晴らしい♪ - NTPサーバーによる時刻同期 – コロのLinuxサーバー構築 – BEGINNING
cron との連携やシステムクロックの設定など幅広く説明されています。素晴らしい♪
以上です。