본문으로 건너뛰기
피드

Qanah — WireGuard 설정 그대로 쓰면서 WebRTC로 NAT 뚫는 P2P VPN

devops 약 4분
vote
0
댓글
북마크

WireGuard 설정 파일을 그대로 사용하면서 UDP 대신 WebRTC 데이터 채널로 IP 패킷을 터널링하는 P2P VPN. CGNAT 뒤에서도 동작하고, WireGuard가 차단된 네트워크에서도 사용 가능.

  • 1

    WireGuard 설정 파일 호환, UDP 대신 WebRTC 데이터 채널 사용

  • 2

    ICE/STUN으로 NAT 통과 — 공인 IP, 포트 포워딩 불필요

  • 3

    메시 네트워킹 + 1홉 릴레이 지원

  • 4

    ChaCha20-Poly1305 + X25519 암호화, PresharedKey로 포스트 퀀텀 저항

  • Qanah(قَناة, 아랍어로 "터널")은 WireGuard 설정 파일을 그대로 쓰면서 WebRTC 데이터 채널 위에 VPN 터널을 만드는 P2P VPN임. 전통적인 WireGuard UDP 전송 대신 TUN 디바이스를 만들어서 raw IP 패킷을 WebRTC로 터널링하는 방식

  • 이게 왜 의미가 있냐면:

    • CGNAT 뒤에 있어도 됨 — ICE/STUN으로 NAT 통과하니까 공인 IP도, 포트 포워딩도, 업스트림 네트워크 제어도 필요 없음
    • WireGuard/UDP가 차단된 네트워크에서도 동작 — ISP나 국가 방화벽이 WireGuard 프로토콜이나 아웃바운드 UDP를 막아도 WebRTC/ICE 경유로 표준 포트를 통해 빠져나감
    • 메시 네트워킹 지원 — 여러 피어가 동시 연결 가능하고, 직접 연결 안 되는 피어로의 트래픽은 다른 연결된 피어를 경유해 1홉 릴레이
sequenceDiagram
    participant 피어A as 피어 A (CGNAT 뒤)
    participant MQTT as MQTT 시그널링 서버
    participant STUN as STUN 서버
    participant 피어B as 피어 B (CGNAT 뒤)
    피어A->>MQTT: SDP offer 전송
    MQTT->>피어B: SDP offer 전달
    피어B->>MQTT: SDP answer 전송
    MQTT->>피어A: SDP answer 전달
    피어A->>STUN: ICE candidate 수집
    피어B->>STUN: ICE candidate 수집
    피어A->>피어B: WebRTC 데이터 채널 (ChaCha20-Poly1305 암호화)
    피어B->>피어A: 양방향 IP 패킷 터널링
  • 암호화는 X25519 키 교환 + ChaCha20-Poly1305. WireGuard 설정의 PrivateKey/PublicKey로 공유 비밀을 유도하고, PresharedKey가 있으면 포스트 퀀텀 저항을 위해 혼합함. 방향별로 독립된 키를 사용

  • 시그널링은 기본적으로 MQTT 브로커(broker.emqx.io:1883)로 자동 교환하지만, offer/answer 서브커맨드로 수동 복붙 방식도 가능. 일회성 세션(페어 프로그래밍, 서포트 접근, 데모)에 유용함

  • Rust로 작성됐고, Linux에서만 동작(TUN 디바이스 필요), root/sudo 권한 필요. 설정 파일명이 TUN 인터페이스 이름이 되는 건 wg-quick 컨벤션과 동일 (wg0.conf → wg0)

💡

> --no-relay 플래그로 릴레이를 끄면 직접 피어 라우트만 사용하고 직접 연결 없는 패킷은 드롭됨. 보안이 중요한 환경에서 유용함

WireGuard의 설정 편의성과 WebRTC의 NAT 통과 능력을 결합한 영리한 접근. CGNAT이나 방화벽 뒤에서 VPN이 막히는 상황에 실용적인 해결책

댓글

댓글

댓글을 불러오는 중...

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