うるう秒とntpについて備忘録

ただの備忘録です。

#### /etc/sysconfig/ntpdの設定

（他のディストリだとsysconfigでなくてdefaultだったりする模様）

うるう秒対策でslewモードにしてる。具体的には-xオプションをsyscofigに入れて起動オプションを変えてる。

```
$ cat /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -x"
```

※-g入ってるのでsyslogというかmessagesにntpdのログは出るようです。


#### ポーリング間隔の確認など

man 5 ntp.confなどでポーリング間隔などのデフォルト値を確認。

```
-x	ntpd の動作にはふたつのモードがある。slew モードと step モードだ。slew モードでは、 1 秒あたり最大
で 0.5ms (0.0005 秒) づつ徐々に時間を合わせ、連続性を重視する。step モードでは、不連続に時間を一気に進める 
(または遅らせる)。 デフォルトでは、時間のずれが 128 ms (0.128 秒) よりも小さかった場合には slew 動作を行
い、128 ms 以上ずれた状態が 300秒以上続くと step モードに切り替わる。動作切替の閾値を ntpd では `step 
threshold'、それがどれだけ長く続いたら動作を切り替えるかの閾値を `stepout threshold' と呼ぶ。-x オプション
を指定すると、step閾値が 600 秒という非常に大きな値に変わり、 ntpd は (実質的に) 専ら slew モードで動作する
ことになる。-x オプションは一見、時間の連続性を保つという点で好ましいように思えるが、slew モードでは 10 秒の
狂いを調整するのに 20000 秒 (= 10 / 0.0005) つまり 5 時間半もかかってしまうということを頭に置いておかなくて
はならない。なお、起動時に -x オプションを与える代わりに、設定ファイルの tinker ディレクティブを使えば step
閾値と stepout閾値を任意の値に設定することもできる
```

maxpollとかは特に変えていないのでデフォルトの10で1024秒で、minpollもデフォルト6なので64秒から1024秒の間のいずれかの間隔で同期確認しに行ってるはず。（現在値は`ntpq -p`で見た時のpoll）

```
       server address [options ...]
サーバに対して時間確認を行う頻度のことを、ポールインターバル (poll interval) と呼ぶ。ポールインターバルは、
ntpd では動的に変化していく。これは、最小 (minpoll) と最大 (maxpoll) で規定され、デフォルトでは、ローカルの
時計が安定しないうちは 64 秒毎、それから次第に、128 秒、256 秒と間隔が長くなり、最終的には最大ポールインター
バルである 1024 秒 (デフォルトの場合) に落ち着く。これらふたつの値は server コマンドのオプションとして 
"minpoll num " または "maxpoll num " あるいはその両方を指定して、変更することもできる。間違えやすいのは、こ
の num が文字通りの秒数ではないという点だ。num は 2を基底とする指数、つまり 2n の n にあたるもの (ビット数と
も言える)。maxpoll のデフォルト値は 10 (1024秒) で、指定可能な最大値は 17 (約36時間25分)。minpoll のデフォ
ルトは 6 (64秒) で、指定できる最小値は 4 (16秒) となっている。例では maxpoll を 30分くらいにしたいと思い、
num を 11 (約34分) に設定している。また、minpoll を 30 秒くらいにしたいなら num には 5 (32秒) を指定する。
```

#### 構成とntp.confの内容など

同ネットワークエリア内にいる2台のntpサーバをみていてその２台は同じ地域の公開ntpサーバを見に行ってる。
peerはつかっておらずserverだけ指定している。
restrictもFW的なネットワーク制限設定があるため明示的に使っていない。
時刻同期に暗号化の必要性を感じないのでもちろん認証も使っていない。

`server -4 ldap1.mng.hoge.local iburst`

-4はIPV4という意味。
iburstは起動時のみ8回通信で初回の同期速度を上げてる。
公開サーバに何回も行くのは非推奨らしいので、burstは設定していない。
ローカルエリア内もパケットが増えるのはどうかとおもってiburstにしている。
ローカルエリア内はpeerつかったほうがいいかもと思ってたがお互いがお互いを更新するってのと
動的に変化する環境なのでpeerは無理かなと思っている。

#### ログを詳細に出したり調べたりしたい

調べたらこんな↓かんじらしい。もしくは`cronでntpq -c readvar`の結果をロギングとか。

```
$ sudo vi /etc/ntp.conf
logfile /var/log/ntpd.log
logconfig =all
```

#### chronydの風のうわさ（ためしてなくて見かけただけ）

CentOS7からデフォルトの時刻同期デーモンがchronydに代わるが
slewモードがまともに動作するかどうか怪しいという問題について、
いちおうntpdで-xでslewで動くのでそれでいいのではという話でおちついているが、
CentOS7のchronydはパッケージアップデートしてからleapsecmode slewなどしておくとよい模様。
http://qiita.com/ynishimura0922/items/ab4fed24f680aa034f82

参考：
http://d.hatena.ne.jp/incarose86/20110505/1312522379
http://www.asahi-net.or.jp/~AA4T-NNGK/ntpd.html
http://kaworu.jpn.org/doc/FreeBSD/jman/man5/ntp.conf.5.php
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/s1-Configure_NTP.html
http://qiita.com/kirksencho/items/f789af7ed6046278b9d3
http://qiita.com/ynishimura0922/items/ab4fed24f680aa034f82
http://support.ntp.org/bin/view/Servers/NTPPoolServers
http://dev.classmethod.jp/cloud/aws/clock-on-amazon-linux-and-ntp/
http://qiita.com/pitan/items/1cb3f78dd936afc6aa32
https://developers.google.com/time/guides?hl=ja
http://blog.serverworks.co.jp/tech/2016/12/24/leapsecond/
http://www.geocities.co.jp/SiliconValley-Bay/9357/ntpq.html
http://www.cisco.com/cisco/web/support/JP/100/1007/1007845_ntpassoc-j.html
https://hiroki.jp/leap-second-2015
http://luna2-linux.blogspot.jp/2015/07/201571.html