我们都知道使用VOIP网络电话,需要连接上sip服务器,这样用户之间才可以通信。
这里我着重讲解下如何在ubuntu下搭建OpensSIPS服务器,OpenSIPS是一个成熟的开源SIP服务器,除了提供基本的SIP代理及SIP路由功能外,还提供了一些应用级的功能。OpenSIPS的结构非常灵活,其核心路由功能完全通过脚本来实现,可灵活定制各种路由策略,可灵活应用于语音、视频通信、IM以及Presence等多种应用。同时OpenSIPS性能上是目前最快的SIP服务器之一,可用于电信级产品构建。凭借其可扩展、模块化的系统架构,OpenSIPS提供了一个高度灵活的、用户可配置的路由引擎,可以为voice、video、IM和 presence等服务提供强大高效的路由、鉴权、NAT、网关协议转化等功能。由于其稳定高效等特点,OpenSIPS已经被诸多电信运营商应用在自己的网络体系中。
一.前提条件:
(1)mysql已经配置好
1 sudo apt-get install mysql-server
2 sudo apt-get isntall mysql-client
3 sudo apt-get install libmysqlclient-dev
(2)如果找不到curses.h,安装sudo apt-get install libncurses5-dev
二.安装:
1. 下载 opensips
我使用的是1.8版本,即可以git下来
git clone https://github.com/OpenSIPS/opensips.git -b 1.8 opensips_1_8
2. 解压后,进入opensips目录
make all ,如果出错,一般是缺少一些编译工具,直接sudo apt-get install xxx(相应的工具)
make install
可能设置到权限不足的问题,为了省事,我们不妨在root用户下进行操作
三.配置
1.opensips数据库
cd /usr/local/etc/opensips/查看发现有三个文件,分别是opensips.cfg opensipsctlrc osipsconsolerc,然后vim将其对应的ip地址修改成自己主机上的。
2.开启数据库
/usr/local/sbin/opensipsdbctl create
如果出现以下错误
“ERROR: could not load the script in /usr/local/lib/opensips/opensipsctl/opensipsdbctl.mysql for database engine MYSQL
ERROR: database engine not loaded - tried 'MYSQL'”
则
1 cd /usr/local/lib64/opensips/opensipsctl/
2 cp $(你的opensips目录)/scrips/*.mysql ./
3 mkdir mysql
4 cp $(你的opensips目录)/scrips/mysql/*.sql ./mysql
5 cd /usr/local/share/opensips
6 cp $(你的opensips目录)/scrips/*.mysql ./
7 mkdir mysql
8 cp $(你的opensips目录)/scrips/mysql/*.sql ./mysql
如果ubuntu是32位的话,则为/usr/local/lib/opensips/opensipsctl
成功后,会有两个选项,全选y
3.察看设置是否正确
/usr/local/sbin/opensipsctl -c
四.使用
1.开启opensips服务
/usr/local/sbin/opensipsctl start
关闭stop 重启restart
ERROR: PID file/var/run/opensips.pid does not exist -- OpenSIPS start failed.
2.添加sip用户
/usr/local/sbin/opensipsctl add username password 如:/usr/local/sbin/opensipsctl add 100 100
可以使用/usr/local/sbin/opensipsctl rm 100删除用户。
如果出现ERROR: domain unknown: use usernames with domain or set default domain in SIP_DOMAIN,说明环境变量未配置,所以vim /etc/environment,在里面写入SIP_DOMAIN="你的IP Domain",而后再source下即可
默认的数据库用户为opensips,密码为opensipsrw,当然你也可以设置成对应的用户,直接在/usr/local/etc/opensips的配置文件修改对应的DBRWUSER,DBRWPW
3.查看sip用户
可以使用mysql -u root -p而后输入你的密码,就能够通过show databases;查看数据库,再使用use opensips;并且show tables;就可以查看opensips数据库里的表格,最后使用select * from subscriber;便能够查看添加的sip用户情况
4.可随意找一款网络电话进行测试,如sipdroid或linphone,设置用户信息,发现仍然连接不上,这到底是什么原因呢?我查了很久,才发现是由于对应默认的端口5060未打开,因而使用sudo ufw allow 5060。再次测试,总算连接成功,而后就可以愉快地进行通话喽!!!下面就是我测试成功的结果:
注意:如若不是公网IP,手机与服务器要确保在同一区域网里