LinuxでNTPと時刻を同期させる方法


ネットワークタイムプロトコル NTP )は、ネットワークを介してコンピュータのシステムクロックを自動的に同期するためのプロトコルです。コンピュータのシステムクロックで現地時間ではなく協定世界時 UTC )を使用することができます。

Linuxのデスクトップまたはサーバーでネットワークを介してシステム時刻を同期する最も一般的な方法は、 NTP タイムサーバーからシステム時刻を設定できる ntpdate コマンドを実行することです。この場合、 ntpdate コマンドが発行されたコンピュータで ntpd デーモンを停止する必要があります。

ほとんどのLinuxシステムでは、 ntpdate コマンドはデフォルトでインストールされていません。インストールするには、下記のコマンドを実行してください。

$ sudo apt-get install ntpdate    [On Debian/Ubuntu]
$ sudo yum  install ntpdate       [On CentOS/RHEL]
$ sudo dnf install ntpdate        [On Fedora 22+]

表示されている ntpdate コマンドの例

$ sudo ntpdate 1.ro.pool.ntp.org

ファイアウォールを迂回するために、単にサーバーに照会してクロックを設定せず、特権のないポートからパケットを送信するには、以下のフラグを付けてntpdateを発行します。

$ sudo ntpdate -qu 1.ro.pool.ntp.org

自分のゾーンで利用可能な最も近い NTP サーバーと常に時間を問い合わせて同期するようにしてください。 NTPサーバープールの一覧は、次のアドレスにあります。

http://www.pool.ntp.org/en/ 

Systemd に同梱されている最新のLinuxディストリビューションでは、 timesyncd.conf ファイルで時刻を同期することもできます。ファイルを編集用に開くだけです。

$ sudo nano /etc/systemd/timesyncd.conf

下記の抜粋に示すように、 [Time] ステートメントの後に次の行を追加またはコメント解除します。

[Time]
NTP=0.ro.pool.ntp.org 1.ro.pool.ntp.org
FallbackNTP=ntp.ubuntu.com 0.arch.pool.ntp.org

ファイルを編集したら、timedatectlコマンドを発行してsystemdでNTPクライアントビルドをアクティブにします。

$ sudo timedatectl set-ntp true 
$ timedatectl status

その後、システムクロックを表示するために date command を発行します。