Telegram 五座資料中心之謎
Telegram 對外有 DC1~DC5 五個 Data Center,但這篇 2022 年的實測發現,帳號所屬 DC、檔案存放 DC 與 Web CDN 顯示的節點不一定相同。作者透過 MTProto 的登入錯誤、個人照片欄位和 CDN 網域交叉比對,確認 DC2 並未消失,只是常被查詢機器人誤判;真正近乎退場的是 DC3,其舊帳號與新檔案可能已遷往 DC1。
現實應用
這對 Telegram Client、Bot、監控服務及跨區網路研究比較有用。開發者可以判斷登入失敗究竟是帳號被分配到其他 DC,還是服務真的中斷;維運人員也能避免把 CDN 節點當成帳號主 DC。一般使用者無法直接選擇 DC,但註冊電話的國碼在當時會影響初始分配,因此連線品質與故障範圍可能因帳號而異。
期望評估
我認為低標收穫,是知道「查到 cdn4 不等於帳號就在 DC4」,別再完全相信只讀網頁頭像網址的 Bot。高標來看,若持續蒐集不同國碼的 PHONE_MIGRATE_X 回應、檔案位置與故障紀錄,有機會建立更可靠的 Telegram 區域監控;不過伺服器端規則沒有完全公開,這只能推測行為,不能當成永久規格。
商業策略分析
受影響最大的,是第三方 Telegram Client、DC 查詢 Bot、企業訊息監控與代理連線服務。誤判 DC 會讓故障歸因、路由優化及服務承諾一起失真。我猜值得跟進的不是做一個「你在哪座 DC」的娛樂工具,而是把登入 DC、媒體儲存與 CDN 分開觀測。對大型營運團隊有價值;對普通 Bot 專案則不必投入太多,因為 Telegram 隨時可能調整內部配置。
實作細節
最準確的方法,是連到非目標 DC 後呼叫 auth.sendCode,從 PHONE_MIGRATE_2 之類的錯誤判斷正確節點,但需要電話號碼。第二種方法是讀取 userProfilePhoto 的 dc_id,或用 photos.getUserPhotos 檢查媒體位置;缺點是舊照片可能仍留在舊 DC。Web CDN 方法最方便,卻會因 DC2、DC3共用其他節點的 CDN 網域而誤判。本文結論是 2022 年觀測結果,不代表目前配置。