内部向けのntpdサーバの設定

## 検証環境
OS：RHEL6.10

## 概要

- 自組織の検証環境用にRHEL6.10でNTPサーバを構築
- OCNのNTPサーバと時刻同期する
- 検証環境の他のサーバとNTP動機をする

## まずは手動で時刻設定

### ntpdateコマンドで手動でのntpとの同期

- NTPが起動していれば停止する

```
# service ntpd stop
```


- ntpdateコマンドでNICTのntpサーバから時刻合わせを実施

```
# ntpdate -d ntp.nict.jp
10 Aug 13:18:33 ntpdate[15259]: adjust time server 133.243.238.244 offset -0.000366 sec
```

### ハードウェアクロック（マザーボード上の時計）の設定

- 現在のハードウェアクロックを表示

```
# hwclock --show
```

- ハードウェアクロックとLinuxのシステムクロックの差分を確認する

```
# hwclock --show ; date
2018年08月10日 13時20分37秒  -0.719122 秒
2018年  8月 10日 金曜日 13:20:13 JST
```

- ハードウェアクロックを現在のシステム・クロックに合わせる。

```
# hwclock --systohc
```

- 時刻差分がなくなったことを確認する

```
# hwclock --show ; date
2018年08月10日 13時21分15秒  -0.391008 秒
2018年  8月 10日 金曜日 13:21:15 JST
```

- ntpdate実行時にハードウェアクロックをシンクロさせる設定をする

```
# vim /etc/sysconfig/ntpdate
-----------
SYNC_HWCLOCK=yes
-----------
```

## 内部向けのNTPサーバの設定

### /etc/ntp.confの編集

```
# vim /etc/ntp.conf
```

- 設定項目解説

```
ignore	すべてのNTPパケットを無視	restrict <対象NTPサーバー> ignore
nomodify	時刻問い合わせに応答するが、時刻の変更要求などは無視	restrict <対象NTPサーバー> nomodify
notrust	時刻問い合わせに応答するが、自身の時刻合わせには使用しない	restrict <対象NTPサーバー> notrust
nopeer	指定ホストと相互に同期しない	restrict <対象NTPサーバー> nopeer
noquery	NTPの実装に依存する時刻問い合わせを無視	restrict <対象NTPサーバー> noquery
```

上記項目に沿って/etc/ntp.confの設定項目を記述していく↓

- 全てのNTP通信を拒否(この後ろに許可するACLを記載する)

```
restrict default ignore
restrict -6 default ignore
```

- ローカルホストからのNTP通信を許可する

```
restrict -4 127.0.0.1
restrict -6 ::1
```

- 組織内private networkセグメントからの時刻問い合わせのみに応答する

```
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.20.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.200.0 mask 255.255.255.0 nomodify notrap
```

- 上位NTPサーバへの通信を限定する

```
restrict ntp-tk01.ocn.ad.jp nomodify
restrict ntp-tk02.ocn.ad.jp nomodify
restrict ntp-os01.ocn.ad.jp nomodify
```

- 上位NTPサーバ指定

```
server ntp-tk01.ocn.ad.jp
server ntp-tk02.ocn.ad.jp
server ntp-os01.ocn.ad.jp
```

- その他の設定
```
driftfile /var/lib/ntp/drift  ### ntpdにより作成される誤差修正値ファイルの指定。
broadcastdelay　0.008 　　　　### ブロードキャストで生じる誤差を指定。
```

```
authenticate yes ### ntpdの認証システムを利用する。

keys　　　　　　/etc/ntp/keys  ### ntpdの認証システムを利用する場合のキーファイルを指定。

logfile /var/log/ntp/ntp.log ### logの出力先を指定
```



### ntpサーバの起動

- logファイルの作成、パーミッション変更

```
touch /var/log/ntp/ntp.log
chown ntp:ntp /var/log/ntp/ntp.log
```

- ntpdサービスを起動する
```
# service ntpd start
# chkconfig ntpd on
```

### NTPサーバとの同期状態の確認

```
# ntpq -p
```

```
remote	タイムサーバ名と、そのサーバがどのような立場にあるかを表示します。
refid	remote がどこから時刻を同期しているかを表します。不明の場合は 0.0.0.0 を示します。
st	サーバの階層を示す stratum 番号が表示されます。一般に、この番号が大きくなるほど、時間の信頼性が薄らいでいきます。
t	階層の種類です。( l: local, u: unicast, m: multicast, b:broadcast )
when	remote から最後にパケットを受け取ってからの時間です。
poll	ポーリング間隔を表示します。
reach	到達可能レジスタデータを８進数で示すそうです。
delay	時間の遅延見積もりをミリ秒単位で表示します。
offset	remote との時刻のずれをミリ秒単位で表示します。
jitter	remote の分散 （ばらつき） をミリ秒単位で表示するそうです。
```

- 下記の用になっていれば同期OK

```
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp-tk01.ocn.ad 210.173.160.27   3 u   92 1024  377    5.809   -0.345   1.200
*ntp-tk02.ocn.ad 210.173.160.57   3 u 1008 1024  377    6.077   -0.538   0.517
+ntp-os01.ocn.ad 210.173.160.27   3 u  726 1024  377   13.946    0.508   1.827
```


## 参考URLにさせていただいたサイト
http://linux.kororo.jp/cont/server/ntp.php