macOS の時刻がずれる (time.apple.com 側の問題)

macOS の時刻がずれていたので調べていたら time.apple.com の IPv6 サーバーに問題がありそうでした。


ターミナルで time.apple.com の IPv6 サーバーを確認します。

$ dig AAAA time.apple.com
~~~(略)~~~
time.g.aaplimg.com.	456	IN	AAAA	2403:300:a0c:4000::1e2
time.g.aaplimg.com.	456	IN	AAAA	2403:300:a16:3000::1f2
~~~(略)~~~


2つのサーバーに対して sntp コマンドを実行してみます。

$ sudo sntp -sS 2403:300:a0c:4000::1e2
sntp: Exchange failed: Timeout
sntp_exchange {
        result: 6 (Timeout)
~~~(略)~~~
sntp: Clock select failed
$ sudo sntp -sS 2403:300:a16:3000::1f2
sntp: Exchange failed: Timeout
sntp_exchange {
        result: 6 (Timeout)
~~~(略)~~~
+0.003034 +/- 0.059945 2403:300:a16:3000::1f2 2403:300:a16:3000::1f2


"2403:300:a0c:4000::1e2" は何度やっても失敗します。

"2403:300:a16:3000::1f2" は成功することがあります。


IPv4 のサーバー (17.253.68.123, 17.253.68.251, 17.253.68.253) では確実に成功しています。


タイムサーバーがデフォルト (time.apple.com) でもずれる(デバイスの日時になる)ことがあります。

Mac mini, macOS 14.6

投稿日 2024/08/13 14:21

返信
スレッドに付いたマーク ⚠️ ランキングトップの返信

投稿日 2024/09/11 20:50

SEI-1 さんによる書き込み:
もしかして IPv6 側が機能していないのは Apple (日本?) も分かっていて、この措置だったりするのかな?


これに一票。


SEI-1 さんによる書き込み:
既にフィードバックとサポートには、応答しないサーバーがあると連絡済みです。サポートからは関連部署と情報共有したとの回答は頂いています。


ということはこれ以上一般ユーザにできることはなさそうです(苦情の量というより Apple 側のプライオリティという点で)。


とはいえ例えば X(Twitter)でも「time.apple.com で時刻がずれる」という話はそこそこあって少なくとも八月一日から確認できます。中にはこのスレッドを参照している人もいるようですので情報提供という点でこのスレッド(を継続すること)は意味があると思います。


なお(blog とかはともかく)SNS の個人アカウントの URL を張ることはここの利用規約に抵触する可能性があるので(張りたくても)張らない方が良いと思います。

返信: 54
並べ替え順: 
スレッドに付いたマーク ⚠️ ランキングトップの返信

2024/09/11 20:50 SEI-1 への返信

SEI-1 さんによる書き込み:
もしかして IPv6 側が機能していないのは Apple (日本?) も分かっていて、この措置だったりするのかな?


これに一票。


SEI-1 さんによる書き込み:
既にフィードバックとサポートには、応答しないサーバーがあると連絡済みです。サポートからは関連部署と情報共有したとの回答は頂いています。


ということはこれ以上一般ユーザにできることはなさそうです(苦情の量というより Apple 側のプライオリティという点で)。


とはいえ例えば X(Twitter)でも「time.apple.com で時刻がずれる」という話はそこそこあって少なくとも八月一日から確認できます。中にはこのスレッドを参照している人もいるようですので情報提供という点でこのスレッド(を継続すること)は意味があると思います。


なお(blog とかはともかく)SNS の個人アカウントの URL を張ることはここの利用規約に抵触する可能性があるので(張りたくても)張らない方が良いと思います。

返信

2024/08/15 09:11 SEI-1 への返信

ここはあなたと同じ一般ユーザが読み書きしてるだけです。

サーバが落ちてると言われてもここを読む人は何もできませんし、関係者へ連絡が行くこともありません。

Appleに連絡してください。

Apple - Support - System Status

にはtime serverはリストされてませんが、

ここにリスト表示されている以外の問題については、サポートまでお問い合わせください。

となってます。

返信

2024/09/14 17:53 SEI-1 への返信

time.apple.com に対する getaddrinfo を約1秒間隔で実行し、先頭3つの中に応答のあるサーバー(アドレス中に a16 があるもの)が幾つ含まれるかで色分けしてみた。


赤 = 0 個 : 時刻同期が確実に失敗する

黄 = 1 個 : 失敗することがそれなりにある

  ・ mac→[中継]→サーバー の通信で[中継]が経路構築している間にタイムアウトになる?

  ・[中継]に問題がないと思える状況下でエラーが出ることがある

   (いろいろと試した感触として、同一 IP サーバー群の中にハズレがあるのかな?と...)

青 = 2 個 : たぶん成功する

緑 = 3 個 : 青より確実性が高い


2024/9/13 14:00 頃から 9/14 07:00 頃まで(約17時間)

確実に失敗する時間帯が結構な頻度で現れます。(それが分かったので、サポートには連絡してあります)

IPv6 通信が有効な全員が同じ状態ではないにしろ、似たり寄ったりでしょう。


ちなみに、ntp.nict.jp など公開 NTP で全てのサーバーが応答するものは

になります。

返信

2024/08/27 22:47 SEI-1 への返信

SEI-1 さんによる書き込み:

1. > time.apple.com を参照する全ての環境で時間がズレるものではない

はい、その通りです。

IPv6 で krsel6-ntp-002.aaplimg.com から時刻が取得できる場合は、その時間が使われるでしょう。
取得できるかどうかは、Mac -> 中継 -> krsel* までに挟まっている [中継] 機器次第ではないかと思います。
ネットワーク的に遠いので...

 たぶん、このスレッドに書き込みした方々のMacでは不具合が出ていないのでしょうね。


「自動的に設定」をオフにする
2. わざと時刻を狂わせる
3. 再起動する
4. 「自動的に設定」をオンにする
5. 「タイムサーバー」をデフォルト以外にする → 正しい時刻
6. 「タイムサーバー」をデフォルトにする → 狂った時刻

となることも確認しています。

 試せば再現するかもしれませんが、せっかく調子良く動いているのに調子悪くさせる手順を試す勇気が私にはありません…。

返信

2024/09/12 21:16 SEI-1 への返信

うちでやる限り、かなりの確率で2403:300:a16:3000::1f2はうまくゆきます(一番古い記録は2024/8/15でした)。

実際、SEI-1さんのcheck_time_server.pyでも、

Server: time.apple.com

Error: timed out (2403:300:a0c:4000::1e2)

Error: timed out (2403:300:a0c:4000::1f2)

Error: timed out (17.253.68.253)

jptyo5-ntp-002.aaplimg.com:

NG - 17.253.68.253

  NG - 2403:300:a0c:4000::1f2

jptyo5-ntp-003.aaplimg.com:

  OK - 17.253.68.123

jptyo5-ntp-004.aaplimg.com:

  OK - 17.253.68.251

NG - 2403:300:a0c:4000::1e2

krsel6-ntp-001.aaplimg.com:

  OK - 2403:300:a16:3000::1f2

となります。

返信

2024/09/09 23:21 SEI-1 への返信

SEI-1 さんによる書き込み:

ページの一番下には
Apple は、提供された情報をもとに可能な解決方法を提供または推奨する場合があります。
• とあるので、内容次第では Apple 側での対応も期待したいところです。

 それはたぶん、全く返信の付かないスレッドにコミュニティスペシャリストが返信を付けたり、コミュニティマネジャーが特に必要と判断した時に返信する場合を指していると思います(記憶にあるのは、Apple Watch装着時の症状についてAppleサポートへの問い合わせを促す時と、日本語以外での質問について当該言語のサポートコミュニティを案内する時です)。

 【参考】

  app毎のバッテリー使用状況に「web… - Apple コミュニティ

  同じ様な事例の人を探しています。Wat… - Apple コミュニティ

  Connexion - Apple コミュニティ


 【その他参考】

  Apple サポートコミュニティ利用規約 - Apple コミュニティ

   ※「A. 一般」>「7.」

Apple が質問に回答する場合はありますが、本サイト上で正式なテクニカルサポートを提供することはありません。
返信

2024/08/27 21:24 三毛猫大好き への返信

> time.apple.com を参照する全ての環境で時間がズレるものではない


はい、その通りです。


IPv6 で krsel6-ntp-002.aaplimg.com から時刻が取得できる場合は、その時間が使われるでしょう。

取得できるかどうかは、Mac -> 中継 -> krsel* までに挟まっている [中継] 機器次第ではないかと思います。

ネットワーク的に遠いので...


手元では


sudo sntp -S time.apple.com


で、 jptyo* と krsel* がリトライで全て使用されても全く取得できない状況を確認しています。この場合は、デバイスの時刻しか情報がありません。これが正しくなければ時刻が狂うことになります。


  1. 「自動的に設定」をオフにする
  2. わざと時刻を狂わせる
  3. 再起動する
  4. 「自動的に設定」をオンにする
  5. 「タイムサーバー」をデフォルト以外にする → 正しい時刻
  6. 「タイムサーバー」をデフォルトにする → 狂った時刻


となることも確認しています。

返信

2024/08/28 16:23 はに への返信

その環境で timed がどういう振る舞いをするのか分からないので何とも言えませんが、timed が時刻取得するときに IPv4 に見えていたら問題ない気はします。


いわゆる「時刻のずれ」が発生するのは


time.apple.com が timed には IPv6 として常に見える環境で、時刻取得が長期間失敗する場合


に限らると考えています。話がややこしいのは


  • 「自動的に設定」がオン
  • 「タイムサーバー」が「Apple(time.apple.com.)」


なのに


time.apple.com と関係無い Mac 本体の時刻が表示される現象


でしょうか。


返信

2024/09/09 21:56 三毛猫大好き への返信

ページの一番下には

Apple は、提供された情報をもとに可能な解決方法を提供または推奨する場合があります。

とあるので、内容次第では Apple 側での対応も期待したいところです。


ソフトウェアがサーバー名から IP アドレスを取得する方法(getaddrinfo)を繰り返し実行すると変化するのですが、その変化の規則は分かりません。しかし、時刻同期が確実に失敗するタイミングが存在することが分かったので、誰もが遭遇しそうな状況は


  • 久しぶりに起動すると時刻が狂っている
    • うちの Mac は精度が月差約45秒[一日に約1.7秒ずれる]の内蔵時計のようです
    • 下記に保存された時刻から開始されることがある? (バッテリーや内蔵電池切れなど)
      • /var/db/timed/com.apple.timed.plist
  • タイムサーバーが Apple (time.apple.com.) である限りシステム設定を弄っても同期しない


でしょうか。


返信

2024/08/20 07:11 SEI-1 への返信

フィードバックにもサポートにも連絡しましたが改善されませんな。


サポートは連絡する前から分かっていることだけど、窓口担当がこちらの問題として処理を始めるから認識を覆すための作業がキツイ。やりたくないんだよな…



もう少し調べてみた。


time.apple.com として見える IP アドレス


17.253.68.123

17.253.68.125

17.253.68.251

17.253.68.253


2403:300:a0c:3000::1e2

2403:300:a0c:4000::1f2

2403:300:a16:3000::1f2


を逆引きすると


jptyo5-ntp-003.aaplimg.com 17.253.68.123 2403:300:a0c:3000::1e2

jptyo5-ntp-001.aaplimg.com 17.253.68.125 [2403:300:a0c:3000::1f2]

jptyo5-ntp-004.aaplimg.com 17.253.68.251 [2403:300:a0c:4000::1e2]

jptyo5-ntp-002.aaplimg.com 17.253.68.253 2403:300:a0c:4000::1f2

krsel6-ntp-001.aaplimg.com [17.253.114.125] 2403:300:a16:3000::1f2


として見えていた。([IP-ADDR] は time.apple.com として見えていない)


jptyo5-ntp-* (日本東京?) は IPv4 側は機能しているが IPv6 側が全滅している。同じサーバー名で IPv4 と IPv6 が割り当てられているのに IPv6 側が機能しないのはどういうことだろう?


IPv6 では IPv4 にはない krsel6-ntp-* (韓国ソウル?) を態々 DNS に追加している(DNS は地域毎に見え方が違うように細工されている)。もしかして IPv6 側が機能していないのは Apple (日本?) も分かっていて、この措置だったりするのかな?そうでなくても、この管理状況はかなり不味そうです。しかも日本地域限定かな?



NTP サーバーは NITC を使いたいところですが、負荷を増やすのは気が引けるので、据置機はプロバイダ(ISP)提示のサーバーを使うことにします。デフォルトで使えるのが一番いいのだけど…


返信

2024/08/27 15:51 SEI-1 への返信

様々なコマンドを使って確認するのは面倒臭いので python スクリプトを作りました。


check_time_server.py として保存してください。

#!/usr/bin/env python3

import argparse
import socket
import sys

CHECK = {None: '--', False: 'NG', True: 'OK'}
PORT = 123

flag_dryrun = False
flag_verbose = False
timeout_second = 1
message = print


def verbose(msg):
    return flag_verbose and message(msg)


def try_sntp(addr):
    pkt = bytearray(4*12)
    pkt[0] = (3 << 3) | 3

    ipaddr = addr[4][0]
    sock = socket.socket(family=addr[0], type=addr[1], proto=socket.IPPROTO_UDP)
    if timeout_second > 0:
        sock.settimeout(timeout_second)
    try:
        sres = sock.sendto(pkt, (ipaddr, PORT))
        rres = sock.recvfrom(64)
    except OSError as e:
        message(f'Error: {e} ({ipaddr})')
        sock.close()
        return False
    sock.close()
    return True


def check_server(hostname):
    message(f'Server: {hostname}')
    addrs = socket.getaddrinfo(hostname, PORT, proto=socket.IPPROTO_UDP)
    verbose('Address:')
    hostmap = [{}, {}]
    for addr in addrs:
        ipaddr = addr[4][0]
        try:
            sname = socket.gethostbyaddr(ipaddr)[0]
        except OSError as e:
            verbose(f'Error: gethostbyaddr("{ipaddr}"): {e}')
            sname = hostname
        verbose(f'  {ipaddr:39} : {sname}')
        success = None
        if not flag_dryrun:
            success = try_sntp(addr)
        hmap = hostmap[int(addr[0] == socket.AF_INET6)]
        if sname not in hmap:
            hmap[sname] = []
        hmap[sname].append([ipaddr, success])
    for host in sorted(set(sum((list(h.keys()) for h in hostmap), []))):
        message('\n'.join([
            f'{host}:',
            *[f'  {CHECK[check]} - {addr}' for hmap in hostmap
              for addr, check in sorted(hmap.get(host, []))]]))


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-v', '--verbose', action='store_true')
    parser.add_argument('-d', '--dryrun', action='store_true')
    parser.add_argument('-t', '--timeout', type=int, default=1)
    parser.add_argument('server', metavar='SERVER')
    args = parser.parse_args()
    flag_dryrun = args.dryrun
    flag_verbose = args.verbose
    timeout_second = args.timeout
    check_server(args.server)


次のような結果が得られるでしょう。


$ python3 check_time_server.py time.apple.com
Server: time.apple.com
Error: timed out (2403:300:a0c:4000::1f2)
Error: timed out (2403:300:a0c:3000::1e2)
Error: timed out (2403:300:a16:4000::1f2)
jptyo5-ntp-001.aaplimg.com:
  OK - 17.253.68.125
jptyo5-ntp-002.aaplimg.com:
  OK - 17.253.68.253
  NG - 2403:300:a0c:4000::1f2
jptyo5-ntp-003.aaplimg.com:
  NG - 2403:300:a0c:3000::1e2
jptyo5-ntp-004.aaplimg.com:
  OK - 17.253.68.251
krsel6-ntp-002.aaplimg.com:
  NG - 2403:300:a16:4000::1f2
$ python3 check_time_server.py time.apple.com
Server: time.apple.com
Error: timed out (2403:300:a0c:4000::1f2)
Error: timed out (2403:300:a0c:3000::1e2)
jptyo5-ntp-001.aaplimg.com:
  OK - 17.253.68.125
jptyo5-ntp-002.aaplimg.com:
  OK - 17.253.68.253
  NG - 2403:300:a0c:4000::1f2
jptyo5-ntp-003.aaplimg.com:
  NG - 2403:300:a0c:3000::1e2
jptyo5-ntp-004.aaplimg.com:
  OK - 17.253.68.251
krsel6-ntp-002.aaplimg.com:
  OK - 2403:300:a16:4000::1f2


ちなみに、 ntp.nict.jp, time.google.com , time.aws.com など公開 NTP で NG が出るのは見た事がないです。

返信

2024/08/27 21:09 SEI-1 への返信

 こんばんは。


 私の環境はmacOSのバージョンが古いのですが、time.apple.com を参照しているものの著しい時間のズレはないようです。

 著しい時間のズレがないことの確認は、下記ページにアクセスして行いました。


 JST Clock

 https://www.nict.go.jp/JST/JST5.html


 「地域標準時との差」が "0.2 秒 遅れています" の時や、"合っています" の時などありますが、著しくズレてはいないようです。

 SEI-1 さんのご指摘の件は事実なのかもしれませんが、そうだとしても、time.apple.com を参照する全ての環境で時間がズレるものではないようです。


 <確認環境>

  ・macOS Big Sur 11.7.10(20G1427)

  ・IPv4 / IPv6 共に利用可

返信

2024/08/27 21:49 SEI-1 への返信

「タイムサーバー」設定すると即座に時刻表示が変化するので、タイムアウト → リトライは実行されてないようです。

そこから time.apple.com で複数のサーバーがあるのはフェイルセーフの側面より負荷分散が主だと考えます。

すると timed は time.apple.com にあるサーバーが全て機能している事が前提ではないか?となります。


そもそも DNS から返される 3 台中 2 台が応答しない状況はどう考えても異常です。


返信

2024/08/28 09:14 三毛猫大好き への返信

たぶん、このスレッドに書き込みした方々のMacでは不具合が出ていないのでしょうね。


不具合が出ていない方も少なくないでしょう。


時刻がおかしいと気付いたら合わせますよね?一度合わせると時刻取得に失敗して狂うまでに相当な期間(何日?何ヶ月?)が必要なので、なかなか気付かないかと。


タイムサーバー krsel* から時々取得できる場合、取得できない期間がそこそこ長くても、気付く前に取得できればその時点で修正されるので不具合がないのと同じに見えます。(時々、ズレたり直ったりしている方も、このパターンでしょう)


気付いたときは5秒程狂っていました。(この Mac は mini で24時間稼働させています)


試せば再現するかもしれませんが、せっかく調子良く動いているのに調子悪くさせる手順を試す勇気が私にはありません…。


再現確認は、躊躇なく設定を弄れる方々にお任せでいいかと。


ちなみに、手順中の「再起動」はシャットダウン プロセス時に Mac(デバイス)の時刻チップ RTC への書き込みを確実にするためです。

上の手順では狂った時刻を Mac に書き込む作業ですが、時刻を合わせて「シャットダウン/再起動」で正しい時刻が Mac に書き込まれるハズです。(シャットダウンしても RTC は本体とは別枠の電源で動いています。機種によっては基板上にボタン型電池が付いてたりしますが普通は気にしませんよね。電池が切れたら時刻が狂います)

返信

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

macOS の時刻がずれる (time.apple.com 側の問題)

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。