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(ポーリング間隔の最大値)の値を指定して調整しよう。これらに指定できる値は下表のとおり。
設定値 | 秒数 | 概算時間 |
6 | 64 | 1分 |
7 | 128 | 2分 |
8 | 256 | 4分 |
9 | 512 | 8分 |
10 | 1024 | 17分 |
11 | 2048 | 34分 |
12 | 4096 | 1時間08分 |
13 | 8192 | 2時間16分 |
14 | 16384 | 4時間33分 |
15 | 32768 | 9時間06分 |
16 | 65536 | 18時間12分 |
17 | 131072 | 36時間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アドレス |
refid | remoteが参照している上位のntpサーバ(不明の場合は0.0.0.0) |
st | remoteの階層 サーバーが第何階層かを表している |
t | 不明 |
when | 直近に上位ntpサーバに問い合わせてからの経過時間(秒単位) -となっているものは、問い合わせをしていない。 |
poll | ポーリング間隔(秒単位) |
reach | 時刻サーバへの直近8回分の接続結果 8ビットの8進数で示している。全て成功していれば 377(2進数で11111111)となる。 |
delay | 上位ntpサーバとの通信による遅延(ミリ秒単位) |
offset | ntpサーバの時計との時間差(ミリ秒) |
jitter | 更に計算された分散値(ミリ秒) 時刻のばらつき?? |
30分くらい時間をおいてもう一度ntpq -pnを実行すると
remote | refid | st | t | when | poll | reach | delay | offset | jitter | |
* | 133.15.64.8 | .GPS. | 1 | u | 184 | 1024 | 377 | 35.892 | 11.688 | 3.531 |
130.34.11.111 | 0.0.0.0 | 16 | u | – | 128 | 0 | 0.000 | 0.000 | 4000.00 | |
+ | 130.34.48.32 | .GPS. | 1 | u | 687 | 1024 | 377 | 31.509 | 8.735 | 3.497 |
+ | 130.69.251.23 | .GPS. | 1 | u | 175 | 1024 | 377 | 27.645 | 11.384 | 3.348 |
– | 133.31.30.8 | 133.31.180.6 | 2 | u | 236 | 1024 | 377 | 28.874 | 12.866 | 4.404 |
+ | 157.16.213.52 | .GPS. | 1 | u | 183 | 1024 | 377 | 41.534 | 11.338 | 2.440 |
133.42.147.2 | 0.0.0.0 | 16 | u | – | 128 | 0 | 0.000 | 0.000 | 4000.00 | |
133.41.23.12 | 0.0.0.0 | 16 | u | – | 128 | 0 | 0.000 | 0.000 | 4000.00 | |
+ | 133.100.9.2 | .GPS. | 1 | u | 496 | 1024 | 377 | 47.585 | 8.897 | 4.624 |
+ | 133.100.11.8 | .GPS. | 1 | u | 186 | 1024 | 377 | 47.626 | 9.639 | 2.730 |
x | 133.41.4.2 | 219.124.16.101 | 3 | u | 234 | 1024 | 377 | 45.023 | 99.981 | 1.865 |
+ | 133.13.144.124 | .GPS. | 1 | u | 236 | 1024 | 377 | 63.098 | 11.171 | 3.810 |
130.87.42.34 | 0.0.0.0 | 16 | u | – | 128 | 0 | 0.000 | 0.000 | 4000.00 | |
133.40.40.133 | 0.0.0.0 | 16 | u | – | 128 | 0 | 0.000 | 0.000 | 4000.00 | |
– | 133.40.41.175 | 133.11.68.1 | 2 | u | 178 | 1024 | 377 | 59.258 | 12.601 | 6.758 |
210.173.162.106 | 0.0.0.0 | 16 | u | – | 128 | 0 | 0.000 | 0.000 | 4000.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では、
- システムの起動時に一度だけハードウェア・ クロッ クを参照してシステム・クロックを設定する
- その後はシステム・クロックがすべての基準となる時計となり、ハードウェア・クロックは使わない
だそうだ。ハードウェア・クロックを使わないってことは、
ntpでの時刻あわせはシステム・クロックに対するもので、ハードウェア・クロックは修正されない
ということらしい。そのためcrontabで、1ヶ月に1回、ハードウェア・クロックを調整する。
システム・クロックの時間でハードウェア・クロックを修正するには、
/sbin/hwclock –systohc
でよいらしい。このハードウェアクロックの変更はrootでしか行えない。
コメント