kamailio设置

来源:互联网 发布:fanuc铣孔螺旋下刀编程 编辑:程序博客网 时间:2024/04/30 20:33
Kamailio是一个开源的SIP服务器,原名OpenSER.

Kamailio is an Open Source, GPL2, SIP Server Routing Platform. It is written in C for Linux/Unix plaforms and focuses on performance, flexibility and security. 

kamailio(OpenSER)源码安装说明:

1.    untar src package to /usr/local/src/kamailio 

2.    vi Makefile.vars to enable mysql and presence modules

## Compile MySQL modules - debian-require: libmysqlclient-dev

MODS_MYSQL=on 

## Compile Presence modules - debian-require: libxml2-dev libcurl3-dev

MODS_PRESENCE=on 

3.    make install 

4.    cd /usr/local/etc/kamailio

# *** To enamble mysql execute:

     sed -i 's/#m#//g' kamailio.cfg

# *** To enamble presence server execute:

     sed -i 's/#p#//g' kamailio.cfg 

5.    vi /usr/local/etc/kamctlrc

SIP_DOMAIN=wangxf.com

DBENGINE=MYSQL

DBHOST=localhost

DBNAME=openser

DB_PATH="/usr/local/etc/kamailio/dbtext"

DBRWUSER=openser

DBRWPW="openserrw"

DBROUSER=openserro

DBROPW=openserro

DBROOTUSER="root" 

6.    install mysql server 

7.    cd /usr/local/sbin

//create database tables

kamdbctl create 

8.    //start kamailio service

kamctl start 

9.    //monitor kamailio

kamctl moni

注:如果不使用数据库,可以省略2.4.5.6.7步骤

kamailio(OpenSER)转发配置,主要由dispatcher模块负责,大致对应于sipXecs中的dialplan,其中的uri部分是正则表达式

目标:

         打给5900的电话转发到第一组的第一台服务器

         打给400的电话转发到第二组的第二台服务器

打给500的电话在第二组的服务器间轮训 

1. 编写/usr/local/etc/kamailio/dispatcher.list

################################################################################

# line format

# group  sip addresses of your * units

     1       sip:192.168.90.67:15060

     1       sip:192.168.90.68:15060

     2       sip:192.168.90.222:5150

     2       sip:192.168.90.223:5150

#####注意这里配置了2组sip服务器,每组有2个成员,下面的转发配置中会用到此设置###### 


2. 修改/usr/local/etc/kamailio/kamailio.cfg

################################################################################

...

loadmodule "dispatcher.so"

modparam("dispatcher", "list_file", "/usr/local/etc/kamailio/dispatcher.list")

 #####

route {

         if (!mf_process_maxfwd_header("10")) {

                   sl_send_reply("483","Too Many Hops");

                   exit;

         } 

         if (method=="INVITE" && uri=~"sip:5900@.*")

         {

                   ds_select_dst("1", "0"); #转发到第一组的第一台

                   forward();

                   exit;

         }

         if (method=="INVITE" && uri=~"sip:400@.*") 

         {

                   ds_select_dst("2", "1");   #转发到第二组的第二台

                   forward();

                   exit;

         } 

         if (method=="INVITE" && uri=~"sip:500@.*") 

         {

                   ds_select_dst("2", "2");   #在第二组轮训

                   forward();

                   exit;

         } 

         ...

}

###

转自:http://blog.csdn.net/askcyg/article/details/4742741

原创粉丝点击