Agora의 기업 방화벽 우회 전략 — Cloud Proxy와 Firewall Whitelist
제한된 enterprise network에서 Agora RTC에 필요한 domain·port allowlist와 Cloud Proxy를 비교합니다. UDP 차단, 고정 outbound 정책, TLS inspection 같은 조건에 따라 적용 범위가 달라지며 어느 방식도 모든 방화벽 통과를 보장하지 않습니다. 운영망에서 join·publish·subscribe를 검증하는 절차를 함께 제시합니다.
목차(17개 항목)
- Agora가 제공하는 두 가지 방식
방식 1 — Firewall Whitelist (도메인 + 포트 허용)
방식 2 — Cloud Proxy (클릭 시 시각화)
- SD-RTN® 이란?
- 핵심 요약
Cloud Proxy 역할 상세
- Firewall Whitelist만으로 충분한가?
- Firewall Whitelist 설정
- 관련 글
- 참고 자료
제한된 기업망에서 Agora RTC를 연결하는 방법은 Firewall Whitelist와 Cloud Proxy로 나뉩니다. SDK 플랫폼·버전과 방화벽 정책에 따라 필요한 도메인, 포트, IP 대역이 다르므로 두 방식을 같은 설정으로 취급하면 안 됩니다.
Agora가 제공하는 두 가지 방식
| 방식 | 설명 |
|---|---|
| 방식 1 | Firewall Whitelist — 도메인·포트 허용 |
| 방식 2 | Cloud Proxy — (제한된 환경용) |
방식 1 — Firewall Whitelist (도메인 + 포트 허용)
Web SDK의 Firewall Whitelist는 공식 문서에 지정된 도메인과 포트를 허용하는 방식입니다. 도메인 목록은 Web SDK 버전에 따라 달라집니다.
허용해야 할 도메인 (예시)
위 목록은 현재 Firewall requirements 문서의 Web RTC 전체 allowlist입니다. Cloud Proxy 가이드에는 SDK 버전별 축약 표도 있으므로, 실제 배포 버전과 보안팀 정책에 맞춰 두 문서를 함께 확인합니다.
포트 허용
| 포트 | 타입 | 용도 |
|---|---|---|
| 80, 443, 3433, 3478, 4700~5000, 5668, 5669, 6080, 6443, 8667, 9667 | TCP | Web SDK 서비스 연결 |
| 30011~30013 | TCP | RTMP converter를 사용할 때 추가 |
| 3478, 4700~5000 | UDP | Web SDK 2.9.0 이상 미디어 연결 |
공개망 연결은 도메인 allowlist를 사용하면 Agora 서비스 주소 변경에 대응하기 쉽습니다. 반대로 Cloud Proxy는 공식 Allowed IP 대역을 허용하는 별도 방식입니다.
방식 2 — Cloud Proxy (클릭 시 시각화)
화이트리스트도 못 하는 제한된 환경을 위한 솔루션입니다.
- 일반 WebRTC TURN: 클라이언트 → TURN 서버 → Peer
- Agora Cloud Proxy: 클라이언트 → Cloud Proxy → Agora SD-RTN® → 상대방
동작 흐름
- SDK가 Cloud Proxy에 연결 요청
- Cloud Proxy가 프록시 정보 반환
- SDK → Cloud Proxy → Agora SD-RTN® (Agora 글로벌 네트워크)
- SD-RTN® → Cloud Proxy → SDK (역방향)
플랫폼별 활성화 API
Web SDK 4.3.0 이상은 startProxyServer를 채널 입장 전에 호출합니다. Force UDP는 3, Force TCP(TLS 443)는 Web SDK 4.9.0 이상에서 5입니다.
Native SDK는 RtcEngine.setCloudProxy와 플랫폼 enum을 사용합니다. 예를 들어 Android 4.x는 TRANSPORT_TYPE_UDP_PROXY, TRANSPORT_TYPE_TCP_PROXY, TRANSPORT_TYPE_NONE_PROXY를 사용하며 채널 밖에서 호출합니다. Web의 숫자 3·5를 Native enum 값으로 재사용하면 안 됩니다.
일반 TURN vs Agora Cloud Proxy
| 항목 | 일반 TURN | Agora Cloud Proxy |
|---|---|---|
| 허용 대상 | TURN 서버 주소와 전송 포트 | Agora Cloud Proxy Allowed IP와 포트 |
| 전송 | UDP·TCP·TLS 등 서버 구성에 따름 | Web Force TCP는 TLS 443, Force UDP는 UDP |
| 적용 | ICE 서버와 브라우저 정책에 따름 | SDK API + Console 활성화 + 방화벽 IP 허용 |
| 이후 경로 | TURN relay를 거쳐 상대 또는 서비스로 전달 | Cloud Proxy가 Agora SDRTN®으로 전달 |
Cloud Proxy는 도메인 allowlist가 아니라 Agora가 게시한 Allowed IP 대역과 포트를 방화벽에 등록합니다. 목록은 Native Force UDP, Native Force TCP, Web RTC 등 모드와 리전별로 다르고 이전 목록에서 마이그레이션이 필요할 수도 있으므로 현재 Allowed IP 문서를 배포 시점에 적용하세요. Native Force UDP 모드에서는 Media Push와 채널 간 co-hosting을 사용할 수 없습니다.
SD-RTN® 이란?
SD-RTN = Software Defined Real-Time Network
Agora가 운영하는 분산 실시간 전송 네트워크입니다. 공식 Cloud Proxy 문서는 프록시가 받은 데이터를 SDRTN®으로 전달한다고 설명하지만, 모든 구간이 공용 인터넷과 분리된 전용 사설 백본이라고 명시하지는 않습니다.
핵심 요약
제한된 기업망에서 확인할 항목:
- Web SDK 버전에 맞는 도메인·포트 allowlist
- TLS inspection, 인증 프록시, DNS, WebSocket 정책
- Cloud Proxy 사용 시 Console 활성화·SDK API·Allowed IP/포트
- 배포 리전별 실제 통화 테스트
Cloud Proxy 구조 시각화 (클릭 시 시각화)
Cloud Proxy 역할 상세
고정 진입점이 필요한 이유
Agora 일반 연결
- SDK →
*.agora.io→ 실제 서버 IP (1.2.3.4 or 5.6.7.8 or …) - 이 IP가 계속 바뀜 (글로벌 로드밸런싱)
기업 방화벽 입장: "어? 오늘은 1.2.3.4, 내일은 5.6.7.8… 어떤 IP를 허용해야 해?" → IP 기반 방화벽은 사실상 허용 불가
Cloud Proxy 연결
- SDK → Cloud Proxy Allowed IP 대역 → SDRTN®
- 사용하는 SDK·모드·리전에 해당하는 IP와 포트를 방화벽에 등록
핵심: Agora 전체 인프라 IP를 허용할 필요 없이, Cloud Proxy IP 대역만 허용하면 됩니다.
Force TCP 경로
기업 내부망 상황
- UDP 3478 → 차단
- UDP 4700~5000 → 차단
- TCP 443 → 허용
Web Force TCP 모드에서 클라이언트는 Cloud Proxy까지 TLS 443으로 전송합니다.
공식 문서는 Cloud Proxy가 데이터를 SDRTN®으로 전달한다고 설명합니다. 프록시 이후 구간이 반드시 UDP로 변환된다고 공개 문서만으로 단정할 수 없으므로, 내부 전송 프로토콜을 아키텍처 사실처럼 표시하지 않습니다.
Firewall Whitelist만으로 충분한가?
| 환경 | Whitelist 충분? | 이유 |
|---|---|---|
| Web SDK, 도메인·필수 TCP/UDP 허용 가능 | 우선 검토 | 버전별 Firewall Whitelist 적용 후 테스트 |
| UDP 차단, TLS 443 경로 허용 | 조건부 | Web Force TCP Cloud Proxy 또는 허용된 TCP 경로 검토 |
| IP 기반 정책만 허용 | Cloud Proxy 후보 | 리전별 Allowed IP와 포트 등록 필요 |
| 병원·은행·공공기관 | 환경별 판단 | TLS inspection·인증 프록시·DNS·보안 정책까지 실측 |
Firewall Whitelist 설정
기업 IT 관리자에게 아래를 요청하면 됩니다.
도메인 허용
포트 허용
- TCP: 80, 443, 3433, 3478, 4700
5000, 5668, 5669, 6080, 6443, 8667, 9667; RTMP converter 사용 시 3001130013 - UDP: 3478, 4700~5000
이 목록은 현재 Firewall requirements 문서의 Web SDK 항목입니다. Native SDK에는 그대로 적용하지 않고, Web도 배포 SDK 버전의 Cloud Proxy 가이드 표와 함께 확인합니다.
결론: 먼저 SDK·버전·리전과 방화벽 정책을 확인합니다. Web allowlist로 필요한 경로를 열 수 있으면 이를 적용하고, 고정 IP 진입점이나 Force TCP가 필요하면 Cloud Proxy를 검토합니다. 어느 방식도 "항상 통과"를 보장하지 않으므로 운영망에서 join·publish·subscribe를 모두 테스트해야 합니다.
관련 글
- #8 왜 P2P가 막히는가 — NAT/STUN/TURN — Cloud Proxy가 우회하려는 바로 그 NAT·방화벽 문제의 1차 원인을 다룬다.
- #0 WebRTC란? ICE/STUN/NAT/TURN 기초 — 표준 WebRTC가 IP 기반 TURN으로 우회하는 방식과 Agora 방식의 차이를 이해하는 기초.
- #43 Agora 자체 코덱 vs Web SDK, SD-RTN, FEC — 이 글에 나온 SD-RTN® 백본망의 실제 구조와 전송 최적화(FEC)를 더 깊이 본다.
- #34 TTFB 분해 — DNS/TCP/TLS — Force TCP 모드가 TCP/TLS 443으로 핸드셰이크하는 비용(왜 UDP보다 느린가)을 분해한다.
- #47 WebRTC 벤더 지형도 — Cloud Proxy + SD-RTN처럼 "자체 인프라로 우회"하는 벤더 전략을 다른 벤더와 비교한다.
참고 자료
- RTC Firewall requirements (Agora Docs) — Web SDK 버전별 도메인·포트 allowlist.
- Web: Connect with Cloud Proxy (Agora Docs) —
startProxyServer, Force UDP/TCP 모드와 호출 순서. - Android: Connect with Cloud Proxy (Agora Docs) — Native
setCloudProxy와 enum 사용 예시. - IP addresses for Cloud Proxy (Agora Docs) — SDK·모드·리전별 Allowed IP와 포트 목록.
- RFC 8656 — Traversal Using Relays around NAT (TURN) — 표준 TURN 릴레이 동작 정의. Agora Cloud Proxy와 비교 기준이 되는 IETF 표준.
- RFC 8445 — Interactive Connectivity Establishment (ICE) — NAT 통과 후보 수집·연결 절차 표준. 방화벽 우회의 이론적 토대.
- MDN — WebRTC API: Protocols — STUN/TURN/ICE/NAT 통과 개념의 입문 설명.
실제 데모
/agora-demo/rtc