setup sip record

安装配置opensips过程记录

本文操作系统为CentOS,所用Opensips版本为1.8.2。

Update2013/6/27: 版本1.9.1也已验证通过,下载地址为http://opensips.org/pub/opensips/latest/src/opensips-1.9.1_src.tar.gz

安装CentOS

(若已有环境可跳过此步骤)

1、安装虚拟机,VMWare Server 2.0遇到问题无法显示console(Chrome里),换为Virtualbox 4.2后可正常使用;

2、在虚拟机里安装CentOS 6.3,选择standard server类型安装。

对这种纯命令行界面的虚拟机,可以用telnet直接访问,操作剪贴板什么的比较方便;

若虚拟机映射的网卡没有自动启动,用ifup eth0命令启动。

若(Virtualbox的)虚拟机是复制过来的,可能需要先删除 /etc/udev/rules.d/70-persistent-net.rules,再修改/etc/sysconfig/network-scripts/ifcfg-eth0里的HWAddr地址。

若需要配置网卡ip地址,先ifconfig -a查看网卡设备号和MAC地址,然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,示例如下:

DEVICE="eth0"
BOOTPROTO="none"
HWADDR="08:00:27:81:30:F4"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="dcd43c45-adf4-480b-b461-179ee8d2e8d6"
IPADDR=192.168.1.120
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

在/etc/resolv.conf里指定dns以便安装软件包(CentOS6以后可以在ifg-eth0里指定dns了)

nameserver 202.181.202.140
nameserver 208.67.220.220

安装Opensips(根据官方的Tutorial视频整理的主要步骤)

opensips提供了一个视频教程(这个页面有下载链接,90M),推荐使用menuconfig方式,更方便且不容易出错。以下为步骤摘要:

yum install gcc make
yum install flex bison ncurses libncurses-dev ncurses-devel
yum install mysql mysql-server mysql-libs mysql-devel

wget http://opensips.org/pub/opensips/1.8.2/src/opensips-1.8.2_src.tar.gz
tar zxvf opensips-1.8.2_src.tar.gz
cd opensips-1.8.2-tls

make menuconfig (勾选db_mysql,其他不用动)
菜单里选"Compile And Install Opensips"
退出menuconfig

vi /usr/etc/opensips/opensipsctlrc,把与mysql有关的注释去掉(DB_PATH和USERCOL保留注释)
service mysqld start
opensipsdbctl create(提示的两个问题都选no)
osipsconfig (选择ENABLE_TCP,USE_AUTH,USE_DBACC,USE_DBUSERLOC,USE_DIALOG,然后generate residential script)
用生成的opensips_residential_xxx.cfg替换原先的opensips.cfg

vi /usr/etc/opensips/opensips.cfg (改listen地址和mpath,后者一般是/usr/lib/opensips/modules)
opensipsctl start (netstat -anp查端口)
service iptables stop (关闭防火墙)

如果启动opensips时提示错误,检查/var/log/messages(若opensips.cfg里设置了log_stderror=no则日志都进入此文件,链接),一般是模块参数未设置引起的。例如在log里发现“ERROR:uri:db_checks_fixup1: configuration error - no database URL is configured!”,则在opensips.cfg里的“loadmodule "uri.so"”后添加modparam("uri", "db_url","mysql://opensips:opensipsrw@localhost/opensips")即可。

创建测试用户:

opensipsctl add 101 101

如果创建用户时提示“ERROR: domain unknown: use usernames with domain or set default domain in SIP_DOMAIN”,可修改opensipsctlrc文件将SIP_DOMAIN设为本机域名或IP地址。

进一步配置Opensips

设置日志输出方式

在opensips.cfg里有几个参数控制日志的输出:

debug=3 #此值控制日志输出的详细程度,3为普通,4为详细(会产生很多日志)。
log_stderror=no #设置为no表示将日志输出到文件,否则输出到控制台(应该是以前台方式启动opensips服务时才有用)。
log_facility=LOG_LOCAL0 #应该是用于在syslog服务的配置文件里区分opensips产生的日志(见下面“使用独立的log文件”)。
fork=yes #设置为yes表示在后台启动opensips服务,设置为no表示在前台启动。

使用独立的log文件

opensips使用syslog服务,所以缺省情况下日志会进入/var/log/message这个文件,如果希望使用独立的log文件,可以这样设置:

touch /var/log/opensips.log
vi /etc/rsyslog.conf  --> 增加一行:local0.*             /var/log/opensips.log
/etc/init.d/rsyslog restart

配置STUN模块

opensips自带一个stun模块,可以实现stun服务器的功能(需要双网卡)。配置方法也很简单(官方文档),在opensips.cfg里添加如下内容:

#### STUN module
loadmodule "stun.so"
modparam("stun", "primary_ip", "11.22.33.44") #opensips服务器的ip地址
modparam("stun", "primary_port", "5060") #必须与opensips的udp端口相同(一般是5060)
modparam("stun", "alternate_ip", "55.66.77.88") #另一网卡的ip地址
modparam("stun", "alternate_port", "3479") #另一端口号

配置好stun以后,可以使用stun-client来测试,以windows下为例,测试命令为:

stun-client-0-96.exe 11.22.33.44:5060 -v

安装配置RTPProxy模块

rtpproxy模块通常与nathelper模块一起使用。首先要确保服务器上已经安装了rtpproxy,启动rtpproxy:

rtpproxy -F

然后在opensips.cfg文件里做如下配置:

loadmodule "rtpproxy.so"
modparam("rtpproxy", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock") # CUSTOMIZE ME

安装配置MediaProxy模块

MediaProxy官方文档链接

一个在CentOS6上安装MediaProxy2.5.2的参考链接

下载mediaproxy源码(和所需要的各种依赖包),并安装(过程略)。安装完成后:

把config.ini.sample复制到/etc/mediaproxy/config.ini,把tls目录也复制过来。

echo 1 > /proc/sys/net/ipv4/ip_forward

media-dispatcher restart

media-relay restart

在opensips.cfg里配置mediaproxy模块,如下:

#### MediaProxy module
loadmodule "mediaproxy.so"
modparam("mediaproxy", "disable", 0)
#modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy/dispatcher.sock")
modparam("mediaproxy", "mediaproxy_timeout", 500)
modparam("mediaproxy", "signaling_ip_avp", "$avp(nat_ip)")
modparam("mediaproxy", "media_relay_avp", "$avp(media_relay)")

若mediaproxy提示“No suitable relay found”,可能是certification方面的问题。 参考链接

(未完)

抓取SIP包

在Opensips所在服务器上使用tcpdump可以抓取SIP包以便分析问题(注意要抓取的网卡是eth0或eth1):

tcpdump -nqt -s 0 -A -i eth0 port 5060 -w /home/capture_file_name.pcap

参考:http://jonathanmanning.com/2009/10/26/how-to-voip-sip-capture-with-tcpdump-on-linux/

要抓手机上的包稍微复杂一些,要先root手机,然后把tcpdump复制到手机上使用:

adb shell
su
tcpdump -nqt -s 0 -w /sdcard/packets_xx.pcap
adb pull /sdcard/packets_xx.pcap

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值