功能描述

对于安全需求较高的企业用户,设置防火墙可以限制员工访问非认可的网站,保护内部信息安全。

为避免这些企业因防火墙无法使用 Agora 的服务,Agora 开发了云代理服务。用户只需要在防火墙上将特定的 IP 及端口列入白名单,就可以实现内网访问 Agora 服务。

相比配置单一的代理服务器,云代理服务更灵活稳定,因此在大型企业、医院、高校、金融等安全需求较高的机构内都有广泛的应用。

实现方法

  1. 下载最新版的 Agora Native SDK。Agora Native SDK v2.4.0 及以上版本均支持使用云代理。

  2. 参考对应平台的快速开始文档完成开发环境准备。

  3. 联系 sales@agora.io,提供 App ID,并提供代理服务使用区域、并发规模、网络运营商等信息,申请开通云代理服务。

  4. 将以下测试 IP 及端口添加到企业防火墙的白名单。

    源地址为集成了 Agora RTC/On-premise Recording SDK 的客户端。

协议 目标地址 端口 端口用途
TCP 120.92.118.34 4000 消息数据传输
TCP 120.92.18.162 4000 消息数据传输
TCP 47.74.211.17 1080, 8000, 25000, 9700 边缘节点通信
TCP 52.80.192.229 1080, 8000, 25000, 9700 边缘节点通信
TCP 52.52.84.170 1080, 8000, 25000, 9700 边缘节点通信
TCP 47.96.234.219 1080, 8000, 25000, 9700 边缘节点通信
UDP 120.92.118.34 4500 - 4650 媒体数据交换
UDP 120.92.18.162 4500 - 4650 媒体数据交换
UDP 47.74.211.17 1080, 8000, 25000, 9700 边缘节点通信
UDP 52.80.192.229 1080, 8000, 25000, 9700 边缘节点通信
UDP 52.52.84.170 1080, 8000, 25000, 9700 边缘节点通信
UDP 47.96.234.219 1080, 8000, 25000, 9700 边缘节点通信
以上 IP 仅供测试阶段调试使用,正式上线前需要向 Agora 申请独立的云代理服务资源。
  1. 调用 setParameters("{\"rtc.enable_proxy\":true}"); 接口,将参数值设为 true,开启云代理服务。开启后,云代理服务器的默认配置为 setParameters("{\"rtc.proxy_server\":[1, \"ap-proxy.agora.io\", 0]}");,无需再次调用 setParameters 进行配置。
  2. 若默认配置无法满足需求,参照下表,调用 setParameters("{\"rtc.proxy_server\":[proxy_type, \"ip or dns\", port]}"); 接口配置云代理服务器:
    proxy_type ip or dns port
    0: 使用 Socks5 云代理服务器 服务器的 IP 地址 服务器的端口
    1: 使用云代理服务器并配置域名(推荐) ap-proxy.agora.io 0
    2: 使用云代理服务器并配置 IP 地址(当域名受限时使用) 按此格式列出服务器的 IP 地址 "[\"ip1\",\"ip2\"]" lbs 的端口,默认值为 0
  3. 测试是否能正常实现音视频通话或直播。
  4. 测试完成后,Agora 会为你部署云代理服务正式环境,并提供相应的 IP(域名)和端口。将 Agora 提供的 IP 和端口添加到企业防火墙的白名单上。
  5. 若需关闭云代理服务,调用 setParameters("{\"rtc.enable_proxy\":false}"); 方法。

示例代码

// 开启云代理服务,并使用默认云代理服务器配置。
setParameters("{\"rtc.enable_proxy\":true}");
// 开启云代理服务。
setParameters("{\"rtc.enable_proxy\":true}");
// 使用 Socks5 云代理服务器。
setParameters("{\"rtc.proxy_server\":[0, \"127.0.0.1\", 1080]}");
// 开启云代理服务。
setParameters("{\"rtc.enable_proxy\":true}");
// 使用云代理服务器并配置 IP 地址。
setParameters("{\"rtc.proxy_server\":[2, \"[\"192.168.0.112\",\"127.0.0.1\"]\", 0]}");

工作原理

Agora 云代理的工作原理如下:

  • Agora SDK 在连接 Agora SD-RTN 之前,向云代理发起请求;
  • 云代理返回相应代理信息;
  • Agora SDK 向云代理发送数据,云代理将接收到的数据透传给 Agora SD-RTN;
  • Agora SD-RTN 向云代理返回数据,云代理再将接收到的数据发送给 Agora SDK。

开发注意事项

setParameters 必须在加入频道前或离开频道后调用。