← 返回信息流
AI 资讯Hacker News·59 分钟前

Telegram数据中心之谜

原标题:Mysteries of Telegram Data Centers

速览

Telegram的数据中心位置与运作方式长期不被外界所知。该公司如何在全球范围内实现高效通信与隐私保护?这些谜团引发了技术社区与安全研究者的广泛关注。

AI 深度解读

背景

Telegram 官方宣称其拥有 5 个数据中心(DC),在代码和文档中分别标记为 DC1 至 DC5。其中,DC1 和 DC3 位于美国迈阿密,DC2 和 DC4 位于荷兰阿姆斯特丹,DC5 位于新加坡。每个 Telegram 账户在注册时会被分配到一个数据中心,且该分配不会随用户手机号或地理位置变化而改变。用户无法自由选择数据中心——若连接到错误的数据中心,服务器会返回错误消息,要求客户端连接到账户对应的正确数据中心。

在中国 Telegram 用户社群中,DC5 因频繁宕机而格外知名。当 DC5 下线时,其用户无法使用 Telegram,社群中常出现“DC5 又挂了”的讨论。DC2 和 DC3 则充满谜团:虽然官方宣称有 5 个 DC,但通过某些机器人查询用户所属 DC 时,从未发现 DC2 或 DC3 的用户,这引发了诸多猜测。

核心内容

Telegram 数据中心分配规则(2022 年 5 月分析)

  • DC1、DC2、DC4、DC5 根据注册时提供的手机号国家代码分配。这 4 个 DC 随时接受新用户注册,并拥有大量现有用户。
  • DC3 曾经有用户,但大约在 2020 年,DC3 的现有用户可能被迁移到了 DC1。目前 DC3 很可能没有用户,也不再接受新注册。

换句话说,DC2 其实有大量用户,只要注册手机号的国家代码属于 DC2 的范围(例如 +49 德国),用户就会被分配到 DC2。而 DC3 虽然仍在运行,但大概率没有关联用户。

为什么机器人检测不到 DC2 用户?

一种常见的机器人通过 Telegram 的 Web CDN 判断用户所属 DC。由于 DC2 和 DC3 “借用”了同位置 DC4 和 DC1 的域名来提供 Web CDN 服务,所以该机器人会将所有 DC2 用户误判为 DC4 用户。另一种需要用户发送图片/文件的机器人则能准确识别用户 DC(类似于通过用户上传文件的存储位置来判断)。

判断用户所在 DC 的三种方法

  1. 登录法:使用会被分配到某 DC 的手机号,通过 MTProto 协议连接错误 DC 并调用 auth.sendCode 接口,服务器会返回 PHONE_MIGRATE_X 错误,指示客户端应连接到 DC X。此方法也适用于已注册账户,但需知道用户手机号,不便于查询群组成员的 DC。
  2. 头像/文件法:通过第三方客户端(如 Plus Messenger)查看用户的头像,客户端从 MTProto 协议中的 userProfilePhoto 结构的 dc_id 字段获取用户 DC(即用户上传文件存储的 DC)。这种方法能准确确定用户 DC。
  3. Web CDN 法:通过 t.me/dctest** 链接查看用户头像的 CDN 域名前缀(如 cdn4),但此方法因 DC2/DC3 借用域名而不可靠。

DC3 的消失

通过方法 2 正确判断用户 DC 后,全球范围内(尤其是海外群组)DC2 用户并不罕见,但 DC3 用户极为罕见。经过大量搜索,仅发现两名疑似 DC3 用户 @urie** 和 @flowinglig**。进一步分析发现,他们的旧图片存储在 DC3,但新图片已存储在 DC1;通过文件法检测也显示为 DC1。因此推断他们已被从 DC3 迁移到 DC1。

为确认 DC3 不再接受新用户,研究者使用方法 1(登录法)对超过 10,000 个来自全球各地的手机号进行了测试。测试中确保每个号码先连接到错误 DC,通过返回的 PHONE_MIGRATE_X 错误了解其实际 DC,同时避免生成过多垃圾短信。测试后,首先筛选出确认在 DC4 的号码,然后将剩余号码重新连接到 DC4 以确保没有遗漏分配到 DC3 的号码。最终结论:DC3 确实不再接受新用户,现有用户很可能已全部迁移至 DC1。

关于数据中心分配的具体映射

根据测试结果,不同国家代码的手机号对应的 DC 分配情况(见原文提供的图片),用户可根据此表选择特定国家代码注册以分配到期望的 DC,例如规避 DC5 的宕机风险。

关键要点

  • Telegram 宣称的 5 个数据中心中,DC1(迈阿密)、DC2(阿姆斯特丹)、DC4(阿姆斯特丹)、DC5(新加坡)正常运行并接受新用户;DC3(迈阿密)已不再接受新用户,现有用户可能已迁移至 DC1。
  • 账户的数据中心分配基于注册手机号的国家代码,不会因用户换号或地理位置改变。用户无法手动选择 DC。
  • DC5 因频繁宕机在中国社群中被广泛关注,其用户只能等待恢复。
  • DC2 和 DC3 在 Web CDN 域名上“借用”了 DC4 和 DC1 的域名,导致基于 CDN 的机器人无法识别 DC2 用户,误判为 DC4。
  • 判断用户 DC 的可靠方法:登录法(需手机号)、头像/文件法(需第三方客户端查看文件存储位置);不可靠方法:Web CDN 法。
  • DC3 曾经存在用户,但约 2020 年起被迁移至 DC1,现有大量测试证实 DC3 不再分配新用户。
  • 用户可通过选择特定国家代码的手机号注册来分配到特定 DC,从而规避 DC5 的宕机问题或测试机器人可靠性。

意义与影响

该分析揭示了 Telegram 数据中心分配机制的非公开细节,帮助用户理解为何不同手机号注册的账户体验不同(尤其是 DC5 的稳定性问题)。对于 Telegram 群组管理、机器人开发和普通用户而言,正确的 DC 判断方法有助于排查连接问题、优化 bot 功能。此外,DC3 的“消失”案例展示了 Telegram 在后台进行数据中心架构调整的可能性,尽管这些调整并未公开。由于 Telegram 服务器端机制并未开源,该文结论基于逆向分析和推测,但为社区提供了有价值的参考。

查看原文 →dev.moe