[sips]搭建opensip:ubuntu+ARM 64位

本文详细介绍了在arm64环境下下载、编译openSIPS 2.4.10版本的过程,包括依赖包安装、Makefile配置、rtpproxy和Mediaproxy的安装及配置,还涵盖了启动服务、常见命令和问题解决。
摘要由CSDN通过智能技术生成

1.下载opensips 

官网文档

下载openSips的各个版本

openSIPS | Documentation / OpenSIPS Manual - 3.2

参考网址 

(1条消息) opensips的成长之路--初识与搭建安装_无与伦比的傻-CSDN博客

个人安装OpenSIPS跳坑之路_胡说八道-CSDN博客

ubuntu 安装配置opensips,rtpproxy,mediaproxy - WinHeart - OSCHINA - 中文开源技术交流社区

在官网openSIPS | Main / HomePage能看到哪个是稳定版本,这里下载的是2.4.10版本

下面的3.2.2版本当时没有调通,和2.4.10的安装方式是不一样的


 2.编译安装opensips-2.4.10

 直接在arm64 云环境编译,由于好多包apt-get不到,考虑先在x86_ubuntu上做交叉编译

2.1 准备所需要的包

编译需要事先准备好下面的包

sudo apt-get install autoconf
sudo apt-get install automake 
sudo apt-get install libtool

sudo apt-get install bison

sudo apt-get install flex

sudo apt-get install build-essential

sudo apt-get install libncurses-dev

//数据库的安装参考这篇文章
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

//默认的安装路径
sudo chmod 777 /usr/local

2.2 编译和安装

make menuconfig 执行此命令后,直接退出(使用左右键进入/返回菜单)

会自动生成opensips/Makefile.conf文件

手动修改Makefile.conf文件

2.2.1 x86的编译安装

常规编译
make all
make install

 2.2.2 arm64的编译

2.3 配置脚本

这里参考和引用下面文章中 关于opensips的设置内容: 

https://blog.csdn.net/qq_32566003/article/details/117189280

2.3.1 修改opensips.cfg

 在下面这个路径执行配置,(使用左右键进入/返回菜单, 空格是选中和取消)
/usr/local/sbin# ./osipsconfig 

配置如下,最后生成文件,并改名成opensips.cfg 


/usr/local/etc/opensips/opensips.cfg的内容: 

#
# OpenSIPS residential configuration script
#     by OpenSIPS Solutions <team@opensips-solutions.com>
#
# This script was generated via "make menuconfig", from
#   the "Residential" scenario.
# You can enable / disable more features / functionalities by
#   re-generating the scenario with different options.#
#
# Please refer to the Core CookBook at:
#      https://opensips.org/Resources/DocsCookbooks
# for a explanation of possible statements, functions and parameters.
#


####### Global Parameters #########

log_level=3
log_stderror=no
log_facility=LOG_LOCAL0

children=4

/* uncomment the following lines to enable debugging */
#debug_mode=yes

/* uncomment the next line to enable the auto temporary blacklisting of 
   not available destinations (default disabled) */
#disable_dns_blacklist=no

/* uncomment the next line to enable IPv6 lookup after IPv4 dns 
   lookup failures (default disabled) */
#dns_try_ipv6=yes

/* comment the next line to enable the auto discovery of local aliases
   based on reverse DNS on IPs */
auto_aliases=no


listen=udp:192.168.7.25:5060   # 改成自己的IP
listen=tcp:192.168.7.25:5060   # 改成自己的IP


2.3.2 修改opensipsctlrc

/usr/local/etc/opensips/opensipsctlrc

## your SIP domain    
SIP_DOMAIN=10.121.148.196  #改成自己的IP,文件开头位置

... ...

#这里有注意数据库

## database name (for ORACLE this is TNS name)
DBNAME=opensips

# database path used by dbtext, db_berkeley, or sqlite
DB_PATH="/usr/local/etc/opensips/dbtext"

## database read/write user
DBRWUSER=root

## password for database read/write user
DBRWPW="123456"

2.3.3 创建数据库

 创建opensips数据库,切换到安装目录下sbin
检测配置文件语法

./opensips -C

创建数据库

./opensipsdbctl create

添加用户

./opensipsctl add username password #添加用户

./opensipsctl rm username #删除用户

./opensipsctl add test1 123456
./opensipsctl add test2 123456


 3.安装rtproxy和Mediaproxy

这篇文章,主要讲opensip、Mediaproxy和rtproxy三者的关系:

Mediaproxy 与 Rtpproxy - 思源2017 - 博客园

3.1 安装rtpproxy

这里引用:

opensips的成长之路

https://blog.csdn.net/qq_32566003/article/details/117189280

按下面方式安装: 

sudo apt-get install rtpproxy
sudo vi /etc/default/rtpproxy

​
# Defaults for rtpproxy

# The control socket.
#CONTROL_SOCK="unix:/var/run/rtpproxy/rtpproxy.sock"
# To listen on an UDP socket, uncomment this line:
CONTROL_SOCK=udp:127.0.0.1:22222

# Additional options that are passed to the daemon.
EXTRA_OPTS=""
LISTEN_ADDR=你的ip
EXTRA_OPTS="-l ${LISTEN_ADDR}"


​

sudo killall rtpproxy
sudo /etc/init.d/rtpproxy start 

3.2 安装Mediaproxy

下载mediaproxy-2.6.1.tar.gz的网址如下:

http://download.ag-projects.com/MediaProxy/old/

media安装指导文档
http://mediaproxy.ag-projects.com/installation-guide/

Installation Guide | MediaProxy

mediaproxy安装指南
http://mediaproxy.ag-projects.com/download/

编译: sudo ./setup.py build

安装: sudo ./setup.py install
编译可能会遇到下面的错误,我的环境是ubuntu16.04

执行完上面后出现的界面 

3.2.1 编译问题之没有Python.h

问题现象: fatal error: Python.h: No such file or directory
问题答案: 
sudo apt-get install python-dev   # for python2.x installs (我的2.7版本,用这个解决)
sudo apt-get install python3-dev  # for python3.x installs

3.2.2 编译问题之没有libnetfilter_conntrack/libnetfilter_conntrack.h

问题现象: fatal error: libnetfilter_conntrack/libnetfilter_conntrack.h: No such file or directory
问题答案: https://launchpad.net/ubuntu/+source/libnetfilter-conntrack/1.0.4-1
               下载libnetfilter-conntrack_1.0.4.orig.tar.bz2
               ./configure
               make
               sudo make install
                
                注意在编译过程中出现编译错误:
                需要安装两个包:sudo apt-get install libnfnetlink-dev
                                        sudo apt-get install libmnl-dev

这个地址如果能搜到包,apt-get install就能安装
https://packages.ubuntu.com/

3.2.3 编译问题之没有libiptc/libiptc.h

问题现象:fatal error: libiptc/libiptc.h: No such file or directory
问题答案:sudo apt-get install libiptc-dev

先在这个网址里搜下libiptc,发现搜到了libiptc-dev,就能安装
https://packages.ubuntu.com/


3.3 配置mediaproxy 

引用内容网址: 在Ubuntu安装Opensips_qq_25672665的博客-CSDN博客

由于media-relay需要内核支持ipv4 forwarding,所以执行以下命令(用root用户执行):

问题现象
fatal error: IP forwarding is not available or not enabled (check /proc/sys/net/ipv4/ip_forward)

问题答案如下: 

echo 1 > /proc/sys/net/ipv4/ip_forward   (临时的办法)

在这之后,在/etc/sysctl.conf中添加net.ipv4.ip_forward=1,以使设备重启后也能继续用mediaproxy。

net.ipv4.ip_foward=1

在/etc/mediaproxy/tls创建认证文件。

mkdir /etc/mediaproxy
cp -R tls /etc/mediaproxy/tls
cp config.ini.sample /etc/mediaproxy/config.ini

然后将config.ini按照以下方式进行修改: 

[Relay]
dispatchers = xxx.xxx.xxx.xxx #你自己的地址
passport = None
relay_ip = xxx.xxxx.xxx.xxx #你自己的IP地址
port_range = 50000:60000
log_level = DEBUG
stream_timeout = 90
on_hold_timeout = 7200
reconnect_delay = 10
traffic_sampling_period = 15
[Dispatcher]
socket_path = dispatcher.sock
listen = xxx.xxx.xxx.xxx
listen_management = xxx.xxx.xxx.xxx #你自己的IP地址
management_use_tls = yes
passport = None
management_passport = None
log_level = DEBUG
relay_timeout = 5
[TLS]
certs_path = tls
verify_interval = 300
[Database]
[Radius]
[OpenSIPS]
socket_path = /var/run/opensips/socket
max_connections = 10

完成之后,启动mediaproxy服务。(注,遇到的问题解决办法如下)

media-dispatcher restart
media-relay restart

3.3.1 问题之ImportError

问题现象: media-dispatcher restart  (root权限)

Traceback (most recent call last):
  File "/usr/local/bin/media-dispatcher", line 12, in <module>
    from application.process import process, ProcessError
ImportError: No module named application.process

 问题答案:

sudo apt-get install python-application

3.3.2 问题之没有python-gnutls

问题现象:
fatal error: need python-gnutls version 1.1.8 or higer but it's not installed

问题答案:
sudo apt-get install python-gnutls


4 启动opensips服务并检验


为opensips创建log文件

touch /var/log/opensips.log
chmod 777 /var/log/opensips.log
vim /etc/rsyslog.d/opensips.conf

在新建文件中写入以下行:

local0.* /var/log/opensips.log

然后重启服务。

service rsyslog restart
opensipsctl start 

然后在防火墙开启端口   (注意防火墙)

iptables -I INPUT -p tcp -dport 5060 -j ACCEPT
iptables -I INPUT -p udp -dport 5060 -j ACCEPT
iptables-save

查看防火墙状态: ufw status 

                  显示:  Status: inactive   (我的虚拟机防火墙是关闭的) 

开机启动命令:  启动mediaproxy、rtpproxy和opensipsctl这三个模块 

su
media-dispatcher start
media-relay start
/etc/init.d/rtpproxy start
opensipsctl start

备注:  设置成开机自启动 

Ubuntu开机之后会执行/etc/rc.local文件中的脚本,
所以我们可以直接在/etc/rc.local中添加启动脚本。
当然要添加到语句:exit 0 前面才行。如:
sudo vi /etc/rc.local
然后在 exit 0 前面添加好脚本代码。

5.常用的命令

查看用户信息:  opensipsctl ul show
显示在线用户:  opensipsctl online

1、查看命令帮助:opensipsctl help

2、新建用户:opensipsctl add 101 101 #添加用户101,密码101

3、查看fifo提供的操作:opensipsctl fifo which

4、重新加载负载均衡信息:opensipsctl fifo lb_reload

5、查看负载均衡配置的服务器状态:opensipsctl fifo lb_list

7、查看注册在opensips上的用户:opensipsctl ul show

8、查看opensips的统计信息:opensipsctl fifo get_statistics all

9、查看opensips当前通话数等信息:opensipsctl fifo get_statistics dialog


6.采用linphone测试验证

win10系统关闭了麦克风 ,打开方法: 声音设置>>麦克风隐私设置


7. 变动IP需要改哪些文件 

直接搜索原来的IP,比如我的原来是192.168.7.25,再改成自己现在的IP

/usr/local/etc/opensips/opensips.cfg
/usr/local/etc/opensips/opensipsctlrc
/etc/default/rtpproxy
/etc/mediaproxy/config.ini


8.添加ws模块
 

在opensips.cfg脚本里添加

listen=udp:192.168.7.25:5060   # CUSTOMIZE ME
listen=tcp:192.168.7.25:5060   # CUSTOMIZE ME
listen=ws:192.168.7.25:5061   # CUSTOMIZE ME

loadmodule "proto_udp.so"
loadmodule "proto_tcp.so" 
loadmodule "proto_ws.so"  #添加

9.相关疑问 

9.1 OpenSIPS和Asterisk的区别

 对比:OpenSIPS和Asterisk的区别
https://www.jianshu.com/p/5e8b60164d41

9.2 有哪些sip开源项目

最新完整关于sip开源项目
http://www.ctiforum.com/news/guandian/589369.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值