Android Webrtc配置外网stun与turn服务器(踩坑之旅)

前言

这段时间在研究webrtc,看了很多文章也算是能在局域网视频,也加了些额外的基本功能,例如:静音,扬声器,切换摄像头等等,但是在总感觉在局域网内不(bu)太(neng)方(zhuang)便(bi),所以找朋友借了个阿里云小水管,开始准备部署在云服务器上。

先放上局域网版1v1视频:webrtcAndroidDemo

简述

谷歌有现成的免费的stun和turn服务器,但是自己要部署一套外网的比较麻烦,所以用的开源的coturn直接上手部署。

1、环境

  • 阿里云服务器:CentOS Linux release 7.3.1611
  • coturn:4.5.1.1

2、编译

  1. 下载源码

     git clone https://github.com/coturn/coturn.git
    
  2. 需要安装openssl、event

     yum install openssl openssl-devel libevent libevent-devel
    
  3. 安装coturn

     cd coturn
     ./config
     make
     make install
    

    使用which turnserver 有路径则成功

  4. 配置coturn文件

    4.1 复制turnserver.conf

      cd /usr/local/etc
    

    只有一个turnserver.conf.default一个文件,把这个我们需要自己负责一份改名为turnserver.conf (注意:一定要在这里面加配置才有效!!!)
    使用命令:cp turnserver.conf.default turnserver.conf

4.2 添加用户

使用命令:turnadmin -a –u 用户名 -r shenzhen -p 密码

4.3 生成openssl证书

    openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 –nodes

生成ssl cert和pkey记住这两个生成的位置在/etc/下。

4.4 在turnserver.conf添加配置

    listening-ip=#云主机内网IP
    listening-port=3478#默认3478
    tls-listening-port=5349#默认5349
    relay-ip=#云主机内网ip
    external-ip=#公网IP
    lt-cred-mech
    cert=/etc/turn_server_cert.pem #openssl证书路径
    pkey=/etc/turn_server_pkey.pem #openssl公钥路径
    pidfile=”/var/run/turnserver.pid”
    min-port=49152
    max-port=65535
    user=zjy:zjy123123 #账号和密码,也可以是md5

4.5 最终一步(最坑一步)

如果是阿里云的话需要去添加安全组,把3478端口的udp和tcp都要打开,否则无效!!!

3、运行并测试

上面全部配置完了,那么恭喜你,可以愉快的测试了,直接执行命令:turnserver -o -a -f
好了完事了,跑起来了。至于测试,打开google提供的trickle-ice,在里面添加你的stun和turn地址,其实就是你公网ip+3478和5349两个:
Android Webrtc配置外网stun与turn服务器(踩坑之旅)_第1张图片
最后点击最下面那个gather candidates,当看到relay是你公网ip时说明就成功了。
Android Webrtc配置外网stun与turn服务器(踩坑之旅)_第2张图片
如果没有成功一定一定要检查下是不是3478 udp端口没开!!!

总结

搞了好几个小时才把这个部署完,其中大坑小坑一堆,最大的坑还是这个端口没开,这篇文章也算记录下吧。

你可能感兴趣的:(android)