您的位置:首页 > 其它

Clearwater IMS All-in-one环境搭建指导书

2015-01-17 00:21 901 查看
xunknown@163.com

2015-01-13

.前言


Clearwater IMS 是一个开源的IMS项目,提供VoIP/SIP电话等功能,Clearwater
IMS主页http://www.projectclearwater.org.

为了体验Clearwater
IMS 提供的VoIP/SIP电话功能,我搭建了一个Clearwater
IMS All-in-one 环境进行体验,参考官方文档:

1.Clearwater IMS All-in-one服务器搭建:https://github.com/Metaswitch/clearwater-docs/wiki/All-in-one%20OVF%20Installation

2.客户端软件安装配置:

https://github.com/Metaswitch/clearwater-docs/wiki/Making%20your%20first%20call

因为实际搭建时跟官方文档有出入,走了一些弯路,因此在此总结一下.

.环境总体说明

我使用一台Intel
464CPU8GB内存的主机,操作系统是Linux
Mint 17.1 MATE 64bit系统,内核是3.16:

alpha@mascot ~/Workspace/ims $ uname -a

Linux mascot 3.16.0-28-generic #38-Ubuntu SMP Sat Dec 13 16:13:28 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

在主机上使用VirtualBox (4.3.18)创建多个虚拟机分别安装Clearwater
IMS All-in-one服务器,以及VoIP/SIP客户端软件,主机和各个虚拟机之间通过Host-only网络互通.

如下图所示:



.
Clearwater IMS All-in-one服务器搭建

为了简单,使用 Clearwater
IMS All-in-one模式搭建服务器,搭建过程参考官方手册,主要步骤:

1.下载官方提供的all-in-one
image.映像名称是cw-aio.ova.

To install the OVF, you must first download it from http://vm-images.cw-ngv.com/cw-aio.ova and
save it to disk.

2.利用下载的官方all-in-one
image创建虚拟机并安装IMS服务器.

On VirtualBox, choose File->Import
Applicance... from the menu. In the Appliance Import Wizard, click Choose...,
select the cw-aio.ova file you downloaded and click Next.
On the next tab, you can view the settings and then click Import.

利用VirtualBoxImport操作会自动创建一个虚拟机(虚拟机名称是cw-aio),并安装好IMS服务器,Clearwater
IMS所有组件都安装在该虚拟机上.

3.启动IMS服务器虚拟机.登陆系统的用户名和密码是ubuntucw-aio.

If you attach to the console, you should see an Ubuntu loading screen and then be dropped at a
cw-aio
login
prompt. The username is
ubuntu
and
the password is
cw-aio
.

服务器启动之后,我发现系统不断打印内存不足(out
of memory)的信息,说明利用官方映像自动创建的虚拟机内存太小,因此我增加了虚拟机的内存(先把虚拟机下电).

4.修改虚拟机网络.利用官方映像自动创建的服务器虚拟机网络是NAT网络.

VirtualBox uses NAT on the local IP address, exposing SSH on port8022,
HTTP on port 8080 and
SIP on port 8060.
To access ellis,
you'll need to point your browser at http://localhost:8080.
To register over SIP, you'll need to configure an outbound proxy of localhost port 8060.

由于服务器虚拟机使用NAT网络,服务器的IP外部不可见,主机或者其他虚拟机无法访问服务器,ellis(ellis是管理用户的web服务器,后面开户时会提到,)无法通过 http://localhost:8080访问(在主机上访问,localhost是主机ip,通过这种方式访问没有意义;IMS服务器没有安装浏览器,无法访问http://localhost:8080).因此我将服务器虚拟机的网络方式改为Host-only方式,以便主机和其他虚拟机可以访问IMS服务器(后面提到客户端软件安装在其他虚拟机上,因此其他虚拟机也要能访问IMS服务器).

VirtualBox上创建并配置Host-only
Network(File / Preference / Network / Host-only Network),

使用VirtualBox默认配置即可.见下图.





修改IMS服务器虚拟机的虚拟网卡为Host-only适配器(虚拟机先下电),见下图.



补充说明,我尝试给IMS服务器虚拟机增加一个Bridged方式虚拟网卡(希望在我的手机也能通过WiFi局域网访问该服务器),但是发现不起作用(服务器系统上看不到该虚拟网卡),不过这个不影响.见下图.





经过上述网络修改,现在主机和其他虚拟机都可以访问IMS服务器了.

我的IMS服务器分配的IP地址是192.168.56.101.也就是在服务器上运行ifconfig
eth0(eth0对应虚拟机的Host-only适配器,第一个虚拟网卡)或者hostname
-I看到的IP.这个IP地址就是官方文档提到的<aio-identity>.访问ellis和客户端的SIP代理配置都是使用这个IP地址(后面会提到),主机上ssh登陆IMS服务器也是使用这个IP地址,也是客户端配置用到的SIP代理服务器地址(Outbound
Proxy address),也是Bono/P-CSCF服务器的地址,以及STUN/TURN/ICE服务器地址(后面客户端配置会再次提到).

在主机上可以通过ssh登陆服务器.使用如下命令:

ssh ubuntu@192.168.56.101

用户名和密码同系统登陆的用户名和密码.

SSH - username is
ubuntu
and
password is
cw-aio


需要说明的是,使用默认的ssh端口即可,并不需要指定ssh端口号(即前面官方文档提到的8022端口)

5.开户

开户是在IMS服务器创建VoIP/SIP用户,包括用户名(IMS系统的IMPIIMPU)和密码.

IMS服务器上的ellis
web服务提供用户管理功能,通过浏览器登陆ellis进行开户.

在主机上使用浏览器(我使用的是Google
Chrome)打开
http://192.168.56.101,这里的URL是前面提到的IMS服务器的IP地址.这里不需要指定8080端口,默认80端口.
If you installed an All-in-One node, your Ellis URL will be
http://<aio-identity>
.

看到如下界面:



点击signup,创建一个新用户.进入如下界面:



注意,这里输入的用户名不是前面提到的VoIP/SIP用户,这个用户名只是用来管理VoIP/SIP用户,VoIP/SIP用户挂在这个用户名下.这里的用户名在SIP客户端不需要.

这里最关键的是最后一个signup
code,参考官方文档,默认是secret.

HTTP to ellis for
subscriber management - sign-up code is
secret
.

点击Sign
up进入下一步,自动创建一个IMPI(Private
Identity)和一个IMPU(Associated
Public Identities),VoIP/SIP用户,以及密码.如下图.

需要注意的是,这里的密码只显示一次,页面一刷新便再看不到,因此需要记录下来.可以点击Reset更换密码.



可以点击下方的Create创建更多的SIP用户(也可以通过如上面的步骤那样从sign
up开始创建新的用户).

至少要创建2SIP用户,一个主叫,一个被叫.

Private Identity部分是客户端配置要用到的关键信息(在下面的客户端配置会再次提到):

SIP Username:
<username>,<username>
对应
@
前的数字部分
,
6505550472,
这个数字也是拨打电话的输入的电话号码
.


SIP Password:
<password>,<password>
即这里自动生成的密码
.


SIP Domain:
<domain>,<domain>
对应这里的
@
后的内容
,
example.com,这跟官方文档提到的一致.

If you installed an All-in-One node, your base name will be
example.com
.

Authorization Name:
<username>@<domain>,
例如
6505550472@example.com

至此,Clearwater
IMS All-in-one服务器已经安装完毕,并且已经创建了一部分SIP用户.

.安装并配置客户端

1.创建并配置客户端虚拟机

VoIP/SIP客户端分别安装在两个虚拟机上(一个做主叫,一个做被叫),因此分别创建两个虚拟机.根据客户端可以运行的OS安装虚拟机的操作系统.我安装了Linux
Mint Mate 17,Linux Mint Mate 17.1WIndows
8.1三个虚拟机.

客户端虚拟机也要加入到Host-only网络,从而可以访问服务器IP,确保在客户端虚拟机可以ping通服务器IP地址.配置方式跟服务器虚拟机一样.

如下图所示.





2.下载并安装客户端软件

根据官方文档,至少一个客户端是Zoiper.(后面测试发现Jitsi呼叫Jitsi会发生异常)

If
you have installed Clearwater on VirtualBox using the All-In-One image you must use Zoiper as
one of your clients.

我使用了两个不同的客户端软件,ZoiperJitsi,分别安装在两个不同的虚拟机上.客户端软件的下载安装参考对应软件的网站和文档.

说明,如果主被叫分别使用不同的客户端软件,可以在同一个虚拟机上运行,那么只需要一个客户端虚拟机就可以了.

3.配置客户端软件

根据客户端软件不同,需要配置的内容也不同.

官方手册提到的配置内容如下.


Configure your client

Client configuration methods vary by client, but the following information should be sufficient to allow your client to register
with Clearwater.

SIP Username:
<username>


SIP Password:
<password>


SIP Domain:
<domain>


Authorization Name:
<username>@<domain>


Transport:
TCP


STUN/TURN/ICE:

Enabled:
true


Server:
<domain>
(or
<aio-identity>
on
an All-in-One node)

Username:
<username>@<domain>


Password:
<password>


Extra configuration to use an All-in-One node

If you are using an All-in-One node, you will also need to configure an outbound proxy at your client.

Outbound Proxy address:
<aio-identity>


Port: 5060 (or 8060 if installed in Virtualbox)

Zoiper客户端(Windows版本,linux版本参考配置)具体的配置内容如下:

Domain, Username, Password, Auth. username来自Ellis创建的用户名和密码.

Outbound ProxyIMS服务器的IP地址.

SIP optionsport要修改为8060.

STUN的配置修改为IMS服务器的IP地址.(不使用STUN应该也可以)





Jitsi客户端(linux版本)具体的配置内容如下:

SIP Id, Registrar, Password, Authorization name来自Ellis创建的用户名和密码.

ProxyIMS服务器的IP地址.

SIP optionsport5060.不能使用8060.







4.拨打电话

客户端软件配置完成后,用户注册成功到IMS服务器,就可以拨打电话了.

拨打电话时在拨号盘输入用户名(即数字).







.问题定位

1.linux版本的Zoiper客户端在配置过程中突然异常退出(选择STUN配置开关并确认时),再也不能启动,终端输出Segment
Fault,不知哪里配置出错.卸载重装也是同样问题,如此折腾几次,换了Windows版本的,Windows
8.1的虚拟机配置成功,用户注册成功.

回头看linux版本重装也不能启动的原因,发现用户目录下有一个.Zoiper目录,Zoiper配置文件保存的地方,原来卸载时不会删除这个目录.删除这个目录后重装,重新参考WIndows版本进行配置,用户注册成功.

2.用户注册不上,通过在IMS服务器上抓包分析,使用tcpdumpwireshark.

Jitsi配置时用户注册不上,之前按照官方手册将Port也配置为8060,通过抓包发现Zoiper客户端注册和Jitsi注册发送的REGISTER请求的端口号不同,Jitsi的端口号改为默认的5060就可以了.

3.IMS服务器虚拟机cw-aio为什么不能配置Bridged适配器,原因是系统不认第二个网卡.可以将第一个虚拟网卡配置为Bridged适配器,从而WiFi局域网的手机也可以访问该IMS服务器.

配置过程中遇到这个问题:关闭第一个虚拟网卡,打开第二个虚拟网卡,系统重启后看不到网卡,说明系统只认第一个网卡.把第一个网卡重新打开,关闭第二个网卡,重启后显示的主机名也变成none(/etc/hostname文件内容为空),SIP用户无法注册(Ellis可以访问).修改/etc/hostname文件,增加cw-aio,即将主机名改为cw-aio,重启之后,系统恢复正常.





4.IMS服务器有时不稳定,重启系统之后恢复正常.

5.客户端是否打开STUN,貌似影响不大.

.实现手机呼叫手机

经过反复尝试,IMS服务器虚拟机的第一个虚拟网卡配置为Bridged模式,局域网内的其他手机终于也可以访问IMS服务器了(IP地址跟Host-only方式不同).在手机上配置SIP账号(Android手机自带功能,不需要另外安装软件),可以实现手机呼叫手机.

手机上的SIP账号配置参考官方文档:https://github.com/Metaswitch/clearwater-docs/wiki/Configuring%20the%20native%20Android%20SIP%20client


Configuring the native Android SIP client


Instructions

Ensure that you have a data connection (either through 3G or WiFi).

Launch your standard dialer (often called Phone or Dialer).

Bring up the menu. Depending on your phone, this may be via a physical Menu button, or via an icon (often in the bottom right,
consisting of three square dots in a vertical line).

From the menu, select Settings or Call
settings to bring up the settings panel.

Under Internet
Call Settings, select Accounts

Press Add
account (at the bottom of the screen) and enter its configuration.

Set Username, Password and Server to
their usual values

Open the Optional
settings panel to see and set the following options.

Set Transport
type to TCP

Set Authentication
username to "sip:<username>@<server>",
subsituting (note: once we switch to storing user digest by private id, this will change)

Once done, choose Save

Go back to the main Settings menu and under Internet
Call Settings, select Use
Internet Calling. Set this to Ask
for each call

You should now be able to make calls.

需要注意的是,这里的Server相当于Domain,因此配置为example.com,另外还要配置出站代理地址,配置内容就是服务器的IP地址,需要注意的是,更改了IMS服务器虚拟机的网卡类型,IP地址也会改变,需要使用新的IP地址,传输类型选择TCP或者UDP(如果其中一种不通,换另外一种),端口配置为5060.

我使用了一部华为手机和一部三星手机,都是Android系统,进行测试.

以下是华为Mate
1手机的具体配置:







在三星Note手机上参考配置另外一个SIP账号,可以实现手机呼叫手机,在数字键盘上直接拨用户名(即数字),如下:



Zoiper/Jitsi软件与手机之间也可以互相拨打电话.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IMS SIP VoIP