ntpサーバを入れる

PCにはカレンダーつきの時計が入っている。この時計の誤差が数秒であれば別に気にすることもないけれど、この時計の精度が高いものではないため、放っとくとだんだんずれてくる。そこで時計あわせのからくりを入れて、時計のずれを極力少なくしておく。


– 広告 –

 

ntpについて

ntpって??

時刻同期のからくりをntp(Network Time Protocol)と言い、
クライアントがネットワークを介してサーバに時刻を問い合わせることを目的としたプロトコル
で、

  • サーバとクライアントの間で起きる通信の遅れも考慮し
  • ネットワークの遅れに関する情報も持っている

ため、正確に時刻同期できるらしい。
ntpを使って時刻同期をするには、ntpサーバかntpクライアントのいずれかになる必要があり、それぞれ以下のように時計を修正する。

区分用途修正方法
ntpサーバ時刻あわせ以外に、自身もntpサーバとなりntpクライアントからリクエストがあれば時刻データを送る。時間のずれを少しずつ修正していく。
(直ぐに正しい時刻に合わせられるわけではない)
ntpクライアント単に時刻合わせを行う。直ぐに時刻修正が行われる。

ひとつのPC内でntpサーバとntpクライアントを同時に動かすことはできないらしい。
今回はntpサーバを入れて、LAN上の他のPCの標準時計にする。

上位のntpサーバを決める

ntpサーバ、クライアントいずれの場合も、上位の(基準となる)ntpサーバを1つ以上指定するが、ここではテストということで下表の全部のサーバを指定する。通常は地理的に近い場所にあるサーバを3つぐらい指定すればよい。 指定するサーバ数は1つでもいいけど、それがエラーなどで通信ができなくなったときの予備としていくつかのサーバを指定しておく。また、この表以外に知っているIPアドレスがあればそれも使う。(独言:大学が多いのはナゼ??)

どこにある? サーバ名 IPアドレス
東北大学 ntp.tohoku.ac.jp 130.34.11.111
ntp1.tohoku.ac.jp 130.34.11.117
ntp2.tohoku.ac.jp 130.34.48.32
東京大学 eric.nc.u-tokyo.ac.jp 130.69.251.23
東京理科大学 sutns.sut.ac.jp 133.31.30.8
豊橋技術科学大学 ntp.tut.ac.jp 133.15.64.8
大坂府立大学 eagle.center.osakafu-u.ac.jp 157.16.213.52
和歌山大学 narumi.eco.wakayama-u.ac.jp 133.42.147.2
広島大学 ns.hiroshima-u.ac.jp 133.41.23.12
福岡大学 clock.nc.fukuoka-u.ac.jp 133.100.9.2
clock.tl.fukuoka-u.ac.jp 133.100.11.8
drake.nc.fukuoka-u.ac.jp 133.41.4.2
琉球大 geo.gen.u-ryukyu.ac.jp 133.13.144.124
高エネルギー物理学研究所 gps.kek.jp 130.87.42.34
国立天文台 cesium.mtk.nao.ac.jp 133.40.40.133
gpsntp.miz.nao.ac.jp 133.40.41.175
NTTソフト研 ntp.nttsl.mfeed.ne.jp 210.173.162.106

日本国内にサーバを置くけど日本のntpサーバは使わん!!というヘソまがりな人は、http://www.eecis.udel.edu/~mills/ntp/servers.htmlからサーバを選んで。

インストール

最新版の確認とソースコードのダウンロード

http://www.ntp.org/dowlnloadとあるボタンから最新版のバージョンを確認する。2003/10/15に4.2.0がリリースされている。
ここのftpかhttpでntp-4.2.0.tar.gzをダウンロードする。
ここから先の作業はrootで行う。rootで行う作業はmake installのみでよいがユーザを切り替えるとその都度ディレクトリを移らなければならないので、最初にrootにする。

ダウンロードファイルの伸長

ダウンロードしたディレクトリに移る。
以下の操作でダウンロードしたファイルを伸長して、生成されるディレクトリに移る。

tar xzvf ntp-4.2.0.tar.gz cd ntp-4.2.0コンパイル

以下の3つのコマンドを実行する。

./configure make make install

これらはそれぞれ数分かかるのでしばし待つ。

最初の修正

ntpサーバは、時計を一発で修正してくれないので、ntpクライアントで時計を修正しておく。

ntpdate serverAddress

serverAddressは、ntpサーバの一覧から適当に選ぶ。

no server suitable for synchronization found

と表示されれば、指定したntpサーバは動いていない。別のntpサーバでやってみる。

環境設定

このサービスを立ち上げる前に、環境ファイルを設定しておく。

cd /etc

環境ファイルのバックアップをとる。

cp -p ntp.conf ntp.conf.org

ntp.confの数行を書き直す。
以下の行の先頭に「#」を入れる。

restrict default ignore restrict 127.0.0.1 server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10

以下の行を追加する。ここで上位のntpサーバのIPアドレスを指定する。(サーバ名は指定しないほうがいいのかな??)

server 133.15.64.8 minpoll 6 maxpoll 15
server 130.34.11.111 minpoll 6 maxpoll 15
server 130.34.11.117 minpoll 6 maxpoll 15
server 130.34.48.32 minpoll 6 maxpoll 15
server 130.69.251.23 minpoll 6 maxpoll 15
server 133.31.30.8 minpoll 6 maxpoll 15
server 157.16.213.52 minpoll 6 maxpoll 15
server 133.42.147.2 minpoll 6 maxpoll 15
server 133.41.23.12 minpoll 6 maxpoll 15
server 133.100.9.2 minpoll 6 maxpoll 15
server 133.100.11.8 minpoll 6 maxpoll 15
server 133.41.4.2 minpoll 6 maxpoll 15
server 133.13.144.124 minpoll 6 maxpoll 15
server 130.87.42.34 minpoll 6 maxpoll 15
server 133.40.40.133 minpoll 6 maxpoll 15
server 133.40.41.175 minpoll 6 maxpoll 15
server 210.173.162.106 minpoll 6 maxpoll 15

minpollとmaxpollについて

ntpサーバへの時刻の問い合わせはある時間間隔ごとに行われており、この問い合わせの間隔をポーリング間隔と言う。
このポーリング間隔は一定ではなく、64秒、128秒、512秒、1024秒とだんだん広がっていく。もし、精度を上げるためにポーリング間隔を小さくしたいときや、ネットワークの負荷を上げないためにポーリング間隔を大きくしたいときは、minpoll(ポーリング間隔の最小値)とmaxpoll(ポーリング間隔の最大値)の値を指定して調整しよう。これらに指定できる値は下表のとおり。

設定値秒数概算時間
6641分
71282分
82564分
95128分
10102417分
11204834分
1240961時間08分
1381922時間16分
14163844時間33分
15327689時間06分
166553618時間12分
1713107236時間24分

minpollの規定値…6
maxpollの規定値…10

テスト

立ち上げ

/etc/rc.d/init.d/ntpd start

と入れて

ntpdを起動中

と表示し、同じ行の右側に

[ OK ]

と出ればよし。

確認

立ち上げてから10分くらい経ったら、

ntpq -pn

と入れて

remote refid st t when poll reach delay offset jitter
130.34.11.111 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
130.34.48.32 .GPS. 1 u 2 64 1 34.245 -3.725 0.008
130.69.251.23 .GPS. 1 u 1 64 1 28.177 -3.718 0.008
133.31.30.8 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
157.16.213.52 .GPS. 1 u 6 64 1 43.264 -3.893 0.008
133.42.147.2 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
133.41.23.12 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
133.100.9.2 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
133.100.11.8 .GPS. 1 u 3 64 1 48.953 -5.466 0.008
133.41.4.2 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
133.13.144.124 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
130.87.42.34 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
133.40.40.133 0.0.0.0 16 u 64 0 0.000 0.000 4000.00
133.40.41.175 133.11.68.1 2 u 3 64 1 63.454 -0.111 0.008
210.173.162.106 0.0.0.0 16 u 64 0 0.000 0.000 4000.00

と出ればよし。それぞれの項目は以下の意味だそうだ。

remote環境設定で指定したIPアドレス
refidremoteが参照している上位のntpサーバ(不明の場合は0.0.0.0)
stremoteの階層 サーバーが第何階層かを表している
t不明
when直近に上位ntpサーバに問い合わせてからの経過時間(秒単位)
-となっているものは、問い合わせをしていない。
pollポーリング間隔(秒単位)
reach時刻サーバへの直近8回分の接続結果
8ビットの8進数で示している。全て成功していれば 377(2進数で11111111)となる。
delay上位ntpサーバとの通信による遅延(ミリ秒単位)
offsetntpサーバの時計との時間差(ミリ秒)
jitter更に計算された分散値(ミリ秒) 時刻のばらつき??

30分くらい時間をおいてもう一度ntpq -pnを実行すると

remoterefidsttwhenpollreachdelayoffsetjitter
*133.15.64.8.GPS.1u184102437735.89211.6883.531
130.34.11.1110.0.0.016u12800.0000.0004000.00
+130.34.48.32.GPS.1u687102437731.5098.7353.497
+130.69.251.23.GPS.1u175102437727.64511.3843.348
133.31.30.8133.31.180.62u236102437728.87412.8664.404
+157.16.213.52.GPS.1u183102437741.53411.3382.440
133.42.147.20.0.0.016u12800.0000.0004000.00
133.41.23.120.0.0.016u12800.0000.0004000.00
+133.100.9.2.GPS.1u496102437747.5858.8974.624
+133.100.11.8.GPS.1u186102437747.6269.6392.730
x133.41.4.2219.124.16.1013u234102437745.02399.9811.865
+133.13.144.124.GPS.1u236102437763.09811.1713.810
130.87.42.340.0.0.016u12800.0000.0004000.00
133.40.40.1330.0.0.016u12800.0000.0004000.00
133.40.41.175133.11.68.12u178102437759.25812.6016.758
210.173.162.1060.0.0.016u12800.0000.0004000.00

先頭の印の意味は以下の通り。

記号意味
*参照同期中のサーバー
+クロック誤り検査に合格したサーバー
#参照同期中だが距離が遠いサーバー
(spc)参照していないサーバー
クラスタリング検査で捨てられたサーバー
x現在,クロック誤り検査で不合格になったサーバー
.参照リストからはずされたサーバー

半日くらいしてからもう一度ntpq -pnをやり、*と+以外のサーバーはntp.confから消す。ntp.confを編集したら、

/etc/rc.d/init.d/ntpd stop
/etc/rc.d/init.d/ntpd start

として設定内容を反映させる。

自動起動

chkconfig –level 345 ntpd on

これでOSの再起動時にntpサーバが立ち上がる。

2つの時計??

これはつい最近知ったことなんだけど、Linuxを動かしていると2つの時計が動いている。(ほかのOSはどうなんだろ??)

種類どんなの?
ハードウェア・クロックハードウェア・ クロックの基本的な役割は、システムが動いていない間にも時計を動かしつづけることである。
1日の仕事を終えてPCの電源を落として、次の日に立ち上げても日付がずれないのはこの時計があるからである。

この時計は一般にはハードウェア・クロック、リアルタイム・クロッ ク、RTC、BIOS クロック、CMOS クロックなどと呼ばれる。
Linuxでは(他の名前は不正確だったり誤解のもとになるため)「ハードウェア・クロック(Hardware Clock)」と呼んでいる。
システム・クロックLinuxカーネルにある時計で、Linuxが起動している間しか動かない。このシステム時刻は

UTC 1970/01/01 00:00:00

からの経過秒数で、この値は整数ではなく仮想的に無限大の精度を持っている。

Linuxでは、

  1. システムの起動時に一度だけハードウェア・ クロッ クを参照してシステム・クロックを設定する
  2. その後はシステム・クロックがすべての基準となる時計となり、ハードウェア・クロックは使わない

だそうだ。ハードウェア・クロックを使わないってことは、
ntpでの時刻あわせはシステム・クロックに対するもので、ハードウェア・クロックは修正されない
ということらしい。そのためcrontabで、1ヶ月に1回、ハードウェア・クロックを調整する。
システム・クロックの時間でハードウェア・クロックを修正するには、

/sbin/hwclock –systohc

でよいらしい。このハードウェアクロックの変更はrootでしか行えない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です