Willy Geek's Blog

Ubuntu下安装coturn

2019/07/23
loading

什么是coturn?

jordan-harrison-40XgDxBfYXM-unsplash

coturn是可用作穿透服务器(STUN)及转发服务器(TURN),在WebRTC通话中扮演的角色是一个“红娘”。打个比方,在互联网的两端,有一对准备约会的情侣,他们需要进行视频通话,但互相不知道对方的网络地址,这时coturn就告诉他们各自的地址以及对方的地址,然后就可以进行通话啦。

大部分的情况下,都可以穿透成功,也就是双方之间可以不经过任何服务器就能实现通话,在穿透不成功的情况下,就需要经过coturn服务器进行数据流的转发,也就是所有的数据经过服务器,对服务器的负载比较大。

至于通话过程中,什么情况选择穿透,什么情况选择转发,取决于双方各自所处的网络环境,更具体的话就是取决于各自所处的NAT网络类型,以下是不同环境下对应所需的方式:

  • 对称NAT - 对称NAT :TURN
  • 对称NAT - 端口限制型NAT : TURN
  • 对称NAT - 地址限制型NAT : STUN(部分可行)
  • 对称NAT - 全锥形NAT : STUN
  • 其他: STUN

如何知道自己网络或者服务器所处的NAT类型?

Github上有个简单的开源库,叫pystun, 简单安装就能或者NAT类型以及公网ip

Ubuntu上怎么安装coturn

1.先更新源:

1
sudo apt update

2.安装coturn:

1
sudo apt install coturn

3.让服务可以在重启后启动,修改/etc/default/coturn文件,把下面的配置注释去掉

1
TURNSERVER_ENABLED=1

4.修改监听端口,修改/etc/turnserver.conf,修改监听端口为443,找到下面的配置,去掉注释,并改为443,如果443端口被占用,可以使用默认的3478:

1
listening-port=443

添加一个固定的账号:

1
user=your-username:your-password

5.服务器端的防火墙开启443或者3478端口

为什么是443端口?

在一些极其严格的网络环境下,可能客户端网络的防火墙只给开80/443端口,为了穿透成功,服务器端开放443端口为最保守的方案,意思就是说如果防火墙把443都封了的话,那你就别想上网了。更多细节,可参考这篇You Better Ignore the Default Protocol Ports You Implement

443为https端口,如果在服务器上已经装了http服务例如nginx,443可能会被占用,这时coturn可以装到另外一台服务器上,避免端口冲突;

怎么测试我们成功安装好了呢?

进入在线网页测试STUN or TURN URI一栏输入: stun:公网ip:3478,然后点击Add server, 再点击Gather candidates, 如果成功会输出客户端的公网ip,及可用端口号。turn的配置则需要填入上述的账号密码。

结语

以上是P2P通信中,cuturn的介绍、配置、使用以及测试。如果喜欢本站的话,记得收藏哟。

原创文章,转载请注明出处~!感谢支持
CATALOG
  1. 1. 什么是coturn?
  2. 2.
  3. 3. 如何知道自己网络或者服务器所处的NAT类型?
  4. 4. Ubuntu上怎么安装coturn
  5. 5. 为什么是443端口?
  6. 6. 怎么测试我们成功安装好了呢?
  7. 7. 结语
    1. 7.1. 原创文章,转载请注明出处~!感谢支持