应对防火墙限制
大型企业、医院、高校、银行等安全需求较高的机构会部署防火墙将办公环境与外网隔离开来,保护内部信息安全。为避免这些企业用户因防火墙无法使用声网的服务,声网 Web SDK 提供两种解决方案:
- 声网云代理方案:你需要在防火墙上将特定的 IP 地址和端口加入白名单,并调用 API 配置声网云代理服务。
- 防火墙白名单方案:你需要添加域名白名单,开放相应端口且不对 IP 地址设限。
如果你想通过 VPN 使用声网的服务,请确保已联系 VPN 运营商将对应端口添加到白名单中,否则可能会遇到通话失败等未定义行为。
云代理方案
使用云代理服务时,建议使用 Chrome、Firefox 和 Safari 浏览器的最新版本。
云代理服务暂不支持移动端。
工作原理
声网云代理的工作原理如下:
- 声网 SDK 在连接声网 SD-RTN™ 之前,向云代理发起请求。
- 云代理发送相应代理信息。
- 声网 SDK 向云代理发送数据,云代理将接收到的数据透传给声网 SD-RTN™。
- 声网 SD-RTN 向云代理返回数据,云代理再将接收到的数据发送给声网 SDK。
实现方法
根据你使用的 Web SDK 版本,参考对应的实现方法使用云代理服务。
自 Web SDK v4.3.0 起,声网优化了云代理架构,进一步加强了有网络访问限制的环境中 SDK 的连通性,同时支持限定访问区域。声网推荐你升级到 v4.3.0 或以上版本。
- v4.3.0 或以上
- v4.0.0 - v4.2.1
1. 申请开通云代理服务
联系 sales@shengwang.cn 或技术支持申请开通云代理服务,并提供以下信息:
- App ID
- 代理服务使用区域
- 并发规模
- 网络运营商
2. 客户端开启云代理功能
成功开通后,在加入频道前调用 startProxyServer
方法打开云代理功能并设置 mode
参数:
- 设为
3
:使用 UDP 协议的云代理,即 Force UDP 云代理模式。在该模式下,SDK 始终通过 UDP 协议传输数据。 - 设为
5
:(自 v4.9.0 起支持)使用 TCP(加密)协议的云代理,即 Force TCP 云代理模式。在该模式下,SDK 始终通过 TLS 443 传输数据。
开启云代理后,测试是否能正常实现音视频通话或直播。SDK 提供 client.on("is-using-cloud-proxy")
事件,会在本地成功发布媒体流后触发该回调,提示当前媒体流是否经云代理服务转发。
const client = AgoraRTC.createClient({mode: 'live',codec: 'vp8'});
// 开启云代理
client.startProxyServer(3);
// 加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
3.客户端关闭云代理功能
如果需要关闭代理,请在离开频道后调用 stopProxyServer
。
// 开启云代理并加入频道后
/** ... **/
// 离开频道
client.leave();
// 关闭云代理服务
client.stopProxyServer();
// 重新加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
1. 申请开通云代理服务
联系 sales@shengwang.cn 或技术支持申请开通云代理服务,并提供以下信息:
- App ID
- 代理服务使用区域
- 并发规模
- 网络运营商
2. 添加防火墙白名单
将以下测试 IP 及端口添加到企业防火墙的白名单。源地址为集成了 Web SDK 的客户端。
国内测试
协议 | 目标地址 | 端口 | 端口用途 |
---|---|---|---|
TCP | 150.138.153.78 | 443, 4000 3433 - 3460 | 消息数据传输 媒体数据交换 |
TCP | 47.74.211.17 | 443 | 边缘节点通信 |
TCP | 52.80.192.229 | 443 | 边缘节点通信 |
TCP | 52.52.84.170 | 443 | 边缘节点通信 |
TCP | 47.96.234.219 | 443 | 边缘节点通信 |
UDP | 150.138.153.78 | 3478 - 3500 | 媒体数据交换 |
国外测试
协议 | 目标地址 | 端口 | 端口用途 |
---|---|---|---|
TCP | 23.236.115.138 | 443, 4000 3433 - 3460 | 消息数据传输 媒体数据交换 |
TCP | 148.153.66.218 | 443, 4000 3433 - 3460 | 消息数据传输 媒体数据交换 |
TCP | 47.74.211.17 | 443 | 边缘节点通信 |
TCP | 52.80.192.229 | 443 | 边缘节点通信 |
TCP | 52.52.84.170 | 443 | 边缘节点通信 |
TCP | 47.96.234.219 | 443 | 边缘节点通信 |
UDP | 23.236.115.138 | 3478 - 3500 | 媒体数据交换 |
UDP | 148.153.66.218 | 3478 - 3500 | 媒体数据交换 |
以上 IP 仅供测试阶段调试使用,正式上线前需要向声网申请独立的云代理服务资源。
3. 客户端开启云代理功能
在加入频道前调用 startProxyServer
方法打开云代理功能,测试是否能正常实现音视频通话或直播。
const client = AgoraRTC.createClient({mode: 'live',codec: 'vp8'});
// 开启云代理
client.startProxyServer();
// 加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
测试完成后,声网会为你部署云代理服务正式环境,并提供相应的 IP 和端口。你需要将声网提供的 IP 和端口添加到企业防火墙的白名单。
4. 客户端关闭云代理功能
如果需要关闭云代理,请在离开频道后调用 stopProxyServer
。
// 开启云代理并加入频道后
/** ... **/
// 离开频道
client.leave();
// 关闭云代理服务
client.stopProxyServer();
// 重新加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
开发注意事项
startProxyServer
必须在加入频道前调用,stopProxyServer
必须在离开频道后调用。
防火墙白名单方案
根据你使用的 Web SDK 版本,将对应的目标域名和端口添加到防火墙白名单。
域名
- v4.4.0 或以上
- v4.4.0 - v4.0.0
- v4.0.0 之前
.agora.io
.edge.agora.io
.sd-rtn.com
.edge.sd-rtn.com
.agora.io
.edge.agora.io
.agoraio.cn
.edge.agoraio.cn
- 3.5.0 及之后版本
Shell
.agora.io
.edge.agora.io
.sd-rtn.com
.edge.sd-rtn.com - 3.5.0 之前版本
Shell
.agora.io
.edge.agora.io
.agoraio.cn
.edge.agoraio.cn
端口
目标端口 | 协议 | 操作 |
---|---|---|
80;443;3433;4700 - 5000;5668;5669;6080;6443;8667;9667;30011 - 30013(用于旁路推流) | TCP | 允许 |
3478;4700 - 5000(2.9.0 及以后版本);10000 - 65535 (2.9.0 以前版本) | UDP | 允许 |