본문으로 건너뛰기
피드

닌텐도 Wii로 IPv6 웹서버 돌리기, 729MHz와 64MB 램의 품격

devops 약 6분
vote
0
댓글
북마크

한 개발자가 닌텐도 Wii에 NetBSD 10.1을 올려 IPv6 전용 웹서버를 운영한 기록이다. USB 이더넷 어댑터 호환성, 정적 IPv6 주소 설정, 라우터 포트 개방, AAAA 레코드, IPv4 프록시, Gopher 서버 구성까지 실제 설정값이 꽤 알차게 담겨 있다.

  • 1

    닌텐도 Wii의 729MHz PowerPC CPU와 64MB 사용 가능 램으로 웹사이트를 서비스함

  • 2

    NetBSD 10.1과 내장 httpd, geomyidae로 웹과 Gopher를 구성함

  • 3

    IPv6 클라이언트는 Wii에 직접 접속하고 IPv4 클라이언트는 별도 서버의 Nginx 프록시를 거침

  • 4

    Realtek 8153 기반 TP-Link USB 이더넷 어댑터는 NetBSD에서 정상 동작함

  • 닌텐도 Wii가 진짜 웹서버가 됨. 장난감 데모가 아니라 실제 사이트를 서빙함.

    • 하드웨어는 729MHz PowerPC CPU와 사용 가능 램 64MB.
    • 운영체제는 NetBSD 10.1이고, 사이트는 IPv6로 직접 서비스됨.
    • IPv4 접속자는 다른 서버를 거쳐 프록시로 들어오게 구성함.
  • 제일 먼저 막힌 부분은 네트워크 어댑터였음.

    • 처음 산 UGREEN USB 2.0 이더넷 어댑터는 AX88772A 칩을 쓰는데, Wii 메뉴에서도 안 되고 NetBSD에서도 axe 드라이버가 invalid buffer 에러를 반복함.
    • 결국 Realtek 8153 칩 기반 TP-Link USB 3.0 기가비트 이더넷 어댑터로 바꿨고, Wii 메뉴에서는 지원 안 되지만 NetBSD에서는 잘 동작함.
  • NetBSD 설치 자체는 꽤 기본 구성에 가까움.

    • pkgsrc 바이너리 패키지 경로를 잡고 pkgin, git, tmux, fastfetch, nostt 같은 패키지를 설치함.
    • 초저사양 기기라도 패키지 시스템을 쓸 수 있다는 게 NetBSD 쪽 재미 포인트임.
  • IPv6 설정은 고정 공개 주소가 필요해서 직접 잡았음.

    • 보통 NetBSD는 링크 로컬 주소와 라우터 솔리시테이션(router solicitation)으로 동적 주소를 받음.
    • 저자는 ISP가 준 프리픽스에 ::2를 붙여 /etc/ifconfig.ure0에 정적 alias를 추가함.
    • rtsol은 유지해서 동적 주소와 라우팅 설정은 계속 받게 둠.
  • 인터넷에 공개하려면 DNS와 라우터 설정도 필요함.

    • 라우터에서 해당 IPv6 주소의 80번 포트를 열고, 도메인 등록기관에 AAAA 레코드를 추가함.
    • 그래서 IPv6 클라이언트는 브라우저에서 바로 Wii의 웹서버와 통신함.

ℹ️참고

> 저자는 “리버스 프록시로 다 받으면 되지 않나?”라는 질문에 선을 그음. 브라우저가 Wii와 직접 대화한다는 점이 이 실험의 재미라서, IPv6 직접 접속을 유지하려는 쪽임.

  • 웹서버는 NetBSD 기본 httpd를 사용함.

    • /etc/rc.conf에서 ntpd, mdnsd, postfix처럼 필요 없는 서비스를 꺼서 구성을 가볍게 만듦.
    • httpd=YES, chroot 디렉터리, 문서 루트, 가상 호스트를 설정함.
    • /etc/rc.d/httpd에는 chroot와 vhost 옵션을 쓰도록 약간의 변수를 추가함.
  • IPv4는 별도 홈서버의 Nginx가 중계함.

    • 단일 IPv4 주소의 80번 포트가 이미 다른 홈서버에서 쓰이고 있었기 때문임.
    • wii.sjmulder.nl의 A 레코드는 기존 서버로 향하고, Nginx가 http://[2a02:a45f:8eaa::2]로 프록시함.
    • 결과적으로 IPv6 사용자는 Wii에 직접 붙고, IPv4 사용자는 중간 서버를 거침.
  • Gopher도 같이 열어둠. 레트로 서버답게 제대로 감성 챙김.

    • geomyidae를 설치하고, /var/www/gopher 아래를 서비스하도록 설정함.
    • -c 옵션으로 chroot를 켰고, 웹 콘텐츠와 마찬가지로 git으로 관리되는 /var/www 아래에 두려는 의도가 있음.
  • 저자는 아직 이 서버로 뭘 할지는 정하지 않았음.

    • SSH와 웹만으로도 기본은 되지만, 16코어와 64GB 램이 없어도 CRUD 사이트 하나쯤은 돌릴 수 있다는 걸 보여주는 작은 앱을 고민 중임.
    • 말 그대로 ‘요즘 서버가 너무 비대해진 거 아님?’을 2006년 게임기로 찌르는 실험임.

기술 맥락

  • 이 글의 선택은 최신 서버 프레임워크가 아니라 NetBSD 기본 도구로 작고 직접적인 서버를 만드는 거예요. Wii는 램이 64MB라서 무거운 런타임을 얹기 어렵고, 그래서 httpd, rc.conf, pkgsrc 같은 운영체제 기본 구성의 가치가 더 선명하게 보여요.

  • IPv6를 직접 열고 IPv4만 프록시한 것도 꽤 의도적인 선택이에요. 모든 트래픽을 리버스 프록시 뒤로 숨기면 운영은 쉬워지지만, 클라이언트가 Wii에 직접 붙는다는 실험의 핵심이 사라지거든요. 그래서 AAAA 레코드와 라우터 포트 개방까지 직접 맞춘 거예요.

  • USB 이더넷 칩셋 호환성은 이런 오래된 하드웨어 실험에서 제일 현실적인 병목이에요. 같은 USB 이더넷 어댑터처럼 보여도 AX88772A는 실패했고 Realtek 8153은 NetBSD에서 동작했죠. 서버 소프트웨어보다 드라이버가 먼저 발목을 잡는 전형적인 케이스예요.

  • chroot를 켠 이유도 단순한 멋내기가 아니에요. 아무리 작은 장난감 같은 서버라도 인터넷에 80번 포트를 열면 외부 입력을 받는 서비스가 돼요. 파일시스템 접근 범위를 줄여두면 문제가 생겼을 때 피해 범위를 작게 만들 수 있어요.

이건 성능 자랑이 아니라 시스템을 얼마나 작게 유지할 수 있는지 보여주는 재밌는 실험이다. 요즘 CRUD 사이트 하나에도 과한 인프라가 붙는 시대라, 64MB 램 웹서버는 오히려 좋은 기준점이 된다.

댓글

댓글

댓글을 불러오는 중...

devops

하이퍼스케일 데이터, 비트코인 채굴장을 최대 30억 달러짜리 AI 데이터센터로 전환

하이퍼스케일 데이터의 자회사 ACS가 캘리포니아 네오클라우드 업체와 미시간 캠퍼스 AI 컴퓨팅 용량 공급 계약을 맺었어. 초기 20메가와트로 시작해 최대 52메가와트까지 늘릴 수 있고, 모든 옵션이 행사되면 계약 규모가 30억 달러를 넘을 수 있다는 내용이야.

devops

KT, 분사했던 KT클라우드 다시 합치나…AIDC 투자 때문에 판 다시 짜는 중

KT가 2022년 분사한 KT클라우드를 다시 합치는 방안을 검토 중인 것으로 알려졌어. 클라우드, 인공지능 데이터센터, 네트워크 인프라를 한 몸처럼 묶어 B2B 경쟁력을 키우려는 흐름으로 읽혀. 다만 KT는 아직 구체적으로 검토한 바 없다는 입장이야.

devops

KT, KT클라우드 다시 합치나…AI 인프라 패키지 전략 시동

KT가 2022년 분사했던 KT클라우드를 다시 흡수하는 방안을 검토 중인 것으로 알려졌다. 인공지능 확산으로 클라우드, 데이터센터, 네트워크를 묶은 기업간거래 인프라 수요가 커지면서 KT 본체의 자금력과 영업력을 활용하려는 전략으로 보인다. 다만 외부 투자자 지분 처리와 통신·클라우드 조직 통합이 실제 관건이다.

devops

Bunny DNS, 쿼리 과금 없애고 500개 도메인까지 무료로 푼다

bunny.net이 Bunny DNS의 DNS 쿼리 과금을 없애고 계정당 최대 500개 도메인까지 무료 DNS 호스팅을 제공하기로 했어. 단순한 무료화가 아니라 CDN, 엣지 보안, 스마트 라우팅을 DNS에서 바로 연결하는 방향으로 플랫폼 진입점을 재정리하는 움직임이야.

devops

가비아, AWS 중소·중견기업 클라우드 역량 인증 받음

가비아가 AWS의 ‘AWS SMB 컴피턴시’를 취득했다. 이 인증은 중소·중견기업의 클라우드 전환과 운영 지원 역량을 검증하는 제도로, 가비아는 운영 프레임워크와 고객 레퍼런스를 인정받았다.