您的位置:首页 > 理论基础 > 计算机网络

Asterisk 实现VIOP网络电话

2015-05-04 10:49 253 查看
第一次接触asterisk,心里还是有点担心的,怕自己做不出来,上网查资料,发现现在的版本和那些资料所说的版本有很大的区别,看的不是很明白,于是去看《电话未来之路》,越看越不懂,只好自己上官网,全是英文,不过还好,看着官网上的资料,经过两个多星期的不懈努力,终于被我做出来了,于是想把它记录下来,希望帮到有需要的人!一、 环境准备a) CentOS 操作系统一台b) 需接入公网c) 关闭selinuxd) 关闭防火墙e) 安装webserver(Aapche)f) 安装DNSg) 安装Mail Serverh) 安装Mysql二、 安装支持包a) yum update –yb) shutdown -r nowc) yum install bison
yum install bison-devel
yum install ncurses
yum install ncurses-devel
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
yum install gnutls-devel
yum install gcc
yum install gcc-c++d) yum install -y epel-release dmidecode gcc-c++ ncurses-devel libxml2-devel make wget openssl-devel newt-devel kernel-devel sqlite-devel libuuid-devel gtk2-devel jansson-devel binutils-devele) yum install libtiff-devel php-gd php-mysql php-pear kernel-devel kernel-smp-develaudiofile-devel mysql-devel –yf) uname –rrpm –qa | grep kernel对比系统版本和kernel版本,只有一样才行三、 安装PJSIPa) cd /usr/srcb) wget http://www.pjsip.org/release/2.3/pjproject-2.3.tar.bz2c) tar –jxvf pjproject-2.3.tar.bz2d) cd pjproject-2.3.tar.bz2e) ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amrf) Make dep && Make && make installg) Ldconfigh) Ldconfig –p | grep pj四、 安装配置Asteriska) Cd /usr/srcb) wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/certified-asterisk-13.1-current.tar.gzc) tar –zxvf certified-asterisk/certified- asterisk-13.1-current.tar.gzd) cd certified-asterisk-13.1-cert1e) ./configure --libdir=/usr/lib64f) make menuselect(可以选择PJSIP)g) make && make installh) make samplesi) make configj) asterisk &k) asterisk –rl) pjsip reload(查看是否加载成功)五、 数据库设置a) /etc/init.d/mysqld restartb) Chkconfig mysqld onc) Mysqladmin –u root password newpasswordd) Useradd –c “Asterisk PBX” –d /var/lib/asterisk asteriske) Mysqladmin –u root –p create asteriskf) Mysqladmin –u root –p create asteriskcdrdbg) Cd /usr/srch) tar –zxvf freePBX.tar.gzi) cd freePBX/SQLj) mysql –u root –p asterisk < newinstall.sqlk) mysqld –u root –p asteriskcdrdbl) mysql –u root –pm) grant all pivileges on asterisk.* to asterisk@localhost identified by ‘freepbxdbpassword’n) grant all pivileges on asteriskcdrdb.* to asterisk@localhost identified by ‘freepbxdbpassword’o) flush privileges;p) \q六、 设置文件访问权限a) sed –i “s/User apache/User asterisk/g” /etc/httpd/conf/httpd.confb) sed –i “s/Group apache/Group asterisk/g” /etc/httpd/conf/httpd.confc) sed –i “s/AllowOverride None/AllowOverride All/g” /etc/httpd/conf/httpd.confd) sed –i “s/astrundir => \/var\/run\/asterisk => \/var\/run\/asterisk/g” /etc/asterisk/asterisk.confe) mkdir /var/run/asteriskf) sed –i “s/post_max_size = 8M/post_max_size = 20M/g” /etc/php.inig) sed –i “s/upload_max_filesize = 2M/upload_max_filesize = 20M/g” /etc.php.inih) chown –R asterisk:asterisk /var/spool/asterisk/ *i) chown –R asterisk:asterisk /var/log/asterisk/ *j) chown –R asterisk:asterisk /var/run/asterisk/ *七、 安装FreePBXa) Cd /usr/src/freePBXb) ./install_amp installRoot 输入数据库的用户名Mysql 输入数据库的密码………… 直接回车AMP web root(/var/www/)AMP web-admin(服务器地址)………… 直接回车c) echo “/usr/local/sbin/amportal start” >>/etc/rc.local 八、 FreePBX配置(web)a) 使用服务器地址在web中登录freepbx图形化界面b) 加载、升级模块 i. 点击admin,选择module admin ii. Check for updates online iii. 点击模块名称,选择down and install(update) iv. 点击process 执行 v. 当所有模块更新完毕之后,点击”Apply”应用,确认更改c) 添加分机号 i. 点击Applications,选择extensions ii. 选择Generic PJSIP device iii. User extension(分机号码) iv. Display name(该分机对应的名字) v. 点击chan_pjsip(将协议改成pjsip) vi. Secret(密码) vii. 点击submit保存配置,并点击”Apply”应用九、 客机注册a) 下载一个软电话(如zoiper)b) 将分机号的信息以及服务器地址对应填入zoiper中,保存即可十、 安全考虑a) 由于服务器放在公网,任何网络都可能扫描、注册我们的话机,这会引起电话被偷打,通话质量下降以及服务器崩溃,为了尽量减少这种情况,需要安装fail2ban服务b) 值得注意的是,最新版的fail2ban需要在Python 2.4以上,即使系统自带的Python版本是2.4以上的,也可以指定安装在自己新建的目录中,一面引起混乱c) 安装Python i. 下载安装包 ii. 解压安装包 iii. 指定编译位置 iv. 编译 v. 创建一个软链接
wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
tar -zxvf Python-2.5.2.tgz
cd Python-2.5.2
./configure –prefix=/usr/local/python-2.5.2
make && make install
cd /usr/local/
ln  -s python-2.5.2  python
d) 安装fail2ban i. 下载fail2ban安装包 ii. 解压安装包 iii. 编译 iv. 移动生成的可执行文件/usr/bin/ v. 拷贝启动文件到/etc/init.d下 vi. 安装fail2ban支持包(需要从光盘中拷贝) vii. 需要拷贝jail.local fail2ban.local到/etc/fail2ban/下(可以从别的地方拷贝,安装时是没有的)
wget http://nchc.dl.sourceforge.net/sourceforge/fail2ban/fail2ban-0.8.3.tar.bz2
tar -xvf fail2ban-0.8.3.tar
mv fail2ban-0.8.3 fail2ban
cd fail2ban
python setup.py install
mv /usr/local/python/bin/fail2ban-* /usr/bin
cp fail2ban/files/redhat-init /etc/ini.t/
mv /etc/init.d/redhat-init fail2ban
chmod 0755 /etc/init.d/fail2ban
cp fail2ban.local jail.local /etc/fail2ban/
rpm –ivh fail2ban-0.8.8-107.shmz65.1.118.noarch –force
viii. 配置文件 vi /etc/fail2ban/jail.conf loglevel = 3 默认日志级别 logtarget = /var/log/fial2ban.log 日志文件地址 socket =/tmp/fail2ban.sock socket位置 ignoreip = 127.0.0.1 忽略ip,在该清单中的ip不会被屏蔽 bantime = 600 屏蔽时间 findtime = 600 发现时间,在此期间内重试超过规定次数,会激活fail2ban maxretry = 3 尝试次数 backend = auto 日志修改检测机制 [ssh-iptables] Enabled = true 激活 filter = sshd 所采用的工作,按照名字可在action.d目录下找到 action = iptables[name=SSH, port=ssh, protocol=tcp] mail-whois[name=SSH, dest=root] logpath = /var/log/secure 目的分析日志 maxretry = 5 覆盖全局重试次数 bantime = 3600 覆盖全局屏蔽时间 service fail2ban restart 重启fail2ban iptables –L –n 查看有很多策略(注意:在启动fail2ban之前,必须把自己本地的防火墙关闭) fail2ban-client status 查看状态,发现jail list下有拦截的服务
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络电话 asterisk VIOP