亚马逊EC2部署turnserver穿透/中继服务指北

安装版本:turnserver-3.2.3.95.tar.gz  系统环境:AWS ec2

 

一、下载必要库

 

sudo yum install -y make auomake gcc cc gcc-c++ wget
sudo yum install -y openssl-devel libevent libevent-devel mysql-devel mysql-server
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
 tar xvfz libevent-2.1.8-stable.tar.gz 
cd libevent-2.1.8-stable && ./configure
make && make install

 

二、下载turnserver-3.2.3.95.tar.gz并安装

wget http://turnserver.open-sys.org/downloads/v3.2.3.95/turnserver-3.2.3.95.tar.gz
tar -xvzf turnserver-3.2.3.95.tar.gz
cd turnserver-3.2.3.95
./configure
make && make install  (若安装出错,用root权限,sudo su)

三、创建配置文件 :

sudo cp /usr/local/etc/turnserver.conf.default /etc/turnserver.conf

sudo cp /usr/local/etc/turnuserdb.conf.default /etc/turnuserdb.conf

四、编辑配置文件turnserver.conf:(只需修改下面几项)

external-ip=54.95.37.26/172.31.43.68 (前者为服务器公网ip,后者为内网IP)

fingerprint (开启指纹)

lt-cred-mech (开启长期验证机制)

user=testuser:123456 (设置一个测试用户名及密码)

(ps: 获取外网地址:curl https://www.taobao.com/help/getip.php

获取内网地址:ifconfig)

五、亚马逊服务器控制后台开启相关端口及协议:

3478(tcp 、udp),5349(tcp、udp),49152-65535(udp)

六、开启turnserver:

 turnserver -v -r foo.org -c /etc/turnserver.conf 

(注意:其中 -r xxxx参数必须要带,xxxx自己定义)

七、测试(三种方式):

1.官网测试: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

add server之后,点击gather candidates ,若出现下方结果,则测试成功。

2.turnserver自带的客户端测试工具:
一个终端输入命令行:

turnutils_uclient -v -u testuser -w 123456 54.249.95.226(外网ip)

运行turnserver的终端出现以下类似结果,则显示测试成功。

830: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 54.249.95.226:37748
830: session 003000000000000001: user <>: incoming packet message processed, error 401: Unauthorised
830: IPv4. Local relay addr: 172.31.33.19:55550
830: IPv4. Local reserved relay addr: 172.31.33.19:55551
830: session 003000000000000001: new, username=<testuser>, lifetime=800
830: session 003000000000000001: user <testuser>: incoming packet ALLOCATE processed, success
830: session 003000000000000001: refreshed, username=<testuser>, lifetime=600
830: session 003000000000000001: user <testuser>: incoming packet REFRESH processed, success
830: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 54.249.95.226:33309
830: session 003000000000000002: user <>: incoming packet message processed, error 401: Unauthorised

3. 运行js测试代码:

参考网址:https://stackoverflow.com/questions/34030188/easy-way-to-test-turn-server

Chrome中的测试成功结果:

八、完成以上测试,说明turnserver已经正常运行,但是要想在signal服务中使用它,还需要修改相关配置:

编辑配置文件turnserver.conf:(只需启用和修改下面几项)

external-ip=54.249.95.226/172.31.43.68 (前者为服务器公网ip,后者为内网IP)

fingerprint (开启指纹)

lt-cred-mech (开启长期验证机制)

use-auth-secret  (开启secret形式授权 )

static-auth-secret=12345(# 设置secret,这个和signal服务配置文件里的turnserver的secret要一致,最好复杂点,注意最后别留空格)

signal 服务器配置文件中的相关配置:

turn: # TURN server configuration
  secret: 12345 # TURN server secret
  uris: 
    - stun:54.249.95.226:3478
    - stun:54.249.95.226:5349 # 5349是tls的,相当于443
    - turn:54.249.95.226:3478?transport=udp
    - turn:54.249.95.226:5349?transport=udp

九、测试两个用户聊天,成功结果:

236: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:5349, remote addr 223.104.63.195:62017
236: session 001000000000000006: user <>: incoming packet BINDING processed, success
236: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 223.104.63.195:62384
236: session 001000000000000007: user <>: incoming packet BINDING processed, success
236: session 001000000000000006: user <>: incoming packet message processed, error 401: Unauthorised
236: session 001000000000000007: user <>: incoming packet message processed, error 401: Unauthorised
236: IPv4. Local relay addr: 172.31.33.19:50740
236: session 001000000000000006: new, username=<1546160875:233093636>, lifetime=600
236: session 001000000000000006: user <1546160875:233093636>: incoming packet ALLOCATE processed, success
236: IPv4. Local relay addr: 172.31.33.19:64076
236: session 001000000000000007: new, username=<1546160875:233093636>, lifetime=600
236: session 001000000000000007: user <1546160875:233093636>: incoming packet ALLOCATE processed, success
237: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:3478, remote addr 218.17.158.166:44069
237: session 003000000000000007: user <>: incoming packet BINDING processed, success
237: handle_udp_packet: New UDP endpoint: local addr 172.31.33.19:5349, remote addr 218.17.158.166:15323
237: session 002000000000000008: user <>: incoming packet BINDING processed, success
237: session 003000000000000007: user <>: incoming packet message processed, error 401: Unauthorised
237: session 002000000000000008: user <>: incoming packet message processed, error 401: Unauthorised
237: IPv4. Local relay addr: 172.31.33.19:50703
237: session 002000000000000008: new, username=<1546160875:908806305>, lifetime=600
237: session 002000000000000008: user <1546160875:908806305>: incoming packet ALLOCATE processed, success
237: IPv4. Local relay addr: 172.31.33.19:54412
237: session 003000000000000007: new, username=<1546160875:908806305>, lifetime=600
237: session 003000000000000007: user <1546160875:908806305>: incoming packet ALLOCATE processed, success
237: session 001000000000000006: user <1546160875:233093636>: incoming packet CREATE_PERMISSION processed, success
237: session 001000000000000007: user <1546160875:233093636>: incoming packet CREATE_PERMISSION processed, success
238: session 001000000000000006: user <1546160875:233093636>: incoming packet CREATE_PERMISSION processed, success
238: session 001000000000000007: user <1546160875:233093636>: incoming packet CREATE_PERMISSION processed, success
238: session 002000000000000008: user <1546160875:908806305>: incoming packet CREATE_PERMISSION processed, success
238: session 003000000000000007: user <1546160875:908806305>: incoming packet CREATE_PERMISSION processed, success
。。。。。。

十、以守护进程运行turnserver:

turnserver -v -r foo.org -c /etc/turnserver.conf -o 


 


 

猜你喜欢

转载自blog.csdn.net/woshiwangbiao/article/details/85344357