前提:双网卡服务器
stun
什么STUN
STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户 端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于 NAT路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。目前RFC 3489协议已被RFC 5389协议所取代,新的协议中,将STUN定义为一个协助穿越NAT的工具,并不独立提供穿越的解决方案。它还有升级版本RFC 7350,目前正在完善中。
下载、安装stun
上github下载源码包
https://github.com/jselbie/stunserver
更新系统
yum update -y
解压文件后进入目录
安装依赖
sudo yum groupinstall "Development Tools" # For g++, make, et. al.
sudo yum install boost-devel # For Boost
sudo yum install openssl-devel # For OpenSSL
编译
make
make后会生成stunserver、stunclient、stuntestcdoe三个文件
stunserver是server文件
stunclient是客户端文件
查看帮助信息
./stunserver --help
--mode 指定模式。有"basic"和"full"两种模式
--primaryinterface指定第一个监听的本机ip地址或网卡
--altinterface 指定第二个监听的本机ip地址或网卡
--primaryport 指定第一个监听的端口(默认3478)
--altport 指定第一个监听的端口(默认3479)
--family 网络类型,4表示IPV4,6表示IPV6
--protocol 指定网络连接类型,udp或tcp,默认为udp
--maxconn 设置最大连接数
--verbosity 设置日志级别,0最少,1其次,2较多,3最多。默认0
--ddp 分布式拒绝访问。开启此选项时如果客户端以过多的数据包冲击服务器端将被短时间的拒绝访问,该IP后续的数据库将被删除。
--primaryadvertised
--altadvertised --primaryadvertised和--altadvertised用于设置公网ip,必须使用full模式,仅当你的stunserver运行在NAT后面的私有环境时使用。如经过内外端口映射,经过服务转发等。
--configfile 指定配置文件
--help 查看帮助信息
经过防火墙地址转换后的用法:
nohup ./stunserver --mode full --primaryinterface IP1 --altinterface IP2 --primaryadvertised public IP --altadvertised public IP
turn server
官方网址:http://turnserver.sourceforge.net/index.php?n=Main.HomePage
什么是turn
百度百科
TURN协议允许NAT或者防火墙后面的对象可以通过TCP或者UDP接收到数据。这在使用了对称式的NAT(或者防火墙)的网络中尤其具有实用价值 。
TURN的全称为Traversal Using> 使用环境:
内网openfire服务器提供视频服务,用stunserver转发外网。。。。。。反正就是stunserver不行,无法穿透,无法保证视频通话的成功率,就用turnserver了
下载页面
http://turnserver.sourceforge.net/index.php?n=Main.Download
安装
安装confuse依赖库
wget http://savannah.spinellicreations.com/confuse/confuse-2.7.tar.gz
tar axf confuse-2.7.tar.gz
cd confuse-2.7
./configure
make && make install && echo $?
安装libconfuse-devel
yum install libconfuse-devel -y
将下载的turnserver-0.7.3.tar.bz2 传上来,然后解压
tar axf turnserver-0.7.3.tar.bz2
编译安装
cd turnserver-0.7.3
./configure
make && make install && echo $?
生成并修改配置文件
cp extra/turnserver.conf.template /etc/turnserver.conf
vim /etc/turnserver.conf
#"修改转发地址,公网地址" listen_address ={ “8.8.8.8”,"114.114.114.114" }
#“修改监听端口,默认3478”
udp_port = 3478
tcp_port = 3478
#“使用后台服务,默认为false”
daemon = true
#"设置网络限制,0表示无限制"
restricted_bandwidth = 0
#“指定认证文件”
account_file = "/etc/turnusers.txt"
生成并修改认证文件
cp extra/turnusers.txt.template /etc/turnusers.txt
toto:password:domain.org:authorized
toto是默认用户,password是默认密码,后面的是固定格式,修改用户名和密码即可
coturn (turn)(推荐使用)(建议使用centos7及以上版本安装)
coturn是turn的升级版,同一作者,老的turn作者已经不再维护,下的coturn下载需要去githup,建议使用coturn
githup地址:https://github.com/coturn/coturn/tree/master
安装coturn
下载好后进入安装目录
查看INSTALL文件,里面安装过程讲解的非常详细(啰嗦)
安装依赖
yum install gcc gcc-c++ openssl-devel libevent2 libevent2-devel
如果报错 libevent2 和 libevent冲突就卸载 libevent装libevent2,如果yum源没有libevent2就去下rpm包或源码包,如果还有其他报错就按报错处理
编译安装
使用c++代替c编译
CC=g++ ./configure
make && echo $?
安装完成后会生成(centos7会在coturn的安装目录下的bin目录生成执行文件)
/usr/local/bin/turnadmin
/usr/local/bin/turnserver
/usr/local/bin/turnutils_natdiscovery
/usr/local/bin/turnutils_oauth
/usr/local/bin/turnutils_peer
/usr/local/bin/turnutils_stunclient
/usr/local/bin/turnutils_uclient
centos7 修改环境变量
vim /etc/profile
#COTURN
export COTURN_HOME=/coturn-master
export PATH=$PATH:${COTURN_HOME}/bin
source /etc/profile
配置
生成证书
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
生成认证文件(MD5密码)
turnadmin -k -u USERNAME -r REALM -p PASSWORD >/etc/turnuserdb.conf
生成主配置文件
cp examples/etc/turnserver.conf /etc/turnserver.conf
修改配置文件(按照里面的说明逐个添加即可)(一下是我的配置)
listening-port=PORT #“默认3478”
tls-listening-port=PORT #"默认5349"
listening-ip=IP1 #"监听地址"
relay-ip=IP2 #"转发地址,可以和监听地址一样"
external-ip=public #“公网IP”
min-port=48000 #“连接使用最小端口”
max-port=49000 #"连接是使用最大端口"
lt-cred-mech #“使用证书认证(证书认证和静态身份认证不能同时使用)”
# static-auth-secret=USERNAME #“使用静态身份认证,后面指定的是用户名”
user=USERNAME:PASSWORD #”用户名1:密码1“
user=USERNAME:MD5 #“用户名2:密码2(密码2为)/etc/turnuserdb.conf中的值”
sha256 #“指定加密算法”
userdb=/etc/turnuserdb.conf #“database文件名,自动上面生成的文件”
realm=REALM #“域,需要与turnadmin创建认证信息时指定的一样”
stale-nonce #"nonce生命周期,如果像这里不指定具体的值则使用默认值600(秒)"
cert=/etc/turn_server_cert.pem #"指定认证文件"
pkey=/etc/turn_server_pkey.pem #"指定认证文件"
no-loopback-peers #"安全设置,禁止环回网卡"
no-multicast-peers #"安全设置,禁止知名广播地址"
mobility #"支持mobility"
no-cli #"禁止CLI,默认运行"
启动服务
/usr/local/bin/turnserver -L LISTEN-IP -o -a -b /etc/turnuserdb.conf -f -r REALM
连接测试
turnutils_uclient -u USERNAME -w PASSWORD -p PORT -v LISTEN-ADDRESS
-u 指定用户 -w密码-p端口 -v使用Verbose,最后指定监听端口
单网卡配置方式
vim /etc/turnserver.conf
listening-port=3478
listening-ip=IP #"私网ip"
external-ip=public/private #"公网ip"
min-port=49152 #“连接使用最小端口”
max-port=65535 #“连接使用最大端口”
lt-cred-mech
user=USERNAME1:PASSWORD1
user=USERNAME2:PASSWORD2
userdb=/etc/turnuserdb.conf
realm=REALM
stale-nonce=600
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
mobility
no-cli
启动服务
turnserver -o -a
连接测试
turnutils_uclient -v -t -T -y -u USERNAME -w PASSWORD IP
如下说明成功
参考文档
COTURN服务器使用
:http://blog.csdn.net/day_day_up1991/article/details/52253892
STUN和TURN技术浅析请
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com