■上位のNTPサーバがIPv4を見ていれば起きない問題のようだが、直接参照する場合は注意が必要なようだ。
※通常は直接参照するだろうから、常にIPv4かIPv6かのどちらかを指定するべき。
■症状「stratum=16」で同期していない。
※以下はNICTの出力のみにしている。実際には別のntpサーバを参照しているので、同期自体に影響は無い。
$ sudo ntpq -p | head -3
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-a2.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000
■IPv6を参照しているのが原因のようだ。
$ sudo ntpq -pn | head -3
remote refid st t when poll reach delay offset jitter
==============================================================================
2001:df0:232:ee .INIT. 16 u - 64 0 0.000 0.000 0.000
■確かにNICTのIPv6アドレス
$ nslookup -type=AAAA ntp.nict.jp 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
ntp.nict.jp has AAAA address 2001:df0:232:eea0::fff3
ntp.nict.jp has AAAA address 2001:df0:232:eea0::fff4
■ntpの設定ではIPv6が無効になっている。
$ grep "\-6\|::" /etc/ntp.conf
■ntpdateでもIPv4、IPv6の両方を参照するようだ。
$ sudo /etc/init.d/ntp stop;sudo ntpdate -d ntp.nict.jp;sudo /etc/init.d/ntp start
■IPv4アドレスは以下の4つ。
$ nslookup ntp.nict.jp localhost
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: ntp.nict.jp
Address
133.243.238.243
Name: ntp.nict.jp
Address: 133.243.238.244
Name: ntp.nict.jp
Address: 133.243.238.163
Name: ntp.nict.jp
Address: 133.243.238.164
■IPv4のアドレスを直接指定した。
$ sudo ntpq -p | head -7
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-a2.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000
*ntp-a2.nict.go. .NICT. 1 u 43 64 377 7.735 1.924 0.271
-ntp-a3.nict.go. .NICT. 1 u 27 64 377 7.768 2.218 0.436
+ntp-b2.nict.go. .NICT. 1 u 35 64 377 9.998 2.125 0.471
+ntp-b3.nict.go. .NICT. 1 u 26 64 377 9.868 1.842 2.784
■以下のようになる。
$ sudo ntpq -pn | head -7
remote refid st t when poll reach delay offset jitter
==============================================================================
2001:df0:232:ee .INIT. 16 u - 64 0 0.000 0.000 0.000
*133.243.238.243 .NICT. 1 u 11 64 377 7.735 1.924 0.254
+133.243.238.244 .NICT. 1 u 59 64 377 7.768 2.218 0.436
+133.243.238.163 .NICT. 1 u 2 64 377 9.851 1.739 0.290
+133.243.238.164 .NICT. 1 u 58 64 377 9.868 1.842 2.784
■NICTのFAQにもあった。
参考:[Q.1-1] 設定方法を教えてください。
http://www2.nict.go.jp/w/w114/tsp/PubNtp/qa.htm
■「-4」が無かったからか。
$ grep "\-4" /etc/ntp.conf
server -4 ntp.nict.jp iburst dynamic
restrict -4 default kod notrap nomodify nopeer noquery
■ntpサービスを再起動して確認。
$ sudo ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
133.243.238.243 .NICT. 1 u 2 64 1 9.436 1.096 0.001
■ntpdateでも「-4」オプションが使える。
$ sudo /etc/init.d/ntp stop;sudo ntpdate -d -4 ntp.nict.jp;sudo /etc/init.d/ntp start
■上位のntpサーバがNICTのntpサーバにIPv4で参照するようになると、
設定を変更しなくても、下位が直接NICTに取りに行くのはIPv4となる。
逆にIPv6しか使わないのであれば、「-6」オプションが使える。
IPv4がデフォルトだと油断していると困ることになるかも知れない。
上位、下位に限らず、IPv4、v6の設定は正しく設定しておくべきという教訓を得た。
■システムメールも変更しておこう
$ sudo crontab -l | grep ntpd
0 0 * * * /bin/bash /usr/local/bin/ntpdcheckmail.sh
$ cat /usr/local/bin/ntpdcheckmail.sh
set -e
echo $PATH | sed s/":"/"\n"/g | grep "^/usr/sbin\$" > /dev/null 2>&1 || \
export PATH=/usr/sbin:$PATH
echo $PATH | sed s/":"/"\n"/g | grep "^/sbin\$" > /dev/null 2>&1 || \
export PATH=/sbin:$PATH
NTPLOG=/var/log/ntpmail.log
if [ `id -u` -ne "0" ];then
echo "Sorry,Not Permit User"
exit 1
fi
touch ${NTPLOG} || exit 2
echo -e "
`ntpq -p`\n
`ntpq -pn -c rv`\n
`date '+%s'` `env LANG=C date`\n
`ntptime`
" > ${NTPLOG}
cat ${NTPLOG} | mail -s "ntp report" root || exit 3
exit 0