ローカルサーバのntpによる時刻合わせ

LAN側に置いてあるサーバ(例えばDBサーバなど)のサーバの時刻合わせには、WAN側のサーバをntpサーバとして用意して、そのクライアントとして運用すると便利です。

設定方法は以下の通りです。

LAN側のIP範囲を192.168.1.0/24

ntpサーバ:LAN側IPアドレス:192.168.1.1

ntpクライアント:LAN側アドレス:192.168.1.2

【ntpサーバ】/etc/ntp.conf

restrict        default ignore
restrict        127.0.0.1
server          ***.***.***.***  # 一般に提供されているNTPサーバのIPアドレス
#
multicastclient
restrict        192.168.1.0 mask 255.255.255.0 nomodify notrap
server          127.127.1.0     # local clock
fudge           127.127.1.0 stratum 10
#
driftfile       /var/db/ntpd.drift  # パスはサーバによって任意
broadcastdelay  0.008

【ntpクライアント】/etc/ntp.conf

server          192.168.1.1  # ntpサーバのLAN側のIPアドレス
driftfile       /var/db/ntpd.drift  # パスはサーバによって任意
broadcastdelay  0.008

上記confファイルを編集後、サーバ側からntpdを再起動します。

[linux]

# /etc/init.d/ntpd restart

[freeBSD]

# /etc/rc.d/ntpd restart

正しく立ち上がっているか確認します。

# ntpq -p

remote           refid      st t when poll reach   delay   offset  jitter
=================================================
ntp1.sakura.ad. .INIT.          16 u    – 1024    0    0.000    0.000 4000.00
*LOCAL(0)        LOCAL(0)        10 l   42   64  377    0.000    0.000   0.001

上記のようになっていればOKです。(*LOCALが表示されている)

ntpサーバ起動後、5分後しないとクライアント側から通信が許可されないようです。

少ししたら、クライアント側ではntpdを停止し、ntpdateで時刻を取ってこれるか確認します。

# /etc/init.d/ntpd stop

# ntpdate  192.168.1.1

20 Nov 10:56:48 ntpdate[14160]: adjust time server 192.168.0.1 offset -0.004087 sec

のように表示されれば通信OKです。確認後、ntpdを起動します。

# /etc/init.d/ntpd start