どうやら今まで正しい設定方法を理解できていなかったようだったので、以下に整理した内容を記載する。
ntpdの推奨設定例
/etc/ntp.confを設定すれば良いのだが、基本構造は以下の通りと考えれば良い。
#################################
# 設定条件
# 上位NTPサーバ:100.100.2.5
# 参照許可NW:192.168.100.0/24
#################################
driftfile /var/lib/ntp/drift
# restrictは上から順に評価されるため、最初に全て拒否ルールを設定
restrict default ignore
restrict -6 default ignore
# localhostを許可
restrict 127.0.0.1
restrict -6 ::1
# 同期先を許可
restrict 100.100.2.5 kod nomodify notrap nopeer noquery
# 参照を許可するNW
restrict 192.168.100.0 mask 255.255.255.0 kod nomodify notrap nopeer noquery
# 同期先
server 100.100.2.5 iburst
# 同期先が無い場合、自身のクロックを参照する設定
#server 127.127.1.0 # local clock
#fudge 127.127.1.0 stratum 10
設定の詳細説明
上から順に見ていこう。driftfile /var/lib/ntp/driftdriftfileは時刻のずれを記憶するファイルで、ntpdが時刻を合わせる際の内部時計とのずれの傾向を記録する。これによって、ntpdが上位サーバーと通信ができず時刻同期ができなくなったとしても履歴の情報から誤差の修正を行い、潜在的な時刻のずれの影響を抑止する。
# restrictは上から順に評価されるため、最初に全て拒否ルールを設定
restrict default ignore
restrict -6 default ignore
restrictは「制限」という意味のオプションでアクセス制限の設定を行うオプションとなる。"default ignore"はデフォルトで全てを拒否するオプション。セキュリティの観点から言えば、まずデフォルト拒否のルールを入れて、必要なものは都度許可ルールを入れる方が良い。
少しわかりづらいのが、noqueryのオプションで、一見するとquery(問い合わせ)をnoするオプションなので、時刻同期を拒否するように見えるが、実際はntpqやntpdcからのクエリーに対して拒否するオプションであり、時刻同期には影響しない(man ntp_accの説明で確認できる)。
# localhostを許可まず上2つのlocalhostを全て許可するルールは、決まり文句として設定する必要があるようだ。他に設定する許可ルールとしては、①同期先のIPアドレス、②参照を許可するIPアドレス(またはネットワークアドレス)を設定すれば良い。restrict文のオプションに色々付いているが、これは決まり文句として書いておけば良い。
restrict 127.0.0.1
restrict -6 ::1
# 同期先を許可
restrict 100.100.2.5 kod nomodify notrap nopeer noquery
# 参照を許可するNW
restrict 192.168.100.0 mask 255.255.255.0 kod nomodify notrap nopeer noquery
少しわかりづらいのが、noqueryのオプションで、一見するとquery(問い合わせ)をnoするオプションなので、時刻同期を拒否するように見えるが、実際はntpqやntpdcからのクエリーに対して拒否するオプションであり、時刻同期には影響しない(man ntp_accの説明で確認できる)。
# 同期先同期先の上位サーバーを記載する。ホスト名でも大丈夫だが、名前解決のオーバーヘッドを減らす意味でIPアドレス指定の方が良いかもしれない。"iburst"オプションは、ntpd起動時の初回同期のポーリング間隔をデフォルトの64秒よりも小さい2秒に変更する機能で、初回の同期間隔が短縮されるのでオススメ。
server 100.100.2.5 iburst
# 同期先が無い場合、自身のクロックを参照する設定これは全ての同期先との同期に失敗した場合に、自分自身のローカルクロックと同期するという設定。ただし、同期先が生きているのにローカルクロックと同期してしまう原因不明の事象が発生することがあるらしく、コメントアウトを推奨する。実際に私が検証した際も以下の通り事象が発生してしまった(LOCAL(0)の右に"*"が付いて同期されてしまっている)。
#server 127.127.1.0 # local clock
#fudge 127.127.1.0 stratum 10
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.100.100 .LOCL. 1 u 249 512 377 0.977 -4.058 5.767
192.168.100.101 192.168.1.100 2 u 461 512 377 0.308 -3.269 1.028
*LOCAL(0) .LOCL. 10 l 47 64 377 0.000 0.000 0.000
その他Tips
その他、ntpdの設定を調査する中で見つけたTips。「Temporary failure in name resolution」のエラー
ntpq -pで状況を確認すると「Temporary failure in name resolution」のエラーが発生することがある。これはhostsの設定誤りが原因で、/etc/hostsの設定内容を確認し、127.0.0.1がきちんとlocalhostで名前解決できるようになっているか確認する。ntpdのmanページ
man ntpdとやっても実はそこまで多くの細かい説明は出てこない。調べるなら以下のmanページを見ること。man ntp.conf ←iburstの説明等が記載
man ntp_acc ←ntp_acc - Access Control Optionsのことで、restrictのオプションの説明が記載
0 件のコメント:
コメントを投稿