TurboLinux による NTP サーバの立ち上げ


これは、私が Linux にてサーバを立ち上げたときの記録です。
ただ、私も Linux 、Unix もさわったことがなく、今回が初めての試みとなったので、下記のインストール、設定、コマンドの説明等で事実にそぐわないところがあるかもしれません。

● コンピュータ
CPU    : 486DX2 66Mhz
MEMORY : 16MB
DISK   : 520MB

手元に空いているコンピュータがこれしかなかったため、やむなく使用してみた。

● Linuxのディストリビューション

インストール対象マシンの HDD が小さいため、 RedHatLinux 7.2 (FTP版) 、Turbolinux 6.0 (FTP版) ではインストールできなかった。
(方法はあるかもしれないが、マニュアル通りでは Xwindow をインストールしようとするため、 HDD の領域不足でインストールできなかった。)

そこで、手元にあった TurboLinux4.0 (FTP版) で試してみた。

● インストール形態

● パーティションの切り方

HDD が 520MB と小さいため、どの程度のパーティションを切ればよいかわからなかったため、TurboLinux に自動で切らせた。

シリンダ
     1- 894 /tmp/hda1/
   895-1024 /tmp/hda2swap

● カーネルのアップグレード(得に必要ないが・・・)

# turbopkg
・kernel-source-2.2.13-17.i386.rpm
・kernel-2.2.13-17.i386.rpm
・kernel-headers-2.2.13-17.i386.rpm
・kernel-ibcs-2.2.13-17.i386.rpm
・kernel-pcmcia-cs-2.2.13-17.i386.rpm

計5本でアップグレードする。

ダウンロード元: ftp://ftp.turbolinux.co.jp/pub/TurboLinux/TurboLinux/ia32/Workstation/4.0/ja/updates/RPMS/

● NTPソフトの導入

Install に使用した CD-ROM に NTP 関連のソフトウエアが入っているかと思っていたら入っていなかった。 TurboLinux のサイトを探したところ、 TurboLinux 3.0 には NTP 関連のソフトウエアが入っていたようなので、それをダウンロードして使用してみることにした。

# turbopkg
・xntp3-server-5.93-1TL.i386.rpm (サーバの機能を付加する。)
・xntp3-5.93-1TL.i386.rpm        (クライアントとして動かす。)

計2本をインストールする。

ダウンロード元

ftp://ftp.turbolinux.co.jp/pub/TurboLinux/TurboLinux/ia32/Workstation/3.0/ja/install/TurboLinux/RPMS/

TurboLinux のサイトには、上記のバージョンより新しい xntp3 があり、インストールしてみたが動作しなかった。TurboLinux 4.0 では、今回、インストールしたバージョンないと動かないことを確認済み。

● ネットワーク管理用ツールの導入(これも、得に必要ではないが・・・)

Install に使用した CD-ROM からインストールする。

# turbopkg
・tcpdump.rpm  (tcpdump :回線トレースを有効にする。)
・tracerou.rpm (traceroute:traceroute コマンドを有効にする。)
・netkit-b.rpm (netkit-base :Ping コマンドを有効にする。)
・tcp-wrap.rpm (tcp_wrappers:netkit-b を Install すると依存関係で必要。)


● NTP Server と時間合わせ

# ntpdate [NTP Server]

同期が取れると、

15 Dec 16:41:44 ntpdate[XXX]: adjust time server [NTP Server] offset -0.006573sec

と表示される.。

● ハードウエアクロックをシステムクロックに同期

Unix,Linux はハードウエア・クロックとシステム・クロックの2つを持っている。コンピュータ起動時にシステム・クロックをハードウエア・クロックに合わせているため、リブートの都度、時間が狂う。リブートする前に下記のコマンドを入力した方がよいと思われる。

# hwclock --systohc

● ntp.conf ファイルを作る。

# vi /etc/ntp.conf

server 210.173.160.27 # ntp1.jst.mfeed.ad.jp
server 210.173.160.57 # ntp2.jst.mfeed.ad.jp
server 210.173.160.87 # ntp3.jst.mfeed.ad.jp
server 133.31.180.6   # ntp.sut.ac.jp
driftfile /etc/ntp.drift

esc->:wq-->Enterで閉じる。

server 

どのサーバを時刻源にするかをIPアドレス、または、ホスト名を設定する。複数のサーバを記述し、対象となるサーバが信用できない時、精度を上げたい時などに使用する。

driftfile

コンピュータの内部クロックは一定の比率で遅れたり、早くなったりする。その傾向を計測してファイルに記憶しておく。そのファイルをここで指定する。

● ntp.drift ファイルを作る。

# vi /etc/ntp.drift

esc->:wq-->Enterで閉じる。


● ntp を起動

# /etc/rc.d/init.d/xntpd start

最初は64秒おきに同期を取り、徐々に間隔を広げていく。実測では18分程度まで間隔を広げた。その後、18分ごとに同期を取るのかと見ていると、64秒おきに変わったり128秒ごとになったり変動していた。
● 動作確認

# ntpq -p

ここで、サーバ名が表示され"st"の項目が16になっていなければOK。
サーバ名の前に"*","+","-"が表示されれば、同期が取れている。
remote           refid           st t  when poll reach  delay  offset  disp
===============================================================================
+ntp1.jst.mfeed. nttpf-isdn1.crl  2 u   246  256   377  35.90   2.263   7.13
*ntp2.jst.mfeed. nttpf-isdn0.crl  2 u   251  256   377  36.22   1.083  15.82
+ntp3.jst.mfeed. nttpf-isdn0.crl  2 u   236  256   377  37.66   3.482   7.03
-sutntp.sut.ac.j .GPS             1 u   248 1024   377  41.40  -0.414  29.28

ntpq -p の表示の意味
 Remote  : 参照しているサーバ。
 refid   : Remote-Serverが参照している同期先サーバ、GPS時刻源等。
 st      : Remote-Serverの階層(Stratum)。1が時報源。
 t       : 動作モード Unicast,Multicast,Brordcast
 when    : 最後にパケットを受信した時間
 poll    : ポーリング間隔
 reach   : 到達可能性レジスタ(8進数)
 delay   : 遅延の推定
 offset  : ずれ
 disp    : ばらつき

● 起動時に起動させるようにする。

# terboservice

にて xntpd の Run Leve に3,4,5を設定

● 問い合わせ状況を確認するには

# tcpdump port 123

Port 123番を使用してのやり取りが見える。( NTP は Port 123 UDP を使用する。)

● セキュリティの確保

NTP 専用サーバなので必要の無いサービスは終了、起動しない。

# netstat -n -l

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp        0      0 0.0.0.0:5680  0.0.0.0:*       LISTEN

[State] の欄に LISTEN になっているところはクライアントからの接続要求を受けることを示している。

Local Address の最後が Port-No を示す。

 

# fuser -n tcp [Port-No]

5680/tcp: 221
最後に表示されるのが PID 。この場合、 221 とわかる。
 

# ps p [PID]

PID TTY STAT TIME COMMAND
221   ?    S 0:00 /usr/sbin/cannaserver -syslog

cannaserver(かな漢字変換サーバ) が使用していることがわかる。
基本的に、 xntpd (Port-No:123) 以外のサービスは不要なので、 turboservice にて canna を停止し、起動時の実行を Disable にする。
同様に、jserver (Wnn4) についても行う。
ちなみに Port-No:1 は ICMP パケット、Port-No:6 は tcp パケット。


● 時間あわせの動き

内部クロックと時刻源とが大きく異なった場合には、少しずつ時間を掛けて修正する。いきなり時間を遅らせた場合などにソフトウエア、データに異常動作する可能性があるため。例えば、時刻をデータ中に持っていた場合、時間の逆転が発生する可能性がある。

どのくらいの時間をかけて行うか、どのくらいの範囲で修正するかは、<あとがき>の記述通り、長期の稼働実績が取れなかったため不明。

少しずつ時刻を合わせることで、時刻源の時間が狂ったときに、システム・クロックと driftfile の記録(どのくらい遅れる傾向、進む傾向にあるかを1時間おきに計測する。)、時刻源の時間を照らし合わせて、時刻源の時間が信用できるかどうかを検出する。


<あとがき>
ここまでで、何とか設定を完了したと思う。 Linux は初めての為、とまどいもあり、何度もインストールし直したりもした。 NTP サーバとしてのみ使用するのであれば得に深い知識は不要のように感じた。実質、仕事の合間に3日程度で立ち上げることができたが、安定稼働を始めてまもなく、構築したPCを別用途で使用することになり、泣く泣く、 HDD をフォーマットする事になってしまった。長期での稼働実績が取れなかったのが残念で仕方がない。

また、 NTP が時間を同期する時間間隔が思ってより細かく、相手側サーバに迷惑を掛けていないか心配である。必要とする精度の問題もあるとが、この間隔を長くする事が必要だと感じた。どういう間隔で同期を取りに行くかは不明である。コンピュータの時間を安定するようにしたらどうだろうか?次回、サーバを立てるときには電源は UPS (無停電電源装置) で安定させ、温度保証付きマザーボード等を使って実験してみたいと思う。(ただ、いつになるかは、まったく、予想できない。。。。)そこまでやるなら、GPS から時間を採取する機器を使った方がやすくできる可能性がある。

<注意> (2001/12/29 追加)

xntp3-5.93-1TL.i386.rpm 」には、2001年4月4日にバッファ・オーバーフローを起こす可能性があり、リモートユーザーにより root 権限を奪取される可能性があることがわかっています。 TurboLinux では、対策パッケージ(xntp3-5.93-10)を出していますが、このバージョンでの動作確認をしていません。(2006/4/17 ダウンロードサイトにリンク切れが発生しましたのでリンクを削除します)

「 tcpdump 」にも同様なセキュリティ・ホールが発見されており、今回導入した「 tcpdump 」のバージョンは確認していませんが、時期からすると、セキュリティ・ホールが存在すると思われます。TurboLinux では、対策パッケージ(tcpdump-3.6.2-1)を出していますが、このバージョンでの動作確認をしていません。

できるだけ、最新のパッケージを使用するようにした方がいいでしょう。



注意 : これは、私個人の覚え書きであり、何も保証するもではありません。自己責任でお読み下さい。
Create:2001/12/20   Last modified:2009/10/02
Copyright (c) 2001-2013 Yoshi All Rights Reserved