CentOS6と同じファイアウォール設定で CentOS7/8 で時刻同期ができなくなった

ALL
スポンサーリンク

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

コメント