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/12 22:21

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

投稿日 2024/08/26 23:51

様々なコマンドを使って確認するのは面倒臭いので 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 が出るのは見た事がないです。

返信: 54

2024/08/27 17:14 三毛猫大好き への返信

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


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


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


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


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


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


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


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

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

2024/09/04 16:00 三毛猫大好き への返信

ありがとうございます。


time.apple.com の日本地域固有の問題だと思うので、英語圏の方々では確認できないと思います。


確実に同期できない条件を見つけました。


ターミナルから


dig AAAA time.apple.com


を実行して


time.g.aaplimg.com.	144	IN	AAAA	2403:300:a0c:4000::1e2
time.g.aaplimg.com.	144	IN	AAAA	2403:300:a0c:4000::1f2
time.g.aaplimg.com.	144	IN	AAAA	2403:300:a16:4000::1f2  << 「a16 が最後」


となっている時です。


テクニカルな説明も出来ます(ソケット プログラミングの話になります)が、ここでは控えます。

2024/09/05 05:19 SEI-1 への返信

 こんばんは。


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

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

私だけでは何も対応されないようなので、追認できた他の人もAppleに連絡してくれると有難いかな。

 Appleサポートに問い合わせるにしろ、フィードバックを送るにしろ、的確で説得力のある指摘が一定数集まらないと対応してくれないかもしれませんね。

 SEI-1 さんレベルの指摘ができる人はそうそういないでしょうから、なかなか厳しいかもしれません。

2024/09/14 02:50 SEI-1 への返信

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

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

 すごい執念ですね。


 私の環境では時刻は今も特別ずれていませんが、もし時刻同期できなくなったとしても、他のNTPサーバを参照させれば同期できると知った時点で参照NTPサーバを変更して、残念だけど仕方ないかですませてしまいそう(半年経過する度に元に戻して状況を見たりはするかもしれませんが)。

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

iPad も通信エラーで時刻がずれている旨のメッセージを時々出してまして、 iOS ではタイムサーバーが変更できないので、 Apple のタイムサーバーは正常化してくれないと困るんですよね...


サポートからもフィードバックもしてくれと言われましたが、問題確認可能な説明文(各種ログとかで簡単に膨れる)になると送信文字数制限に引っかかります(長いのは読んでられないということでしょうけど)。制限サイズを尋ねましたがご存知なかったようです。


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

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

サポートからもフィードバックもしてくれと言われましたが、問題確認可能な説明文(各種ログとかで簡単に膨れる)になると送信文字数制限に引っかかります(長いのは読んでられないということでしょうけど)。制限サイズを尋ねましたがご存知なかったようです。

 何度もごめんなさい。

 URLの入力がOKだった気がするので、詳細としてこのスレッドのSEI-1さんの返信投稿へのURLを添えるのでも良い気がします。返信投稿右下のクリップアイコンで返信投稿のURLがコピーできます(副ボタンクリックして、「リンクをコピー」)。

2024/08/14 19:53 三毛猫大好き への返信

> せっかくなので、フィードバックを送信してみてはいかがでしょう。


この窓口がありましたか、対人窓口相手に time.apple.com の問題を説明するのが非常に困難なことを理解されての提案だと思います。ありがとうございます。活用させていただきます。

2024/08/24 04:51 SEI-1 への返信

エンタープライズネットワークで Apple 製品を使う - Apple サポート (日本)


time-ios.apple.com と time.apple.com は IP アドレス(タイム サーバー)が共通のようです。そうなると、iPhone/iPad なども IPv6 が有効だと、Wi-Fi 以外の通信ができができない場所とかで時刻が取得できないことがありそうです。

2024/08/27 05: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 22:36 SEI-1 への返信

dnsでipv6は切られたのでは?

% dig -6 time.apple.com
; <<>> DiG 9.10.6 <<>> -6 time.apple.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34771
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;time.apple.com. IN A
;; ANSWER SECTION:
time.apple.com. 998 IN CNAME time.g.aaplimg.com.
time.g.aaplimg.com. 506 IN A 17.253.68.253
time.g.aaplimg.com. 506 IN A 17.253.68.251
time.g.aaplimg.com. 506 IN A 17.253.68.125
;; Query time: 43 msec
;; SERVER: 2400:4161:6212:略:14b5#53(2400:4161:6212:略:14b5)


とdig -6としてもipv4のアドレスしか表示されません。

sntpでもエラーは表示されません。


% sudo /usr/bin/sntp -sS time.apple.com
+0.001469 +/- 0.017036 time.apple.com 17.253.68.125


* 一部編集いたしました。 Apple Inc.

2024/08/27 19:47 はに への返信

dig はコマンドの使い方が間違ってます。


$ dig AAAA time.apple.com


または


$ dig -6 AAAA time.apple.com


としてください。 自分もそうでしたが、最初は -4/-6 オプションを誤解して使うんですよね。サーバーへの問い合わせが IPv4 か IPv6 の切り替えでしかありません。


dnsでipv6は切られたのでは?

DNS の内容が更新されるまで時間がかかる場合があるので何とも言えませんが、手元では投稿した内容のエラーを今も確認できます。


Google の公開 DNS (IPv4 アドレス 8.8.8.8) を使った結果。

$ dig AAAA @8.8.8.8 time.apple.com                                                                   [~

; <<>> DiG 9.10.6 <<>> AAAA @8.8.8.8 time.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63085
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;time.apple.com.			IN	AAAA

;; ANSWER SECTION:
time.apple.com.		2044	IN	CNAME	time.g.aaplimg.com.
time.g.aaplimg.com.	279	IN	AAAA	2403:300:a0c:4000::1f2
time.g.aaplimg.com.	279	IN	AAAA	2403:300:a16:4000::1f2
time.g.aaplimg.com.	279	IN	AAAA	2403:300:a0c:3000::1e2

;; Query time: 36 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Aug 28 11:45:20 JST 2024
;; MSG SIZE  rcvd: 156

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

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

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

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

 【参考】

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

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

  Connexion - Apple コミュニティ


 【その他参考】

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

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

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

2024/09/14 15:41 SEI-1 への返信

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

iPad も通信エラーで時刻がずれている旨のメッセージを時々出してまして、 iOS ではタイムサーバーが変更できないので、 Apple のタイムサーバーは正常化してくれないと困るんですよね...

 そうでしたか。ご自身は回避法も知っていて困らないのに、何故これほどこだわるのかと不思議でした。


 ちなみに、古いiPad mini(iOS9が最終対応OS)があるのですが、0.8秒遅れていました。再起動したらずれは無くなりましたが、ちょっと怪しいですが酷くはずれていないようです。古すぎて参考になりませんね。古いと言えば、Macの方も最終対応OSがBig Surのモデルなので、このスレッドに口を挟むのは適切ではないかもしれません。

 事態が好転することを祈っております。

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

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

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