AI 요약
이 프로젝트는 DNS(도메인 네임 시스템)의 TXT 레코드가 임의의 텍스트를 저장할 수 있다는 특성을 이용해, Cloudflare의 글로벌 네트워크를 무료 파일 저장소처럼 활용하여 게임 '둠(DOOM)'을 구동하는 기술적 실험입니다. RFC 1035 표준을 기반으로 설계된 DNS를 본래 용도인 주소 해석이 아닌 분산 데이터 저장소로 재해석한 것이 핵심입니다. 전체 쉐어웨어 둠 데이터를 압축한 뒤 약 1,964개의 DNS TXT 레코드로 쪼개어 Cloudflare 존에 업로드하며, 사용자는 PowerShell 7 스크립트를 실행해 실시간으로 데이터를 불러옵니다. 특히 게임의 핵심 데이터인 WAD 파일이 로컬 디스크에 전혀 저장되지 않고, .NET 8.0 기반의 게임 엔진 DLL이 메모리에 직접 로드되어 실행된다는 점에서 '디스크리스(Diskless)' 구동의 극치를 보여줍니다.
핵심 인사이트
- DNS의 저장소 활용: RFC 1035 표준의 TXT 레코드를 활용하여 쉐어웨어 둠 전체 데이터를 약 1,964개의 데이터 청크로 분할 및 저장함.
- 디스크리스 아키텍처: WAD 파일은 디스크에 쓰여지지 않으며, .NET 게임 엔진 DLL은 메모리에 직접 로드되어 보안 및 성능상의 특이점을 가짐.
- Cloudflare 제약 극복: 무료 티어 존의 185개 레코드 제한을 해결하기 위해 여러 도메인에 데이터를 분산하는 '멀티 존 스트라이핑' 기법을 도입함 (유료 티어는 존당 3,400개 지원).
- 현대적 스택 활용: PowerShell 7의
Resolve-DNSName명령어와 .NET 8.0 프레임워크를 사용하여 별도의 복잡한 설치 과정 없이Start-DoomOverDNS.ps1실행만으로 게임 구동이 가능함.
주요 디테일
- 데이터 규모: 둠의 핵심인 WAD 파일 저장을 위해 최소 1,199개의 DNS 청크가 필요하며, 전체 프로젝트는 단일 Cloudflare Pro 존 또는 여러 개의 Free 존에 배포 가능함.
- 자동화된 배포:
Publish-DoomOverDNS.ps1스크립트를 통해 .NET 퍼블리싱 디렉토리와 WAD 파일을 지정하면 자동으로 DNS 레코드를 생성 및 업로드함. - 업로드 안정성: 업로드 중단 시 해시값을 확인하여 마지막 성공 지점부터 재개할 수 있는
-Resume기능을 지원함. - 커스터마이징 옵션:
-WadName파라미터를 통해 doom1, doom2, plutonia, tnt 등 다양한 버전을 지원하며,-DnsServer옵션으로 1.1.1.1과 같은 특정 리졸버 강제 지정 가능. - 클라우드 엣지 활용: Cloudflare의 글로벌 캐싱 기능을 통해 전 세계 어디서나 빠른 DNS 쿼리 응답 속도로 게임 데이터를 전송받을 수 있음.
향후 전망
- 보안적 시사점: DNS 프로토콜을 데이터 전송 및 저장 수단으로 악용할 수 있는 가능성을 증명함에 따라, DNS 터널링이나 악성코드 배포 경로에 대한 보안 모니터링 강화가 필요함.
- 프로토콜의 재해석: 표준 프로토콜의 한계를 시험하는 유사한 프로젝트들이 늘어날 것이며, 이는 서비스 제공업체(ISP, CDN)들의 DNS 정책 변화를 유도할 수 있음.
출처:hackernews
