CentOS6.6安装opensips及mediaproxy实现ICE-第一部分

目前对于VOIP这块网上很少有详细配置资料,即便是有对于初学者来说都是似懂非懂的,本文结合网上部分资料并整理,若有问题请评论说明。

ICE(互动式建立连接)试着寻找最佳路线去建立连接方式,它会并行的寻找所有的可能性,然后选择最有效的可行方式,它首先尝试用设备系统或网卡获取到的主机地址去连接,如果这个失败了(设备在NAT后就会),ICE会从STUN服务器获取外部地址进行连接,如果这个也失败了,就用TURN中转服务器做通讯。

首先说下实现NAT穿越的几种方式:

  1. 针对客户端的解决方案:STUN、TURN、ICE
  2. 路由边界解决方案:应用层网关ALG、通用即插即用uPNP、中间盒通信MIDCOM
  3. 服务器端解决方案:B2BUA、服务端RTP中继、会话边界控制SBC、FULL-PROXY、隧道技术
  4. 还有RSIP

如何区分对称和非对称NAT:

网关设备在实现NAT时,对于内网某主机的若干UDP请求,网关设备对应地在外网上所建立的UDP端口数量

对称NAT是一个请求对应一个端口

非对称NAT是多个请求对应一个端口

ICE的协商过程:

  1. 候选地址的收集:ICE客户端收集本地所有可能用于通讯的地址,所收集的地址分为3类:

    (1)主机候选地址(Host Candidate):本地物理网卡的地址

    (2)服务器反射地址(Server Reflexive Candidate就是NAT上关于本地IP映射的地址),这个地址通过STUN服务器来获取

(3)中转/中继候选地址(Relay Candidate)这个地址就是使用中继(Relay)的传输方式时,在中继服务器(或者称为TURN服务器)上为本机所分配的地址

2.候选地址的优先策略:一般情况下使用中继方式产生的中继候选地址的优先权最低,因为它的代价最昂贵。

3.本地候选地址编码:把编码来的地址传至对端,双方通过报告/应答的方式进行协商

4.候选地址配对:将本端的地址与对端的地址一一进行配对,此时应该通过某种方式的得到了对端的候选地址

5.每对地址做连接测试

6.得到结果:由于已经对所有的候选地址一一进行配置并一一进行连接测试,所以存在一个可以通信的路径,ICE肯定会得到它。

第一部分:opensips的安装

环境说明:

操作系统:CentOS 6.6 64位版,采用最小安装,安装的时候将“Devlopment Tools”选上并关闭SELinux及防火墙

软件:opensip-1.11.4

安装过程:

  1. 安装依赖库
yum -y install gcc make zlib-devel wget gdb
yum -y install flex bison ncurses-devel 
yum -y install mysql mysql-server mysql-devel mysql-libs 
yum -y install lynx svn libxslt

2.下载并安装配置opensips-1.11.4-latest-src.tar.gz

wget http://opensips.org/pub/opensips/1.11.4/src/opensips-1.11.4-latest_src.tar.gz
tar zxf opensips-1.11.4-latest_src.tar.gz
cd opensips-1.11.4-tls/
make prefix=/data/opensips1.11.4 all include_modules="db_mysql" 
make prefix=/data/opensips1.11.4 install include_modules="db_mysql"
cd ..

说明:将opensips安装到/data/opensips1.11.4,并增加mysql支持

3.启动并配置数据库

/etc/init.d/mysqld start 
mysqladmin -uroot password 123456 
mysql -uroot -p123456 -e "delete from mysql.user where password=‘‘" 
mysql -uroot -p123456 -e "drop database test"

说明:以上将数据库的root密码设置为123456,并删除数据库中空密码的账户。

4.配置opensips与mysql数据库的对接

sed -i ‘s/\# DBENGINE=MYSQL/DBENGINE=MYSQL/g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc 
sed -i ‘s/\# DBHOST=localhost/DBHOST=localhost/g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc
sed -i ‘s/\# DBNAME=opensips/DBNAME=opensips/g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc 
sed -i ‘s/\# DBRWUSER=opensips/DBRWUSER=opensips/g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc 
sed -i ‘s/\# DBRWPW="opensipsrw"/DBRWPW="opensipsrw"/g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc 
sed -i ‘s/\# DBROOTUSER="root"/DBROOTUSER="root"/g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc

以上主要就是修改/data/opensips1.11.4/etc/opensips/opensipsctlrc中mysql的配置

5.建立软链接

ln -s /data/opensips1.11.4/etc/opensips/ /etc/
echo "export PATH=$PATH:/data/opensips1.11.4/sbin/" >>/etc/profile
source /etc/profile

说明:以上说明以后opensips的配置文件就可以直接打开/etc/opensips/目录下.另外也将opensips的执行文件加到环境变量

6.创建opensips数据库

[[email protected] opensips-1.11.4-tls]# /data/opensips1.11.4/sbin/opensipsdbctl create
MySQL password for root:     #输入mysql root密码,这里是123456
INFO: test server charset
INFO: creating database opensips ...
INFO: Core OpenSIPS tables succesfully created.
Install presence related tables? (y/n): y    #确认安装presence表,也可以否
INFO: creating presence tables into opensips ...
INFO: Presence tables succesfully created.
Install tables for imc cpl siptrace domainpolicy carrierroute userblacklist b2b cachedb_sql registrant call_center? (y/n): y  #确认安装表,也可以否
INFO: creating extra tables into opensips ...
INFO: Extra tables succesfully created.

7.创建opensips配置文件,使用图形界面运行

/data/opensips1.11.4/sbin/osipsconfig

按照 Generate OpenSIPS Script ---> Residential Script ---> Configure Residential Script

路径,并选择以下几个:

Configure Residential Script

____________________________________________

|                                            |

|     [ ] ENABLE_TCP                         |

|     [ ] ENABLE_TLS                         |

|     [*] USE_ALIASES                        |

|     [*] USE_AUTH                           |

|     [*] USE_DBACC                          |

|     [*] USE_DBUSRLOC                       |

|     [*] USE_DIALOG                         |

|     [*] USE_MULTIDOMAIN                    |

|     [*] USE_NAT                            |

|     [ ] USE_PRESENCE                       |

|     [ ] USE_DIALPLAN                       |

|     [ ] VM_DIVERSION                       |

|     [ ] HAVE_INBOUND_PSTN                  |

|     [ ] HAVE_OUTBOUND_PSTN                 |

|     [ ] USE_DR_PSTN                        |

|     [ ] USE_HTTP_MANAGEMENT_INTERFACE      |

|____________________________________________|

然后按"<-"键盘,选择"Generate Residential Script"回车即可,然后一直按"<-"键退出.

8.使用生成的配置文件替换默认的配置文件

rm -f /data/opensips1.11.4/etc/opensips/opensips.cfg
mv /data/opensips1.11.4/etc/opensips/opensips_residential_*.cfg /data/opensips1.11.4/etc/opensips/opensips.cfg

9.更改opensips的配置文件

sed -i ‘s/disable_tcp=no/disable_tcp=yes/g‘ /data/opensips1.11.4/etc/opensips/opensips.cfg 
sed -i ‘s/listen=udp:127.0.0.1:5060/listen=udp:eth0:5060/g‘ /data/opensips1.11.4/etc/opensips/opensips.cfg 
sed -i ‘s#mpath="/usr/local/lib/opensips/modules/"#mpath="/data/opensips1.11.4/lib64/opensips/modules/"#g‘ /data/opensips1.11.4/etc/opensips/opensips.cfg 
sed -i -e ‘/modparam("uri", "use_uri_table", 0)/a\modparam("uri", "db_url","mysql://opensips:[email protected]/opensips")‘ /data/opensips1.11.4/etc/opensips/opensips.cfg

10.更改opensips日志路径,查看opensips日志,只要查看/var/log/opensips.log,方便我们对出现问题的处理

echo "local0.* /var/log/opensips.log" >> /etc/rsyslog.conf 
service rsyslog restart

11.配置opensips的启动文件,以后就可以使用service opensips [start/stop/restart]管理opensips服务.

cp /root/opensips-1.11.4-tls/packaging/fedora/opensips.init /etc/init.d/opensips 
sed -i ‘s#opensips=/usr/sbin/$prog#opensips=/data/opensips1.11.4/sbin/$prog#g‘ /etc/init.d/opensips 
chmod +x /etc/init.d/opensips 
groupadd opensips 
useradd -g opensips -s /sbin/nologin -d /dev/null opensips 
service opensips start

13.配置域的名字

sed -i ‘s#\# SIP_DOMAIN=opensips.org#SIP_DOMAIN=192.168.88.10#g‘ /data/opensips1.11.4/etc/opensips/opensipsctlrc
#以上的192.168.88.10可以更改成自己的域名或IP

12.RTPProxy的安装与配置(这部分可省略,因为后面会使用Mediaproxy)

yum -y install git 
git clone git://sippy.git.sourceforge.net/gitroot/sippy/rtpproxy
cd rtpproxy 
./configure 
make 
make install 
rtpproxy -u opensips -F
sed -i ‘s#udp:localhost:12221#unix:/var/run/rtpproxy.sock#g‘ /data/opensips1.11.4/etc/opensips/opensips.cfg
service opensips restart

13.添加测试账户

[[email protected] ~]# opensipsctl add 1 123456
new user ‘1‘ added
[[email protected] ~]# opensipsctl add 2 123456
new user ‘2‘ added
[[email protected] ~]# opensipsctl add 3 123456
new user ‘3‘ added
[[email protected] ~]# opensipsctl add 4 123456
new user ‘4‘ added
时间: 2024-10-10 11:39:40

CentOS6.6安装opensips及mediaproxy实现ICE-第一部分的相关文章

CentOS6.6安装opensips及mediaproxy实现ICE-第二部分

第二部分:MediaProxy的安装与配置 安装依赖包 yum -y groupinstall "Development Tools" yum -y install gcc gcc-c++ iptables-devel libnfnetlink-devel libnetfilter_conntrack-devel libgcrypt-devel libgpg-error-devel gnutls python-devel python-zope-interface 2.安装python

如何在CentOS6上安装Python2.7和Python3.3

原文来自http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/,个人觉得对在linux安装新版本Python是很有参考意义,因而转载,原文是英文的,本人简单翻译下,大家看懂即可,有不妥的地方请留言. 如何在CentOS 6上同时安装Python 2.7和Python 3.3 本文将介绍如何在CentOS 6上安装Python 2.7和3.3.下面以Python 2.7.6和Python 3.3.5为例进行说明,但本人实

centos6.5安装docker

centos6.5 安装docker 防伪码:吃的苦中苦,方为人上人! 前言:在当今的主流社会中,docker和openstatick是一大主流方向,下面为大家讲解理论知识和实际操作现实中的docker! 理论知识: 相信大家都知道docker是什么?那在这里就不多说了! Docker 基于 Go 语言开发,代码托管在Github上,并遵循Apache 2.0 开源协议. docker的专业叫法是应用容器(Application Container). 为什么要使用docker? 1 .快速交付

CentOS6.5 安装+ Tengine + PHP + MySQL

centos6.5安装+Tengine+php+mysql

Centos6.4 安装fail2ban防暴力破解

Centos6.4 安装fail2ban防暴力破解 一. 安装 curl -O https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.9.0 mv 0.9.0 0.9.0.tar.gz tar zxvf 0.9.0.tar.gz cd fail2ban-0.9.0/ python setup.py build python setup.py install 二.配置(防ssh暴力) vi /etc/fail2ban/jail.conf [s

CentOS-6.5安装配置JDK-7

安装说明 系统环境:centos-6.5 安装方式:rpm安装 软件:jdk-7-linux-x64.rpm 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 注:rpm,gz文件区别 初接解Linux的朋友一定对软件的安装特别头疼,同样都是for Linux,但RPM.tar.gz.DEB包还是有很大区别的,这种区别很有可能使你的安装过程进行不下去.那我

centos6.5安装和配置cobbler

Cobbler介绍 Cobbler 是一个系统启动服务(boot server),可以通过网络启动(PXE)的方式用来快速安装.重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows.该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理 DHCP,DNS,以及yum包镜像. Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发

CentOS6.4安装python2.7.3环境和Tornado

Centos6.4默认的python环境是2.6.6.我们可以自己安装Python 2.7.3. 但是值得注意的是,我们必须不能破坏系统的环境. 因为几个关键的实用应用程序依赖于Python2.6.6. 如果替换了系统的python环境就会发生很多难以预见的错误,导致要重装系统. 在没有破坏系统的python环境的情况下安装Python 2.7.3. 执行以下命令,请使 用root的身份登录或者使用sudo命令 一.安装Python 2.7.3 1. 安装开发工具 为了编辑Python,你必须要

CentOS6.5安装Cacti统计图乱码解决

这个就是rrdtool调用字体失败 安装字体即可 [[email protected] -]# yum -y install  cjkuni-ukai-fonts #安装字体 [[email protected] -]# fc-cache -f -v #刷新字体哦缓存 CentOS6.5安装Cacti统计图乱码解决,布布扣,bubuko.com