画像やリンクが無効になっている可能性もあるのでご了承下さい。
やる事も無いからネットあちこち渡り歩いてお勉強と。
最近ちょっと嵌っているのが NTP サーバー。Network Time Protocol ですわな。
1 秒の狂いも許されないサーバーでは入れて当然なけりゃなにそれってな感じ。
ぶっちの自宅サーバーは 2 台。
共に NTP サーバーである「ntpd」は動いている。
NTP としての構成はこんな感じ
the internet <--|--> LAN
NICT (ST1) <--->+----------------------+ +---------------------+
| FrontendServer (ST3) |<-+--| Backendserver (ST4) |
ISP (ST2) <--->+----------------------+ | +---------------------+
(prefer) |
| +---------------------+
+--| Windows Machine |
| +---------------------+
|
. .
. .
. .
ST というのは Stratum の略。階級を表す。
NTP サーバーには上下関係があり、これを表現するのに「ST1」や「ST2」と書く。
数値の小さい方が偉いという訳。偉いからには時差も少なく揺らぎ等も小さい。原子時計持ってたりとかもある。
今回は ISP へ優先的に繋ぐよう設定したので、ST は上記の通りになる。
LAN 内全てが外部の公開 NTP サーバーに問い合わせを出したらはっきり言って迷惑なので止めましょう。
図の様に外部参照するのは 1 台のサーバーのみ。クライアントは全て自宅サーバーを参照させる。
これでぶっちの自宅ネットワークは 4 台のマシンが 1 台のサーバーに時刻補正の問い合わせを出している。
外部に問い合わせを出すマシンはサーバーである 1 台だけである。5 台マシンがあっても外部問い合わせは 1 と。
NICT のサーバーは唯一 ST1 で一般人が使っても ok なサーバー。普通 ST1 は一般人は使えない代物。
参考 : 日本標準時プロジェクト 公開NTP
ISP はそのまんま ISP (Internet Service Provider)。契約してるプロバイダーが NTP を公開していたら
そこを使うのが一番かもしれない。サーバーまでの到達経路が短いからね。
今日はこの NICT と ISP に合わせるように設定。
設定ファイルの記述もオプションの意味も調べて書き直してみた。
# cat /etc/ntp.conf
# とりあえず問い合わせが来たら全部拒否する
restrict default ignore
# 問い合わせを許可するクライアントを自分自身と LAN 内マシンに限定
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0 nomodify noquery
# 外部の公開 NTP サーバーも参照出来るよう、アクセスを許可させる
# ntp.nict.jp (ST1)
restrict 133.243.238.163 mask 255.255.255.255 noquery nomodify notrap
restrict 133.243.238.164 mask 255.255.255.255 noquery nomodify notrap
restrict 133.243.238.243 mask 255.255.255.255 noquery nomodify notrap
restrict 133.243.238.244 mask 255.255.255.255 noquery nomodify notrap
# ISP
restrict 202.224.32.4 mask 255.255.255.255 noquery nomodify notrap
# 問い合わせる外部公開 NTP サーバーを指定しつつ問い合わせ間隔も調整。
# 設定は NICT の設定ページ通りお約束を守った物としている。
server -4 ntp.nict.jp iburst minpoll 6 maxpoll 8
server -4 ntp.nict.jp iburst minpoll 6 maxpoll 8
server -4 ntp.nict.jp iburst minpoll 6 maxpoll 8
server -4 ntp.asahi-net.or.jp prefer minpoll 6 maxpoll 10
# Drift
driftfile /var/lib/ntp/drift
プロバイダーの NTP は ST2 に位置し、NICT よりも下位だが prefer を指定することで
「出来ればこいつを使いたい」って意味になる。
prefer が無ければ NTPd は必ず上位の ST1 へ同期しに行くからね。
例え ST2 のサーバーが ST1 より精度が良くても階級には逆らわない。
事実、ST2 であるプロバイダーの NTP の方が、ST1 の NICT より到達経路の影響か精度が上。
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+ntp-b3.nict.go. .NICT. 1 u 86 128 377 9.257 0.085 0.759
+ntp-b2.nict.go. .NICT. 1 u 73 128 377 9.655 -0.059 0.777
+ntp-a3.nict.go. .NICT. 1 u 80 128 377 7.761 -0.190 0.475
*orion.asahi-net 202.224.53.11 2 u 71 128 377 3.922 -0.249 0.381
deley の項目がそれに当たる。
自宅サーバーの NTP との時差になる。単位は ms。1000 分の 1 秒な世界です (笑
という事で全て設定を行って NTP のデーモンを再起動と。
Windows マシンとかは全て Frontend に時刻補正の問い合わせを出して時間を合わせている。
FrontendServer 自体は日本標準時との誤差は 0.004 秒前後で一定。
Windows は OS の負荷によって時間が狂いまくるけどサーバーほど時間には気を付ける必要も無い。
一応 5~10 分置きに補正かけてるけどそれでも 1~2 秒狂う事も多い…。
とまぁこれ以上は書ききれない量なのでこの辺で (笑
参考
On-line Manual of “ntpd”
On-line Manual of “ntp.conf”
コメント