CentOS6 から CentOS7/8 にしたら、時刻同期ができなくなりました。
標準でインストールされる時刻同期のコマンドが CentOS6 の ntpd から、CentOS7/8 では chronyd に変更になっていますが、問い合わせに使うポート番号も変わっていて、ファイアウォールの設定で対応できていなかったためでした。
発生した問題
次のような状況でした。
CentOS6 から CentOS7/8 にしたら、時刻同期ができなくなりました。
手動で
ntpdate NTPサーバ名
のように実行したら時刻同期できるのですが、timedatectl で確認すると
NTP synchronized の行が no になっています。
正常な場合は、次のように NTP synchronized: yes となるはずです。
$ timedatectl Local time: 水 2020-12-09 21:24:35 JST Universal time: 水 2020-12-09 12:24:35 UTC RTC time: 水 2020-12-09 12:24:35 Time zone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
解決
標準でインストールされる時刻同期のコマンドが CentOS6 の ntpd から、CentOS7/8 では chronyd に変更になっていますが、問い合わせに使うポート番号も変わっていました。
新しいNTPクライアント&サーバ、chrony – Qiita
ntpdでは問い合わせに行く時のポートも123だが、chronydは問い合わせには空いている適当なポートを使うためportの設定値には影響されない
そのため、もともとファイアウォールで厳密に入力方向 UDP:123番(NTP)を許可していましたが、chronyd では 123番以外を使うため、ブロックされていました。
chronyd での時刻同期をされるように、こちらからのNTPサーバーへの時刻同期リクエストに対しての、サーバーからの応答を通す必要があります。
iptables では次のような行があればOKです。
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
コメント