■うるう秒の「leap time」の監視メールについては以下で紹介した。
これはSqueezeでも変わらない。
Debian Lenny + ntp でうるう秒の監視メール
http://d.hatena.ne.jp/labunix/20120201
以下、Lennyでも同様。
■Squeezeのデフォルトインストールでのリアルタイム監視
$ sudo watch -d -n 1 'ntpq -p -c rv'
Every 1.0s: ntpq -p -c rv Sat Mar 3 18:09:28 2012
remote refid st t when poll reach delay offset jitter
==============================================================================
+ntp3.junkemailf 209.81.9.7 2 u 55 64 1 117.461 0.578 0.415
*ponderosa.piney 209.51.161.238 2 u 54 64 1 207.005 -6.733 0.881
-vega.jeffkaplan 128.4.40.12 3 u 20 64 1 228.139 2.232 0.967
+ntp1.Rescomp.Be 128.32.206.55 3 u 25 64 3 123.474 -3.612 0.683
associd=0 status=c618 leap_alarm, sync_ntp, 1 event, no_sys_peer,
version="ntpd 4.2.6p2@1.2194-o Sun Oct 17 13:35:13 UTC 2010 (1)",
processor="x86_64", system="Linux/2.6.32-5-amd64", leap=11, stratum=3,
precision=-21, rootdelay=208.470, rootdisp=231.925, refid=66.228.35.252,
reftime=d2fc5e12.9bf73f0d Sat, Mar 3 2012 18:08:34.609,
clock=d2fc5e48.74e60d00 Sat, Mar 3 2012 18:09:28.456, peer=16369, tc=6,
mintc=3, offset=0.000, frequency=0.000, sys_jitter=3.965,
clk_jitter=1.887, clk_wander=0.000
■「leap=01」が閏秒の挿入タイミング
NTP サーバーと同期がとれるまで「leap=11」
通常は「leap=00」
■「stratum=16」は最下位の為同期できない。
上位ntpサーバを参照しない、仮想マシン内で相互参照するような隔離環境で
テストを行う場合は要注意。
参考:Network Time Protocol
http://ja.wikipedia.org/wiki/Network_Time_Protocol
■うるう秒対応のNICTにntpサーバ参照を変更した場合
$ sudo watch -d -n 1 'ntpq -p -c rv'
Every 1.0s: ntpq -p -c rv Sat Mar 3 18:11:08 2012
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp-a2.nict.go. .NICT. 1 u 1 64 1 8.130 3.203 0.394
associd=0 status=0614 leap_none, sync_ntp, 1 event, freq_mode,
version="ntpd 4.2.6p2@1.2194-o Sun Oct 17 13:35:13 UTC 2010 (1)",
processor="x86_64", system="Linux/2.6.32-5-amd64", leap=00, stratum=2,
precision=-21, rootdelay=8.130, rootdisp=941.134, refid=133.243.238.243,
reftime=d2fc5eab.c888be89 Sat, Mar 3 2012 18:11:07.783,
clock=d2fc5eac.fb910cf7 Sat, Mar 3 2012 18:11:08.982, peer=62597, tc=6,
mintc=3, offset=3.203, frequency=0.021, sys_jitter=0.394,
clk_jitter=1.133, clk_wander=0.008
■うるう秒対応のシステムかどうかの確認
ntpd 4.2.6p2(ntpd version 4以上)なので、「うるう秒考慮なし」が正しい。
参考:NTP うるう秒(閏秒)
http://www.bsddiary.net/doc/ntpd-leapseconds.html
$ UNIXTIME=`perl -e 'use POSIX; printf("%d\n", mktime(0, 0, 9, 1, 0, 106));'`; \
if [ ${UNIXTIME} == "1136073600" ];then \
echo "うるう秒考慮なし" ; \
elif [ ${UNIXTIME} == "1136073623" ];then \
echo "うるう秒考慮あり"; \
fi
うるう秒考慮なし
■基本は「123/UDP」
「ICMP TYPE13、14」は使われないはず。
参照:Appendix C. ICMPタイプ
http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/icmptypes.html
■以下のiptablesの設定を行い、今のところ通信は無い。
$ iptables -A INPUT -p icmp --icmp-type 13 -j LOG \
--log-prefix "Timestamp request " --log-level=info
$ iptables -A OUTINPUT -p icmp --icmp-type 13 -j LOG \
--log-prefix "Timestamp request " --log-level=info
■tcpdumpでの確認
$ sudo tcpdump -X -nvvv icmp
$ sudo tcpdump -X -nvvv udp port 123 | grep Timestamp
Reference Timestamp: 3539757033.003584424 (2012/03/03 18:50:33)
Originator Timestamp: 3539757642.054388366 (2012/03/03 19:00:42)
Receive Timestamp: 3539757642.146760582 (2012/03/03 19:00:42)
Transmit Timestamp: 3539757772.995018243 (2012/03/03 19:02:52)
Originator - Receive Timestamp: +0.092372216
Originator - Transmit Timestamp: +130.940629839
■ntpのコマンド一覧
※ntpdateはクライアント用の別プログラム
$ dpkg -L ntp | grep bin | grep -v bin\$ | column
/usr/sbin/ntp-wait /usr/sbin/ntp-keygen /usr/bin/ntpq
/usr/sbin/ntpd /usr/bin/ntptrace /usr/bin/tickadj
/usr/sbin/ntptime /usr/bin/ntpdc /usr/bin/ntpsweep
■うるう秒の考慮なしのシステムなので、以下は失敗する。
また、「08:59:60」と「09:00:00」は同じUNIXTIMEを持つ。
$ date '+%s' --date "2012-07-01 08:59:60"
date: invalid date `2012-07-01 08:59:60'
$ date --date "@1341100800"
2012年 7月 1日 日曜日 09:00:00 JST
■以下は逆変換もOK。
$ date '+%s' --date "2012-07-01 08:59:59"
1341100799
$ date --date "@1341100799"
2012年 7月 1日 日曜日 08:59:59 JST
■よって、ntp同期を行ってUNIXTIMEを一秒戻す必要がある。
$ sudo apt-get install -y ntpdate
■ntpdが起動中に行うと以下のようになる。
$ date;sudo ntpdate ntp.nict.jp ;date
2012年 3月 3日 土曜日 19:43:25 JST
3 Mar 19:43:34 ntpdate[8956]: adjust time server 133.243.238.243 offset -0.003219 sec
2012年 3月 3日 土曜日 19:43:34 JST
調整幅が0.5秒未満:adjust time server
調整幅が0.5秒以上:step time server
参考:ntpdateでのメッセージ (2009/09/15)
http://www.limitation-m.com/genecialist/index.php?itemid=41
■ntpdateのデバッグモードで手動同期する
※確実な作業の為、ntpdが同期するタイミングと被らないようにする。
$ sudo /etc/init.d/ntp stop; \
date;sudo ntpdate -d ntp.nict.jp ;date; \
sudo /etc/init.d/ntp start
Stopping NTP server: ntpd.
2012年 3月 3日 土曜日 19:46:04 JST
3 Mar 19:46:04 ntpdate[9421]: ntpdate 4.2.6p2@1.2194-o Sun Oct 17 13:35:14 UTC 2010 (1)
transmit(133.243.238.163)
receive(133.243.238.163)
〜省略〜
transmit(133.243.238.243)
transmit(133.243.238.244)
server 133.243.238.163, port 123
stratum 1, precision -20, leap 00, trust 000
refid [NICT], delay 0.03528, dispersion 0.00018
transmitted 4, in filter 4
reference time: d2fc74f2.00000000 Sat, Mar 3 2012 19:46:10.000
originate timestamp: d2fc74f2.48276b05 Sat, Mar 3 2012 19:46:10.281
transmit timestamp: d2fc74f2.46e7ea9b Sat, Mar 3 2012 19:46:10.276
filter delay: 0.03773 0.03563 0.03561 0.03528
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000163 0.000250 0.000304 0.000044
0.000000 0.000000 0.000000 0.000000
delay 0.03528, dispersion 0.00018
offset 0.000044
server 133.243.238.164, port 123
stratum 1, precision -20, leap 00, trust 000
refid [NICT], delay 0.03555, dispersion 0.00020
transmitted 4, in filter 4
reference time: d2fc74f2.00000000 Sat, Mar 3 2012 19:46:10.000
originate timestamp: d2fc74f2.7b7d7b29 Sat, Mar 3 2012 19:46:10.482
transmit timestamp: d2fc74f2.7a17ab35 Sat, Mar 3 2012 19:46:10.476
filter delay: 0.03780 0.03586 0.03586 0.03555
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000223 0.000200 0.000262 0.000490
0.000000 0.000000 0.000000 0.000000
delay 0.03555, dispersion 0.00020
offset 0.000490
server 133.243.238.243, port 123
stratum 1, precision -20, leap 00, trust 000
refid [NICT], delay 0.03407, dispersion 0.00027
transmitted 4, in filter 4
reference time: d2fc74f2.00000000 Sat, Mar 3 2012 19:46:10.000
originate timestamp: d2fc74f2.ae55ad40 Sat, Mar 3 2012 19:46:10.680
transmit timestamp: d2fc74f2.ad48a65d Sat, Mar 3 2012 19:46:10.676
filter delay: 0.03737 0.03407 0.03435 0.03458
0.00000 0.00000 0.00000 0.00000
filter offset: -0.00035 0.000182 0.000025 -0.00038
0.000000 0.000000 0.000000 0.000000
delay 0.03407, dispersion 0.00027
offset 0.000182
server 133.243.238.244, port 123
stratum 1, precision -20, leap 00, trust 000
refid [NICT], delay 0.03413, dispersion 0.00006
transmitted 4, in filter 4
reference time: d2fc74f2.00000000 Sat, Mar 3 2012 19:46:10.000
originate timestamp: d2fc74f2.e1a470ad Sat, Mar 3 2012 19:46:10.881
transmit timestamp: d2fc74f2.e07cafbe Sat, Mar 3 2012 19:46:10.876
filter delay: 0.03664 0.03430 0.03413 0.03416
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000155 0.000215 0.000317 0.000236
0.000000 0.000000 0.000000 0.000000
delay 0.03413, dispersion 0.00006
offset 0.000317
3 Mar 19:46:12 ntpdate[9421]: adjust time server 133.243.238.243 offset 0.000182 sec
2012年 3月 3日 土曜日 19:46:12 JST
Starting NTP server: ntpd.
■後は以下を注意すれば良いのではないかと思う。
・ntpで時計を合わせていないシステムが無いか確認する。
・9時前に定期作業は終わらせておく事(その時間にバックアップを走らせたらどうなるのかな。。。w)
・過去をさかのぼる処理で、「1秒」が問題にならない事を確認する。(これはうるう秒に関わらない)
・ログイン/ログアウトを含み、その時間にわざわざ作業しない。(時間をずらせば済むこと)
■Windowsの「インターネット時刻」で更新出来ることを確認。
DNSがある場合は名前で、DNSが無ければIP指定で。