设为首页 收藏本站
查看: 2051|回复: 0

[经验分享] CentOS6.6安装opensips及mediaproxy实现ICE-第一部分

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-27 08:49:40 | 显示全部楼层 |阅读模式
目前对于VOIP这块网上很少有详细配置资料,即便是有对于初学者来说都是似懂非懂的,本文结合网上部分资料并整理,若有问题请评论说明。

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

首先说下实现NAT穿越的几种方式:
  • 针对客户端的解决方案:STUN、TURN、ICE
  • 路由边界解决方案:应用层网关ALG、通用即插即用uPNP、中间盒通信MIDCOM
  • 服务器端解决方案:B2BUA、服务端RTP中继、会话边界控制SBC、FULL-PROXY、隧道技术
  • 还有RSIP



如何区分对称和非对称NAT:
网关设备在实现NAT时,对于内网某主机的若干UDP请求,网关设备对应地在外网上所建立的UDP端口数量
对称NAT是一个请求对应一个端口
非对称NAT是多个请求对应一个端口

ICE的协商过程:
  • 候选地址的收集: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
2
3
4
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
1
2
3
4
5
6
wget http://opensips.org/pub/opensips ... 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.启动并配置数据库
1
2
3
4
/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数据库的对接
1
2
3
4
5
6
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.建立软链接
1
2
3
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数据库
1
2
3
4
5
6
7
8
9
10
11
[iyunv@CentOS6 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配置文件,使用图形界面运行
1
/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.使用生成的配置文件替换默认的配置文件
    1
    2
    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的配置文件
    1
    2
    3
    4
    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:opensipsrw@localhost/opensips")' /data/opensips1.11.4/etc/opensips/opensips.cfg



    10.更改opensips日志路径,查看opensips日志,只要查看/var/log/opensips.log,方便我们对出现问题的处理
    1
    2
    echo "local0.* /var/log/opensips.log" >> /etc/rsyslog.conf
    service rsyslog restart



    11.配置opensips的启动文件,以后就可以使用service opensips [start/stop/restart]管理opensips服务.
    1
    2
    3
    4
    5
    6
    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.配置域的名字
    1
    sed -i 's#\# SIP_DOMAIN=opensips.org#SIP_DOMAIN=192.168.88.10#g' /data/opensips1.11.4/etc/opensips/opensipsctlrc



    1
    #以上的192.168.88.10可以更改成自己的域名或IP



    12.RTPProxy的安装与配置(这部分可省略,因为后面会使用Mediaproxy)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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.添加测试账户
    1
    2
    3
    4
    5
    6
    7
    8
    [iyunv@CentOS6 ~]# opensipsctl add 1 123456
    new user '1' added
    [iyunv@CentOS6 ~]# opensipsctl add 2 123456
    new user '2' added
    [iyunv@CentOS6 ~]# opensipsctl add 3 123456
    new user '3' added
    [iyunv@CentOS6 ~]# opensipsctl add 4 123456
    new user '4' added



  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71033-1-1.html 上篇帖子: linux系统配置samba服务 下篇帖子: CentOS6.6安装opensips及mediaproxy实现ICE-第二部分
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表