返回首页

通过 DNS 运行 Doom:无需文件启动

“Doom Over DNS” 项目允许仅通过对 Cloudflare TXT 记录的公共 DNS 查询运行 Doom 的共享版本。压缩的 WAD 被拆分成片段,加载到 PowerShell 内存中而不写入磁盘。支持断点续传并扩展到付费区域。

通过 DNS 查询无盘玩 Doom
Advertisement 728x90

## DNS 版 Doom:通过 DNS 记录运行经典射击游戏

开发者 Adam Rice 实现了在 Cloudflare 中仅通过 DNS TXT 记录运行 Doom 共享版。游戏被压缩成 1964 个片段,通过公共 DNS 查询加载,并在 PowerShell 7 中运行,而不将 WAD 文件写入磁盘。.NET 游戏引擎 DLL 被直接加载到内存。该项目通过使用 DNS 作为二进制数据的传输方式,绕过了文件存储限制。

安装和启动

要运行它,需要 PowerShell 7 和具有编辑 DNS 区域权限的 Cloudflare API 令牌。

  • 安装 PowerShell 7:winget install Microsoft.PowerShell
  • 设置 Cloudflare 凭据:使用 TXTRecords 模块和 Set-CFCredential 命令。
  • 启动游戏:\.\Start-DoomOverDNS.ps1 -PrimaryZone 'example.com'

脚本会自动通过 Resolve-DNSName 加载数据。免费 Cloudflare 区域可容纳 185 个片段;Pro/Business/Enterprise 区域最多可容纳 3400 个。WAD 文件需要约 1199 个片段。

Google AdInline article slot
# 使用多个区域的免费账户启动示例
.\Start-DoomOverDNS.ps1 -Zones @('zone1.com', 'zone2.com', 'zone3.com')

在 DNS 区域中放置数据

该项目将压缩的 WAD 分割成 TXT 记录。对于免费账户,需要多个域名——模块会自动分发片段。在 Pro 区域中,整个游戏都能容纳。

恢复下载:

  • Publish-TXTStripe -Resume 命令会检查片段哈希。
  • 从最后一个有效块继续,避免重复传输。

忽略 TXT 记录限制(RFC 1035):将 DNS 用作分布式存储,利用 Cloudflare 边缘节点的全球缓存。

Google AdInline article slot

| 区域类型 | 分片数 | 足够运行 Doom |

|-----------|-----------|-----------------|

| 免费 | 185 | 否(需要 7+ 个区域) |

Google AdInline article slot

| 专业版 | 3400 | 是(完整游戏) |

压缩和解压的技术细节

WAD 文件经过压缩以最小化 TXT 记录大小。PowerShell 脚本在执行过程中即时解压数据。没有本地存储——所有操作都在内存中进行。

TXTRecords 模块的关键组件:

  • Publish-TXTStripe:发布片段并支持恢复。
  • Set-CFCredential:设置 API 令牌。
  • Resolve-DNSName 集成,用于公共查询。

该项目展示了 DNS 在传输任意二进制数据方面的能力,绕过了典型的协议限制。

要点

  • Doom 无需磁盘文件运行:WAD 和 DLL 从 DNS TXT 加载到内存。
  • WAD 需要约 1199 个片段;免费 Cloudflare 区域仅 185 个片段。
  • 支持通过片段哈希恢复下载。
  • 使用 PowerShell 7 和公共 DNS 查询,无需自定义服务器。
  • Pro 账户可扩展:一个区域容纳完整游戏。

— Editorial Team

Advertisement 728x90

继续阅读