WEBアプリ開発 ぷちTips

WEBアプリの開発をやってます。自分が調べててなかなか見つからなかったり苦戦した内容をTips集にできたらなと思います。

Linux/CentOS NTP設定 時刻同期

時刻同期を行うため、ntpの設定を行います。

2ファイル編集します。

あとで戻せるようにオリジナルファイルは残しておきましょう。

 

1.ntp.conf設定
 $ mv -iv /etc/ntp.conf /etc/ntp.conf.org
 $ vi /etc/ntp.conf

 デフォルトの設定がごちゃごちゃ書いてあるので、バックアップとしてだけ残し、新規にconfファイルを作成します。

下記設定を入れればOK。

-------------------
restrict default ignore
restrict 127.0.0.1
restrict ntpsrv1.xxxxx.yyyy nomodify notrap
restrict ntpsrv2.xxxxx.yyyy nomodify notrap

server ntpsrv1.xxxxx.yyyy
server ntpsrv2.xxxxx.yyyy

driftfile /var/lib/ntp/drift
-------------------

〈設定詳細〉

・restrictはアクセス制限の設定です。

・ntpを設定すると誰からでも接続される可能性があるため、セキュリティ観点から全拒否の設定を1行目に入れます。

(設定は上から順に読み込まれる)

・2行目からは許可するIP/ドメインを追加していきます。

ローカルからは全許可し、あとは参照するntpサーバの情報を登録します。

また許可内容としてオプション設定が可能です。

下記くらいがわかれば良いと思われます。

ignore:全拒否します

notrust:アクセス拒否(v4.2の場合です。v4.1では問い合わせ許可の意味だったため、注意が必要。)

nomodify:相手から変更要求があった場合拒否します

notrap:メッセージトラップの拒否

※どうやら同一LAN内ではない、上位のntpサーバであれば登録しなくてもserverの設定だけで良いらしいです。

 私は設定してしまいましたが、、

・serverでは時刻同期するntpサーバを指定します。

複数台(3台以上推奨)指定して下さい。

・ntpした時の時差情報を書き込むファイルを指定します。

ここはデフォルト値で良いと思います。

ドメイン指定する場合はhostsファイルへの追加かDNS設定が必要です。(DNSの話は別記事に記載します。)

 

2.ntpdの設定

$ cp -ipv /etc/sysconfig/ntpd /etc/sysconfig/ntpd.org
$ vi /etc/sysconfig/ntpd

特に設定しなくてももう使えますが、このままだと時刻同期した際に一気に時差を解消してしまうため、サーバ上で動くアプリ、プロセスに悪影響を与える可能性があります。

そのため徐々に同期していく設定としてslewモードにした方が良いようです。(最大 秒間0.5msずつ)

solarisの場合は本ファイルがなく、ntp.confに設定を行います。

-------------------

1)オプションに-xをつける(slewモード)

 オプションをつけなくても128msの差までならslewモードになるが、つけると600秒の差までslewモードになります
2)さらに-gを足すとオフセットが非常に大きくても同期をおこなってくれる

 ※-gはデフォルトでついてます。設定しないと1000秒以内の差の場合だけ自動同期します。それ以上の場合はしてくれなくなります。

-------------------

 

3.ntpdの起動、状況確認

$ /etc/init.d/ntpd start

$ ntpq -p

ntpqコマンドで同期の状態が表示されます。

ntpd起動後しばらくしないと同期されません。

同期されるとドメインの頭に*が付加されます。

offset欄が時差分をmsで表示してます。

 

これで設定完了です。

あとはchkconfigでaddしてあげればサーバ再起動しても自動的に起動します。