피드로 돌아가기
Dev.toInfrastructure
원문 읽기
TUN 드라이버 부재를 veth와 SOCKS5로 극복한 Serverless VPN 구현
I Built a Serverless VPN on Lambda MicroVMs — 12 Builds, 5 Dead Ends, 1 Working Architecture
AI 요약
Context
AWS Lambda MicroVM의 Firecracker 커널 내 CONFIG_TUN 부재로 인한 TUN/TAP 장치 생성 불가 상황 분석. 기존 WireGuard 및 Boringtun 같은 Userspace VPN 솔루션이 커널 모듈 및 TUN 드라이버 의존성으로 인해 작동하지 않는 제약 발생.
Technical Solution
- TUN 드라이버 없이 네트워크 레이어 접근을 위해 커널이 지원하는 veth pair와 Network Namespace 활용
- WebSocket Tunnel(wstunnel)을 통한 TCP 트래픽의 WSS 래핑으로 MicroVM Ingress 제약 해결
- microsocks 기반 SOCKS5 프록시 서버를 구축하여 TCP 트래픽의 외부 인터넷 라우팅 처리
- iptables MASQUERADE 설정을 통한 MicroVM eth0 인터페이스 기반의 NAT 처리 및 트래픽 송출
- /ready 훅 대신 /run 훅에 네트워크 설정을 배치하여 런타임 시점의 가용 자원 확보 및 설정 적용
실천 포인트
1. Firecracker 기반 환경에서 fork() 제한 시 데몬 프로세스에 --foreground 플래그 적용 여부 확인
2. 커널 모듈 로드 불가능한 환경에서 TUN/TAP 대체제로 veth pair 및 SOCKS5 프록시 검토
3. MicroVM 이미지 업데이트 시 additionalOsCapabilities 및 훅 설정 초기화 가능성을 고려한 이미지 관리 전략 수립
4. 네트워크 설정 작업 시 빌드 타임(/ready)과 런타임(/run) 훅의 실행 시점 차이 구분