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数据库

[root@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配置文件,使用图形界面运行

/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"回车即可,然后一直按"<-"键退出.

如果这里选择了USE_MULTIDOMAIN,则需要往OpenSIPS的opensips数据库的domain表插入domain值。



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:opensipsrw@localhost/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.添加测试账户

[root@CentOS6 ~]# opensipsctl add 1 123456
new user '1' added
[root@CentOS6 ~]# opensipsctl add 2 123456
new user '2' added
[root@CentOS6 ~]# opensipsctl add 3 123456
new user '3' added
[root@CentOS6 ~]# opensipsctl add 4 123456
new user '4' added


你可能感兴趣的:(ICE,voip,opensips,mediaproxy)