alfort's Blog

Linuxエンジニアのメモ

NTPによる時刻の同期を明に行う

NTP(Network Time Protocol)による時刻の同期

ノートPCでWSL(Windows Subsystem for Linux)を使っているのだがノートPCのスリープなどを契機として時刻がずれることがある。

ノートPCとか普通のPCは、ある程度の精度で時間を測ることが可能になっているが、どうしても正確な時刻とずれてしまう。 このズレを修正するための仕組みがNTPなのだが、時刻の調整を明に行いたいことがある。

こういうときどうするのかというメモ。

なぜこんな事が必要なのか

APTのようなパッケージマネージャを使う場合、時刻がずれていると以下のようにアップデートが上手くできない。 このため、前述のような時刻の調整が必要だったりする。

~ ❯❯❯ sudo apt update && sudo apt upgrade
[sudo] XXXXXX のパスワード:
取得:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
ヒット:2 http://archive.ubuntu.com/ubuntu focal InRelease
取得:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
取得:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
パッケージリストを読み込んでいます... 完了
E: Release file for http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease is not valid yet (invalid for another 2時間 7分 5秒). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease is not valid yet (invalid for another 2時間 7分 14秒). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-backports/InRelease is not valid yet (invalid for another 2時間 7分 37秒). Updates for this repository will not be applied.

じゃあどうするのかというメモ

以下のように、ntpdateコマンドを使うと、時刻の同期が可能である。 正確な時刻を測定できるサーバがいくつもあり、このサーバと時刻の同期を試みる。 今回はntp.nict.jpとの通信を試みる。

~ ❯❯❯ date
2020年  8月 29日 土曜日 21:47:20 JST
~ ❯❯❯ sudo ntpdate ntp.nict.jp                                                                                                                                               ✘ 1
[sudo] XXXXXX のパスワード:
30 Aug 01:11:55 ntpdate[4151]: step time server 133.243.238.164 offset 12235.333676 sec
~ ❯❯❯ date
2020年  8月 30日 日曜日 01:11:58 JST
~ ❯❯❯

NTPサーバと自分のPCの間での通信にも時間がかかるので、その通信のその時間のずれは少なからず存在する上に、 その分のズレを吸収するようなアルゴリズムが存在していて、「よりズレの小さな同期」を行うようにしているらしい。