iChat AV は、Apple の 2003 年ワールドワイド デベロッパー コンファレンスで G5 プロセッサおよび OS X 10.3 パンサーとともに発表され、コンシューマー向け Mac に音声およびビデオ会議をもたらしました。しばしば iSight ウェブカメラと組み合わせて使用されます。このサービスは一連の手順に依存します:iChat はまず http://configuration.apple.com/configurations/macosx/ichat/1/snatmap.txt からテキスト ファイルを取得し、SNATMAP サーバーのアドレスを得て、その後 UDP でそのサーバーに問い合わせて公開 IP とポートを学び、その情報を XMPP を介して遠隔クライアントと交換し、最後にピアツーピアの RTP メディア ストリームを確立します。元の SNATMAP サーバーはもう応答せず、OS X の古い TLS ライブラリはサーバーの HTTPS リダイレクトを処理できないため、接続は最初の HTTP リクエストで失敗します。

ヴィンテージ Mac での iChat AV ビデオ入力に使用されたオリジナルの Apple iSight ウェブカメラ
Mac OS X Leopard で iChat AV とよく組み合わせてビデオ会議に使用される iSight ウェブカメラblog.pipetogrep.org

記事では、iChat AV はよく iSight ウェブカメラとともに使用されていたと述べており、ここに示されているのはビデオキャプチャを可能にしたオリジナルのハードウェアです。

iChat AV がピアツーピア メディア ストリームを確立するために使用する SNATMAP プロトコル交換の図
iChat AV が SNATMAP サーバーのアドレスを取得し、UDP メッセージを交換して外部 IP とポートを学ぶ方法を示した図blog.pipetogrep.org

記事では SNATMAP プロトコルの手順を詳しく説明しており、この図は著者が逆エンジニアリングしたリクエスト‑レスポンスのやり取りを視覚化しています。

著者は LLM の助けを借りて SNATMAP プロトコルを逆エンジニアリングし、サーバーが UDP ポート 5678 で通信し、ノンス、クライアントのローカル IP とポート(使用されない)、およびサーバーが観測した外部 IP とポートを含むシンプルな 16 バイトのリクエストとレスポンスを交換することを明らかにしました。この仕様に基づき、最小限の Python UDP サーバーを書いて SNATMAP のやり取りを実装しました。iChat がこのサーバーに到達できるように、Leopard マシンの /etc/hosts に 1 行追加し、configuration.apple.com を SNATMAP サーバーが稼働しているホストのパブリック IP にマッピングし、軽量ウェブ サーバーで期待されるパスから snatmap://YOUR_SERVER_IP:5678 を含む snatmap.txt ファイルを提供しました。

2台の OpenWrt NAT ルーターが Proxmox ホスト上の VM で動作し、サービスを提供する Debian VM も含むラボ構成
ヴィンテージ Mac間で iChat AV の音声・ビデオ通話をテストするために使用された、インターネットをシミュレートしたラボblog.pipetogrep.org

記事では、テストでは同じホスト上の 2 台の OpenWrt NAT ルーターと Debian VM を使って XMPP、ウェブ、および SNATMAP サービスを提供したと説明しており、これがこのラボの写真に示されています。

テストはインターネットをシミュレートしたラボで行われました:Proxmox ホスト上の仮想マシンとして動作する 2 台の OpenWrt NAT ルーターがそれぞれヴィンテージ Mac 用のプライベート LAN を提供し、同じホスト上の Debian VM が Jabber (ejabberd) XMPP サーバー、snatmap.txt 用のウェブ サーバー、および SNATMAP サービスを提供しました。この構成により、著者は実際のインターネット経由で 2 台の Mac間で音声およびビデオ通話を実現し、チャット セッションのスクリーンショットに示されています。このソリューションは OS X Leopard 上の最新の USB ウェブカメラ(たとえば Logitech C920)でも動作し、著者は iChat AV を使ってチャットしたい残り少数のユーザーのために SNATMAP サーバーを稼働させ続けており、サービスを復元する最も簡単な方法として /etc/hosts エントリ 185.52.176.175 configuration.apple.com を提供しています。

2台のヴィンテージ Mac間でアクティブな音声・ビデオ通話を行っている iChat AV のスクリーンショット
Leopard で復元された音声・ビデオ会議を示す実際の iChat AV セッションblog.pipetogrep.org

この画像は、記事中で述べられている、復活させた SNATMAP サービスを使って実際のインターネット上で 2 台の Mac間で音声・ビデオ通話を行ったスクリーンショットに対応します。