opensips安装与配置

1,下载

         openSIPS主页

         http://www.opensips.org/

         下载方式

         1,svn : svn cohttps://svn.code.sf.net/p/opensips/svn/ opensips

         2,git : git clonehttps://github.com/OpenSIPS/opensips.git -b 1.8 opensips_1_8

 

2,编译与安装

         编译环境搭建

         可能需要安装的一些lib包括如下:

         apt-getinstall gcc bison flex make openssl libmysqlclient-dev libradiusclient-ng2libradiusclient-ng-dev mysql-server libxmlrpc-c3-dev

        

         以1.8LTS版本为例        

         推荐使用menuconfig来统一管理编译和安装。

         1,apt-getinstall libncurses5-dev

         2,makemenuconfig进入配置界面,选择第一个"Configure compile Options"进行openSIPS的配置。并通过第二个"compileAnd Install OpenSIPS"进行安装。

         3,配置完之后 makeinstall 进行安装,默认安装到/usr/local目录

 

3,安装完成之后包括以下几个路径

         1,配置文件路径  /etc/opensips

         2,依赖.so 路径/lib/opensips/modules

         3,Binaries路径 /sbin

 

4,运行opensips

         执行opensips -h查看opensips帮助。

         执行opensips -c可以检测当前配置文件是否存在错误。

         配置文件为usr/local/etc/opensips.cfg,检测包括配置文件是否存在,是否存在语法错误等。

         启动opensips服务 使用命令 sudo opensipsctlstart ,若启动中出现错误,可查看/var/log/syslog中的log信息进行定位,一般情况下都是与配置文件相关的错误。

         停止opensips服务,使用命令 sudoopensipsctl stop。详细命令可-help查看。

 

5,opensips.cfg配置文件

         若安装到/usr/local中,则配置文件位于/usr/local/etc/opensips 中。  

         opensips.cfg包括三个部分:

         1,#####globalparameters #################

                   这部分主要是配置debug,监听ip及端口,tcp/udp等信息,

                   其中listen 初始化为listen=udp:127.0.0.1:5060需要修改为本机的ip,以172.22.197.159为例,修改如下:

                   listen=udp:172.22.197.159:5060

                   修改这个之后,可以尝试最简单的使用,通过设置两个客户端如(mirocSIP或者skySip)的server地址,可以提供无认证功能的简单呼叫服务。

         2,######ModulesSection###########

                   该部分是选择并载入各种模块,根据功能不同,配置不同的模块进去,

                   使用loadmodule"xxx.so"  载入模块。

                   使用modparam("xxx","param",value)将载入的xxx模块中的param设置为value。

 

         3,#####RoutingLogic#########

                   该部分为路由策略,主要描述了处理各种sip信令的业务逻辑。

                   如处理INVITE的流程,处理BYE的流程等。

 

6,opensipsctlrc 配置文件。

         该配置文件为opensips控制台的一些配置,包括了DBENGINE等的配置信息。

 

 

 

增加MYSQL及登录认证功能方法:

         1,需要先搭建MySql环境。

         2,修改opensips.cfg文件。

                   1,载入module :

                            loadmodule"db_mysql.so"

                            loadmodule"usrloc.so"

                            loadmodule"auth.so"

                            loadmodule"auth_db.so"

                   2,      配置所载入的module :

                            modparam("usrloc","nat_bflag","NAT")

                            modparam("usrloc","db_mode",2)

                            modparam("usrloc","db_url","mysql://opensips:opensipsrw@localhost/opensips")

                            modparam("auth_db","calculate_ha1",1)

                            modparam("auth_db","password_colum","password")                                    modparam("auth_db","db_url","mysql://opensips:opensipsrw@localhost/opensips")

                            modparam("auth_db","load_credentials","")

                   3,  修改脚本处理逻辑

                            增加对register的处理

                            if(is_method("REGISTER"))    // 对 REGISTER请求进行处理的逻辑

                            {

                                     if(!www_authorize("","subscriber"))  // 判断是否能subscriber成功

                                     {

                                               www_challenge("","0");  // 若不成功则执行challenge

                                               exit;

                                     }

                                     if(!db_check_to())

                                     {

                                               sl_send_reply("403","Forbiddenauth ID");

                                               exit;

                                     }

                            }

         抓包发现信令交互如下:

         这里抓包使用ngrep 命令

         安装 apt-getinstall ngrep

         抓包 ngrep -p-q -W byline port 5060  >  test.txt (默认使用的5060端口) 

         第一次REGISTER 信息如下,里面没有附带任何认证信息。


 

然后服务器给无情的拒绝了,通过www_challenge("","0");返回一个401,但是附带着一个nonce的串“54222xxxxx...”。


 

客户端不放弃,再注册一次,这次注册时附带着上次被拒绝时的nonce信息,然后根据自身password计算一个response信息。


这样不放弃有了回报,客户端成功的在服务器上进行了Register。

 

 

可以通过opensipsctl online 查看的当前系统在线的用户数。

 

TIPS:

         1,网上资料的一些资料不靠谱,主要原因是opensips的开发更新比较快,一般网上的资料太旧。现在这个文档过俩月说不定就会过时了,建议直接去http://www.opensips.org/官网去查看Manuals。

         2,如果配置文件出问题,可通过opensips -c 先对配置文件进行语义语法检测,若存在问题,可以去http://www.opensips.org/Documentation/Modules-1-12查看相关版本所出问题的module的manuals,可以快速定位错误。

         3,如果opensips-c 检测不到错误,而在opensipsctl start 启动opensips服务时出错,可查看/var/log/opensips.log(需要配置log路径,默认是写到/var/log/syslog文件中,配置方法各个linux系统有些区别,ubuntu下面流程如下:

         >>>>  opensips.cfg 中设置log_facility=LOG_LOCAL0 

         >>>>>  touch /var/log/opensips.log 

         >>>>>在/etc/sysylog.conf 中增加$IncludeConfig /etc/sysylog.d/*.conf  

         >>>>>在etc/syslog.d/50-default.conf 中增加local0.*  -/var/log/opensips.log 

         >>>>> rsyslog restart重启服务)。

         4,对于opensipsc fg 文件的配置,方式比较固定:

                   首先需要loadmodule。

                   然后设置参数,使用modparam("module_name","param_name","value")设置。

                   最后修改处理的逻辑。

你可能感兴趣的:(opensips)