前言
在前面的学习过程中,我们知道一个完整的非本机内的端对端连接中是需要一个sturn/turn服务器的。因为之前一直使用的公司后台搭建的sturn/turn服务器,再加上搭建这个coturn服务器需要linux系统等一些列原因,所以一直没有尝试过自己搭建中穿透服务器(主要还是因为自己懒)。
现在因为之前的失误,导致自己额外购买了一个百度云服务器,发现它可以随便换系统,便想着干脆试着尝试搭建一下coturn服务器。
一、安装Centos8图形化界面。
从来没用过linux系统的我,刚切换系统后简直要疯了。本来想着就这么折腾吧,结果实在受不了了,还是安装一个图形化界面比较舒服。经过一番百度,终于成功搭建出来。
其中,这篇文章对我帮助非常大,虽然我没能成功的安装好vnc远程连接,但是把图形化界面折腾出来了,少走了很多弯路。
1.1、安装图形桌面的软件包
在命令行界面,输入:
yum groupinstall "Server with GUI" -y
会有一个非常漫长的安装过程,当你最终看到下图界面时,则说明安装成功。
1.2、设置图形模式为默认模式启动
然后输入命令:
systemctl set-default graphical
1.3、重启后,即可登录图形化界面
百度云的Centos8重启方式为:通过系统自带的vnc远程链接后,点击右上角的发送Ctrl+Alt+Del即可重启
vnc就不挣扎了,尝试了一下午都不好使,永远有个东西无法安装上,将就下用系统自带的就行了。
2、开始安装coturn服务器
如何安装coturn服务器,我这里基本是参照这篇文章进行的,同时还邀请了一位后端开发同事协助,折腾了1个多小时,终于搞定。
2.1、修改host,以便能正常连接gitlab
打开图形化界面,找到/etc/hosts文件,打开,然后通过站点查询网址:
“github.com”A记录/cname检测结果--Dns查询|dns查询--站长工具
,查询到github延迟最低的一个ip地址,填入hosts文件中。
保存后,终于能够拉下github代码了。...其实我前面费了大把心思安装这个图形化界面,就是因为早上用ubantu系统安装cuturn的时候,第一步github代码都拉不下来,直接原地爆炸。
2.2、下载,编译,安装coturn
分别执行以下代码,每一行都是一句代码,需要前面执行成功后再执行后面。
git clone https://github.com/coturn/coturn
cd coturn
./configure
make
sudo make install
2.2.1、折磨部分,欧皇和大牛可以不看。
原以为我也能像文章里那样顺利,可现实又立马打了脸,出现什么不识别之类的东西,幸亏做后端的同事来支援了,他一看就说你这是执行了一个c++文件,需要安装对应的编译器。
于是一脸懵逼的执行下面的命令:
yum install gcc
再次执行./configure,嘿,还是不行。
查看报错信息,其实我压根也看不懂,但是意思大概就是缺这缺那的;既然这样,那就装呗!
报错的意思大概是说缺openssl,但是要先执行:
yum search openssl
然后出来一堆信息,找到其中有dev什么的信息那几行,例如这里有个名字叫 openssl-devel,这大概就是你需要安装的真正名称。
我问同事为啥不直接告诉我缺啥,我安装不就得了吗 ?
同事回答,因为不同系统不一样,命名方式都不同,所以只能给一个通用的名称,然后自己通过这个search命令查一遍,找到真正需要安装的名字巴拉巴拉之类的。
反正找到了,就继续装吧,执行:
yum install openssl-devel
等安装完毕后,再次执行./configure,诶嘿,还是不行。
这次又是缺啥呢,好家伙,libevent,再查:
yum search libevent
这一查就懵逼了,有2个含有dev的,libev-libevent-devel和libevent-devel,咋办呢。傻办法,一个个的试吧,同事嘀咕了一句希望别起冲突啥的我没听懂。
先安装libev-libenent-devel试试:
yum install libev-libenent-devel
再次执行./configure,嘿嘿,果然不行,那么就应该是你了,libevent-devel
可是安装libevent-devel的时候却报错了,原来这就是同事所说的冲突。
既然冲突了,那就先卸载旧的吧,卸载命令:
yum remove libev-libenent-devel
卸载成功后再次安装:
yum install libevent-devel
最后再次执行./configure,啊,成功了!没有error,成功!
然后依次执行后续的
./configure
make
sudo make install
折磨部分到此完毕。
2.3、记录内网,外网ip地址。
在命令行输入:ifconfig
ifconfig
这里,我的内网地址是:192.168.0.4
外网地址是:106.13.195.28
这个eth0好像是网卡之类的,反正后面设置有用,需要记下来。
2.4、关闭防火墙
在参考的文章中,原作者是使用的阿里云服务器,阿里云服务器是自带安全策略组的,可以在阿里云的控制台中直接设置端口配置。
而这里我使用的是百度云的服务器,控制台里除了更换系统和续费啥都没有,所以只能自己到系统里手动开放端口。
这里我不会弄,于是后端同鞋直接帮我把防火墙关闭了。
命令是:
systemctl status firewalld
然后还按了个啥按键我忘了,大概就是禁用或者关闭之类的意思。
2.5、修改coturn服务器的配置文件
这一步非常重要。
首先找到这个文件,路径为:/usr/local/etc/turnserver.conf
这个带有default的是系统自动生成的,我们复制一份,然后重命名一下为turnserver.conf即可。
打开该文件,会发现里面有很多内容,但大部分都是处于被注释的状态。
其实这就是文档和示例,我们需要修改的内容有以下部分:
listening-ip与relay-ip采用内网ip,external-ip是外网的ip。
relay-device=eth0
listening-ip=172.17.232.28 内网ip
listening-port=3478
tls-listening-port=5349
relay-ip=172.17.232.28
external-ip=39.105.105.159 外网ip
relay-threads=50
lt-cred-mech
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
pidfile="/var/run/turnserver.pid"
min-port=49152
max-port=65535
user=username:password 这是你自己输入的用户名和密码。
举个例子,这里需要修改#relay-device=eth1这一行,
前面我们查询到了使用的网卡是eth0,所以我们需要把这一行注释解开,并且修改eth1为eth0
2.6、关于openssl证书。
细心的同学可能会发现,我并没有按照原文章那样配置openssl,导致cert和pkey的缺失。
那是因为我根据文章执行命令时,一直提示:
req:Use -help for summary
这导致我无法配置成功openssl,不过后面发现,即使不配置也可以连通成功,只是无法使用https地址访问。
2.7、运行coturn服务器。
最后运行coturn服务器,运行命令为:
turnserver -o -a -f --user=用户名:密码 -r Guangdong
但哪有那么顺利!
大概意思是我没有设置cli密码什么的,我去哪设置啊。
继续回到turnserver.conf文件,找到这样一行:
#no-cli
解开这一行的注释!
再次运行,成功!
2.8、测试ice服务器连通性。
测试地址:
relay地址回来的是我的ip,说明穿透成功!