「ntpdateを定期実行してもなぜか時刻が戻る」
サーバーの時刻ずれは、認証失敗・メール配信エラー・バッチ処理の誤動作など、
様々なトラブルの原因になります。
この記事では、
ntpdate コマンドでLinuxサーバーの時刻をNTPサーバーと同期する方法を解説します。基本的な使い方から主要オプション、crontabとの組み合わせ、
現代のLinuxで推奨されるchronyへの移行方法まで、実務で必要な情報を網羅しました。
・ntpdateはNTPサーバーに接続してサーバー時刻を即時修正するコマンド(root権限必須)
・-bオプションで強制修正、-sオプションでsyslogへの記録ができる
・CentOS8以降ではntpdateが廃止。chronyctlやtimedatectlへの移行を推奨
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ntpdateコマンドとは?時刻同期の仕組み
ntpdate は、インターネット上のNTPサーバー(Network Time Protocol サーバー)に接続し、自サーバーの時刻を即座に修正するコマンドです。
サーバーの時刻がずれると、以下のような問題が発生します。
・認証の失敗:Kerberosや各種SSLは時刻のずれが一定以上あると認証エラーになる
・ログの不整合:時刻がずれると障害調査時にログの前後関係が把握できなくなる
・バッチ処理の誤動作:cronで起動するバッチ処理が正しい時刻で動かなくなる
・メール配信の問題:送受信時刻がずれてメールが迷惑メール判定される場合がある
ntpdate を定期的に実行することで、常に正確な時刻を維持できます。実行にはroot権限(またはsudo)が必要です。
ntpdateの基本的な使い方
1. NTPサーバーを指定して時刻を同期する
# 書式 # ntpdate NTPサーバー名(またはIPアドレス) # 例:日本のNTPサーバーで時刻を合わせる # ntpdate ntp.nict.go.jp 15 Mar 10:00:00 ntpdate[1234]: step time server 133.243.238.163 offset 0.123456 sec
「offset」の値がずれていた時間(秒)です。
2. 主なNTPサーバー一覧
日本国内で信頼性の高いNTPサーバーを使いましょう。・ntp.nict.go.jp:情報通信研究機構(NICT)のNTPサーバー。日本国内で最も安定
・ntp.jst.mfeed.ad.jp:日本のISPが提供する公開NTPサーバー
・0.jp.pool.ntp.org:NTPプールプロジェクトの日本向けサーバー群
主要オプションの使い方
1. -b オプション:時刻を強制的に修正する
デフォルトでは時刻のずれが大きい場合、段階的に調整されます。-b オプションを付けると即座に強制修正します。# 時刻を強制的に修正する # ntpdate -b ntp.nict.go.jp
2. -s オプション:ログをsyslogに出力する
-s オプションを付けると、ntpdateの実行結果が標準出力ではなくsyslogに記録されます。crontabで自動実行する場合は、このオプションをつけておくと管理しやすくなります。
# ログをsyslogに出力する # ntpdate -s ntp.nict.go.jp # syslogで確認する # grep ntpdate /var/log/messages Mar 15 10:00:00 server01 ntpdate[1234]: step time server 133.243.238.163 offset 0.012345 sec
3. -d オプション:デバッグモードで実行する
-d オプションは、NTPサーバーとの通信内容を詳細に表示します。実際の時刻修正は行わないため、動作確認に使えます。
# デバッグモードで確認する(時刻修正は行わない) # ntpdate -d ntp.nict.go.jp
crontabと組み合わせて定期的に時刻同期する
本番サーバーでは、ntpdateをcrontabに登録して定期実行するのが一般的な使い方です。# /etc/crontab に以下を追記する(例:毎日午前3時に実行) 0 3 * * * root /usr/sbin/ntpdate -s ntp.nict.go.jp # または crontab -e で記述する場合 0 3 * * * /usr/sbin/ntpdate -s ntp.nict.go.jp
-s オプションをつけることで、実行結果が /var/log/messages に記録されます。定期実行時はフルパス(
/usr/sbin/ntpdate)で指定するのが安全です。CentOS8以降はchronyを使う(ntpdateは廃止)
CentOS8 / RHEL8 以降ではntpdate パッケージが廃止されました。現代のLinuxでは
chrony または systemd-timesyncd を使うのが標準です。1. chronyctlで即時同期する(ntpdateの代替)
# chronyが動いているか確認する # systemctl status chronyd # 即時に時刻同期する(ntpdate相当) # chronyc makestep # 同期状態を確認する # chronyc tracking
2. timedatectlで時刻同期を有効にする
# NTP同期の状態を確認する # timedatectl status # NTP同期を有効にする # timedatectl set-ntp true
トラブルシュート
「No servers can be used, exiting」と表示される
指定したNTPサーバーに接続できない場合に出るエラーです。以下の点を確認してください。
・ファイアウォール:UDPの123番ポートがアウトバウンドで許可されているか
・NTPサーバー名:タイプミスがないか、
nslookup で名前解決できるか・ネットワーク疎通:
ping でNTPサーバーに到達できるか確認する# NTPサーバーの名前解決を確認する $ nslookup ntp.nict.go.jp # UDPポート123の疎通確認(ntpqが使える場合) # ntpq -p ntp.nict.go.jp
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| NTPサーバーで時刻を同期する | ntpdate ntp.nict.go.jp |
| 時刻を強制的に修正する | ntpdate -b ntp.nict.go.jp |
| 実行結果をsyslogに記録する | ntpdate -s ntp.nict.go.jp |
| デバッグモードで確認する(修正なし) | ntpdate -d ntp.nict.go.jp |
| crontabで定期実行する | 0 3 * * * root /usr/sbin/ntpdate -s ntp.nict.go.jp |
| chronyで即時同期する(現代のLinux) | chronyc makestep |
| NTP同期を有効にする | timedatectl set-ntp true |
サーバーの時刻管理を含めた、Linuxインフラの基礎を体系的に学びたいですか?
時刻ずれは小さいことのようで、障害に発展するケースは現場で何度も見てきました。基礎を正しく学んでおくことが大事です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:tracerouteコマンドでネットワーク経路を調査する方法|出力の見方とトラブル対処
- 前のページへ:lprコマンドで印刷ジョブを送信する方法|lpq・lprmやCUPS対応まで
- この記事の属するカテゴリ:Linuxコマンド・LinuxコマンドK-O・システム管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます