resiprocate使用入门:内网搭建基于repro的sipproxy测试环境
测试环境
sipproxy:repro + centos
客户端:windows电脑客户端使用X-Lite,手机andriod客户端使用linphone
repro配置和启动
log的配置
如果使用默认的log配置,则log级别是INFO,且所有log都打印到标准输出。如果要输出到文件,则做如下类似配置:
########################################################
# Log settings
########################################################
LoggingType = file
LogLevel = STACK
#指定log文件路径
LogFilename = ../log/repro.log
- 1
- 2
- 3
- 4
- 5
- 6
- 7
web地址设置
如果要通过网页操作repro的相关配置,则需要将HTTP的地址改成repro所在机器的ip。端口默认配置是5080。我的repro机器ip是172.16.12.29,则配置如下:
HttpBindAddress = 172.16.12.29, ::1
- 1
- 2
启动repro
./repro
创建domain、user以及route
浏览器登陆repro的控制页面:
172.16.12.9:5080
- 1
提示输入用户名和密码,默认都是admin,登陆成功后点击login,界面如下:
创建domain
任何user都必须要属于某个domain,repro会根据domain去路由下一跳。创建domain界面如下,端口可以不填,域名随便输入。 创建domain后,会显示在下面的列表中。
特别注意的是:
(1)创建domain后,需要重启repro。
(2)域名可以是字符串,也可以直接使用repro 的ip地址。如果是字符串,就需要配置DNS规则。比如我创建 test.sipproxy.cn,则需要将这个域名DNS到proxy上。最简单的就是配置到/etc/hosts上。否则会出现480 NO DNS错误。
创建user
输入用户名,选择domain,输入密码,add即可。
创建route
这一步不是必要的,但是我们拨打的时候,习惯输入数字号码,而不是用户名。所以通过创建route来实现数字号码到用户名的映射。按照提示正确输入URI和Destination。
客户端登陆
经过以上步骤,就有用户了:
比如我有两个用户:test3@test.sipproxy.cn和test4@test.sipproxy.cn
对应的号码分别是33333和44444
电脑上X-lite登陆:
手机上linphone登陆:
登陆成功后,repro控制页面上可以看到相关登陆注册的信息:
测试结果
在test3上拨打号码44444,拨打成功。抓包,flow图如下:
遇到的问题
(1)域名一定要配置DNS
(2)如果域名用的是repro的ip,则不要改动repro的默认端口5060。我的测试中一开始由于5060被其他应用占用,将repro的端口改成5066,配置ip域名打不通。因为repro代码中从域名中解析不到端口,就会使用默认的端口5060,这个是硬编码写死的。也就是说会将主叫的invite路由到5060端口去,导致通话失败。非要用ip当域名且改变端口,可以在域名上加上端口,如172.16.12.29:5066。
(3)在repro端口上抓包,通话结束时,竟然没有抓到bye包。
这个的原因是ack和bye包,主叫和被叫直接发送了,没有经过repro。因为bye是不同的事务,bye的路径依赖于RecordRoute,所以这个是repro没有将自己插入到RecordRoute导致的。这个在配置中将ForceRecordRouting配成true,且RecordRouteUri配上就可以了。
resiprocate使用入门:内网搭建基于repro的sipproxy测试环境的更多相关文章
- 搭建基于MyEclipse的Hadoop开发环境
不多说,直接上干货! 前面我们已经搭建了一个伪分布模式的Hadoop运行环境.请移步, hadoop-2.2.0.tar.gz的伪分布集群环境搭建(单节点) 我们绝大多数都习惯在Eclipse或MyE ...
- 第五章——搭建S3C6410开发板的测试环境
搭建S3C6410开发板的测试环境 通过本章的学习学会了如何在开发板上安装Android.开发板是学习和开发嵌入式技术的主要硬件设备,想要顺利的通过linux驱动访问硬件,是不能在PC板上模拟的,需要 ...
- 公司内网搭建代理DNS使用内网域名代替ip地址
企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...
- 快速搭建基于Spring Boot + Spring Security 环境
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.Spring Security 权限管理框架介绍 简介: Spring Security 提供了基于 ...
- Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)
因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见 ...
- kali linux 入门(1) 基于win10和docker的环境搭建
1. 前言 渗透测试并没有一个标准的定义.国外一些安全组织达成共识的通用说法是,渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法,这个过程包括对系统的任何弱点.技术缺陷或漏 ...
- Unix/Linux环境C编程入门教程(20) 搭建基于Mac的 Xcode 与 QT 开发环境
1.启动 Vmware,如果没有 VMware 的同学,请看前面我们搭建 VMware 的视频 2.打开虚拟机以后,出现虚拟机界面 3 新建一个虚拟机 4 选择自定义,单击下一步 5 选择默认的 VM ...
- 关于npm镜像,发布,内网搭建等
npm config set registry http://registry.npmjs.org npm config set registry https://registry.npm.taoba ...
- [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...
随机推荐
- 深入理解JVM:JVM执行时数据区域分类
JVM在运行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域. 这些区域都有各自的用途和创建.销毁时间.有些区域随着虚拟机的启动而存在.有些区域则依赖用户线程的启动和结束而建立和销毁. ...
- programming review (c++): (3)graph, binary search
I.graph #include <iostream> #include <vector> using namespace std; vector<vector<, ...
- KVC基本使用
首先,创建两个类.person类和book类.如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/ ...
- EasyPlayer Android RTSP播放器延迟再优化策略
EasyPlayer延迟再优化策略 EasyPlayer是一款专门针对RTSP协议进行过优化的播放器.其中两个我们引以为傲的的优点就是起播快和低延迟.最近我们遇到一些需求,其对延迟要求非常苛刻,于是我 ...
- android菜鸟学习笔记17----Android数据存储(一)文件读写
假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...
- C#中的new和override(转)
在衍生类中的方法上使用new和override关键字有何意义,可以通过一系列问题来找到答案.先看一段代码: 1 class Program 2 { 3 static void Main(string[ ...
- 详解Vue 实例中的生命周期钩子
Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...
- AFNetworking3.0使用简介
注意到咱们集成的版本为3.0.4. 下面的类已从AFNetworking 3.0中废弃: AFURLConnectionOperation AFHTTPRequestOperation AFHTTPR ...
- Java基础知识整理之static修饰属性
static 关键字,我们在开发用的还是比较多的.在<Java编程思想>有下面一段话 static 方法就是没有 this 的方法.在 static 方法内部不能调用非静态方法,反过来是可 ...
- jQuery/CSS3实现Android Dock效果
在线演示 本地下载