피드로 돌아가기
How I built a local media sharing network that hijacks captive portals
Dev.toDev.to
Infrastructure

dnsmasq와 HTTP 302 리다이렉션을 활용한 Captive Portal 기반 로컬 미디어 공유망 구축

How I built a local media sharing network that hijacks captive portals

remo2026년 4월 10일2intermediate

Context

별도의 앱 설치나 계정 생성 없이 주변 사용자가 즉각적으로 미디어를 공유하는 익명 네트워크 환경 필요. OS별 인터넷 연결 확인 메커니즘을 역이용하여 사용자 접속 시 자동으로 웹 인터페이스를 노출하는 구조 설계.

Technical Solution

  • dnsmasq를 통한 OS별 Connectivity Check URL의 DNS Hijacking 수행 및 서버 IP로 강제 라우팅
  • FastAPI 기반의 엔드포인트 설계로 Android, iOS, Windows의 요청에 대해 HTTP 302 Found 응답을 반환하여 Captive Portal 팝업 트리거
  • Raspberry Pi Zero 2W의 리소스 제약을 고려한 Vanilla HTML/CSS/JS 기반 프론트엔드 구현으로 브라우저 호환성 및 경량화 확보
  • SQLAlchemy를 활용한 데이터 영속성 계층 구축으로 사용자 식별자 기반의 미디어 관리 및 삭제 기능 제공
  • 결정론적 프로필 생성 알고리즘을 적용하여 사용자 ID에 매핑된 고유 아바타 자동 생성 및 시각적 정체성 부여

1. OS별 Connectivity Check URL(gstatic, apple, msft)의 동작 방식 확인

2. dnsmasq를 활용한 로컬 DNS 변조를 통한 트래픽 제어 가능성 검토

3. HTTP 302 응답을 통한 강제 웹 뷰 진입 시나리오 설계

4. 저사양 임베디드 환경에서의 프레임워크 제거를 통한 런타임 효율화

원문 읽기