我是 Chris,我在此寫部落格。我寫部落格是為了自己,但如果你也喜歡,那會讓我很高興!

發佈於:2026-09-11 12:36:14 作者:Chris Jones

更新於:2026-10-05 20:15:16・閱讀 7 分鐘

將此行加入到你舊款 Mac 的 /etc/hosts 檔案中(執行 Leopard 系統,未在 Tiger 或 Panther 上測試),iChat 應該就能再次進行音訊和視訊通話。這假設你的路由器支援埠轉發 NAT(大多數都支援)。

請注意,如果你使用的是基於 BSD 的路由器,例如 pfSense 或 OPNsense,則需要在你的出埠 NAT 設定中啟用來源埠轉發。

我曾經是最令人討厭的那種蘋果狂熱者。在 2000 年代初期,我認為蘋果的任何東西都比市面上其他任何東西都好,無論事實是否如此。然而,在 2000 年代初期,有一個領域確實如此,那就是視訊和音訊會議。

當時消費級視訊會議的主要競爭者是微軟的 MSN Messenger、Yahoo! 的 Yahoo! Messenger,以及 AOL 的 AOL Instant Messenger (AIM)。然後,在 2003 年 6 月的蘋果全球開發者大會 (WWDC) 上,蘋果發布了 G5 處理器和 OS X 10.3 Panther,同時也宣布了「iChat AV」。

他們還發布了一款華麗、過度設計的網路攝影機,名為「iSight」。

我當時確實擁有一台 G4 筆記型電腦和一台 iSight。感覺就像生活在未來,我非常喜歡它。這篇文章是關於我如何讓早期 OS X 上的 iChat 視訊會議再次在網際網路上運作,重溫當時的樂趣。

在 2023 年初,我和我的朋友(將被稱為「Methodius」)決定試試看會發生什麼。我們試圖在 OS X Leopard 上測試一個簡單的 iChat 音訊通話。那個版本的 iChat 使用 XMPP (Jabber) 伺服器,所以我們各自在 jabb.im 上設定了一個帳戶,然後按下綠色的通話按鈕。對方響鈴了,顯示正在嘗試連線,然後……連線失敗。

是時候用 tcpdump 進行流量檢查了。幸運的是,它預裝在當時的 OS X 上,所以我不需要安裝任何額外的東西。除了封包檢查,我還透過在終端機中像這樣啟動 iChat 來以除錯模式執行它:

iChat 的除錯模式非常有幫助,而且幾乎沒有任何文件記錄,所以現在如果我需要再次查閱,它就在這裡。

在撰寫本文時,https URL 仍然有效,而且實際上包含了一些東西!

好的,沒問題。我設定了我自己的簡單網頁伺服器,自己託管了那個檔案,並更新了 OS X 的 /etc/hosts 檔案,將 configuration.apple.com 指向我選擇的 IP。執行後……仍然沒有反應。

蘋果的 SNATMAP 伺服器已不再回應。此時,我們陷入了死胡同,因為我們不知道這個 SNATMAP 伺服器是如何運作的,也不知道 iChat 如何期望與它溝通。我們學到了很多,但最終卻失敗了。

Methodius 和我決定在 2026 年夏天再次嘗試,但這次借助了一些 LLM 的協助。憑藉我們之前的網路擷取記錄,我們能夠使用 LLM 來逆向工程 iChat 的視訊會議框架,並弄清楚對 SNATMAP 伺服器的請求是什麼樣子的,以及 iChat 期望的回應是什麼。從那裡,我們能夠生成一份 SNATMAP 協定的規格檔案。

雖然我沒有能力反編譯 iChat、閱讀組合語言程式碼並加以理解,但我至少可以從 LLM 生成的規格檔案中學習如何編寫一個簡單的 UDP 伺服器。

我的職業是系統工程師和管理員。我安裝和配置伺服器,但我從未寫過自己的伺服器。結果發現,這個為 SNATMAP 設計的伺服器,成為我練習的絕佳第一個伺服器。

規格檔案和 SNATMAP 伺服器原始碼的連結在本篇文章的結尾。

由於 Methodius 有孩子,因此他的空閒時間比我少得多,我需要一種方法來獨自測試 iChat 在網際網路上的運作方式。由於我沒有兩個獨立的 ISP 連線可以玩,所以我決定在實驗室裡建構一個「網際網路」。這是透過運行兩個 NAT 路由器(OpenWrt)作為虛擬機器,在 KVM 主機(Proxmox)上運行,這些虛擬機器穿越一個充當「網際網路」的平面網路空間。然後,我將兩台 Mac 電腦透過 USB NIC 實體連接到 KVM 主機,虛擬機器路由器在 NAT 後為它們分配了各自私有 LAN 中的 IP 位址。然後在「網際網路」網路上,我在一個 Debian Linux 虛擬機器中運行了 Jabber (ejabberd)、網頁 (lighttpd) 和 SNATMAP 伺服器。

這裡透過 Proxmox 伺服器(Thinkpad 筆記型電腦)和連接到它的兩台 Mac 電腦的實體設置圖片進行了圖示說明。

有了這個,我能夠快速測試和迭代。

如果你願意,可以使用規格檔案來創建你自己的伺服器版本。原始碼是根據規格檔案手動編寫的 Python 程式碼,幾乎可以在任何可以運行 Python 3 的作業系統上運行。

如果你想自行託管,請確保你已配置好網頁伺服器來回應對 configuration.apple.com 的請求,並從路徑中提供 snatmap.txt

將 YOUR_SERVER_IP 替換為運行 SNATMAP 伺服器的伺服器的公開 IP 位址。

或者你也可以直接使用我的伺服器!我會一直運行它,供世界上剩下那 1-5 個想使用這個古老軟體進行視訊聊天的人使用。:D

在你的舊款 Mac 上運行 OS X Leopard 或 Snow Leopard(可能適用於更舊的版本,但未測試),只需將此行輸入到你的 /etc/hosts 檔案中。

然後讓你想通話的朋友也做同樣的事情。之後,用力按下綠色的通話按鈕!

是真的!你甚至可以使用相當現代的 Logitech 網路攝影機。我在 OS X Leopard 上使用 Logitech C920 進行了測試。

這是 Methodius 和我在真實的網際網路上使用 iChat AV 聊天時的螢幕截圖。

使用 NetBSD 在 2004 年的 PowerPC iBook G4 上進行 Python 遊戲開發 (pygame)。

我不知道我怎麼了。請派人來幫我。

本網站由 BSSG 生成,一個 Bash 靜態網站產生器。

讓 iChat 音訊和視訊會議復活讓 iChat 音訊和視訊會議復活讓 iChat 音訊和視訊會議復活讓 iChat 音訊和視訊會議復活讓 iChat 音訊和視訊會議復活讓 iChat 音訊和視訊會議復活