高性能stun服务器搭建,STUN/TURN服务器搭建

STUN/TURN服务器搭建

编译安装

编译安装 OpenSSL;

sudo apt-get install libssl-dev

编译安装 libevent 最新版;

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

tar xvfz libevent-2.0.21-stable.tar.gz

cd libevent-2.0.21-stable

./configure

make

sudo make install

coturn 可以选择使用多种数据库,这里使用的是 SQLite ,使用命令sudo apt-get install sqlite (or sqlite3) 和 sudo apt-get install libsqlite3-dev (or sqlite3-dev) 安装;

编译coturn;

下载coturn

tar xvfz turnserver-<...>.tar.gz

./configure

make

sudo make install

执行 ./configure 命令时没有使用 --prefix=/opt 参数,因为 OpenSSL 是通过 apt-get 安装在默认位置,如果安装到其他位置 libevent 会找不到 OpenSSL 库文件。

安装完成后在 bin 目录下生成六个可执行文件:

turnserver - STUN/TURN 服务器

turnadmin - 用于配置、管理账户

turnutils_stunclient - 用于测试 STUN 服务

turnutils_uclient 用于测试 TURN 服务,模拟多个UDP、TCP、TLS 或 DTLS 类型的客户端

turnutils_peer

turnutils_rfc5769check

配置使用

添加用户

$ sudo turnadmin -a -u you_name -p you_password -r you_realm

这里默认使用了 SQLite 数据库,其中 -a 表示添加一个 long-term 用户,-u 为用户名,-p 为密码,-r 为该用户所属的 Realm。在启动 turnserver 时需要指定 Realm ,只有该 Realm 下的用户才能登录。

注意一定要使用 root 权限配置,否则会配置失败,但是还没有错误提示。

启动server

配置完用户后就可以启动 turnserver 了,第一次启动前需要一个配置文件,这是使用模板生成,然后就可以启动 turnserver 了。

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

sudo turnserver -a -f -v -r lynky

其中 -a 表示使用 long-term 机制, -r 为指定的 Realm ,只有该 Realm 下的用户可以使用服务器。

测试

STUN

使用下面的命令即可测试 STUN 服务使用可用,唯一此参数是 STUN 服务器的 IP地址或域名。

turnutils_stunclient 132.232.100.103

TURN

使用下面的命令即可测试 TURN 服务使用可用,值得注意的是必须使用 turnserver 启动时指定 Realm 下的用户。

turnutils_uclient -u lynky -w lynky123 132.232.100.103

开机启动

修改/etc/turnserver.conf

listening-ip=127.0.0.1

listening-ip=172.16.0.99 # 内网ip

external-ip=221.208.117.45 # 公网ip,如果服务器在NAT后需要指定该参数

fingerprint

lt-cred-mech

realm=

添加/etc/systemd/system/turnserver.service

[Unit]

Description=coturn

Documentation=man:coturn(1) man:turnadmin(1) man:turnserver(1)

After=syslog.target network.target

[Service]

Type=forking

PIDFile=/var/run/turnserver.pid

ExecStart=/usr/local/bin/turnserver --daemon --pidfile /var/run/turnserver.pid -c /etc/turnserver.conf

ExecStopPost=/usr/bin/rm -f /var/run/turnserver.pid

Restart=on-abort

LimitCORE=infinity

LimitNOFILE=999999

LimitNPROC=60000

LimitRTPRIO=infinity

LimitRTTIME=7000000

CPUSchedulingPolicy=other

然后执行以下命令

# 使服务自动启动

sudo systemctl enable turnserver.service

# 启动服务

sudo systemctl start turnserver

# 停止服务

sudo systemctl stop turnserver

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值