在 CentOS 5.4 上安装和配置 Asterisk 和 Digium 卡
2010年02月23日 | 标签: asterisk, digium | 作者:vpsee
现在大家基本都在用智能手机,加上我们的工作区已经被 Wifi 覆盖,如果能让每个手机连上 Wifi,通过一个 Asterisk 服务器(网关)给内线打电话的话就会很方便,比如我在周围散步、或者和朋友聊天的话还可以收到办公桌上的内线电话。如何用智能手机(这里主要使用 Nokia E 系列)免费打内线电话呢?首先手机必须通过 Wifi 连上内部网络,然后通过内部网络的一台 Asterisk 服务器和电话线连上内部电话网络(PSTN),Asterisk 在这里相当于一个网关,用来连接 IP 网络和 PSTN 网络,这样我们就可以通过 IP 网上的电话(手机或者软电话)打内部电话(俗称座机)了,如果内部电话使用 IP 电话就更好了,就不用这么麻烦了。
上个星期在自己的 PC 上安装了一个 Digium 电话卡,并且 在 Ubuntu 上源码编译安装了 Asterisk 和 Digium 驱动,测了测效果,电话语音效果还不错。这个星期打算安装在服务器上,SUN 服务器没有 PCI 插槽,找了一台很老的 HP ProLiant ML110,配置是:Intel P4 3GHz CPU, 4GB ECC RAM,足够我们小组的人用了。按照 Asterisk 和 Digium 官方网站的推荐,VPSee 还是决定使用 CentOS 5.4 作为这台 Asterisk 服务器的操作系统。
安装和配置 Asterisk 和 Digium 卡
首先安装 CentOS 5.4 和优化系统,然后加上 Asterisk 的 Repositories:
# vi /etc/yum.repos.d/CentOS-Asterisk.repo [asterisk-tested] name=CentOS-$releasever - Asterisk - Tested baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/ enabled=0 gpgcheck=0 #gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium [asterisk-current] name=CentOS-$releasever - Asterisk - Current baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/ enabled=1 gpgcheck=0 #gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium
再加上 Digium 的 Repositories:
# vi /etc/yum.repos.d/CentOS-Digium.repo [digium-tested] name=CentOS-$releasever - Digium - Tested baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/ enabled=0 gpgcheck=0 #gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium [digium-current] name=CentOS-$releasever - Digium - Current baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/ enabled=1 gpgcheck=0 #gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium
安装 Asterisk 1.6 和 DAHDI:
# yum install asterisk16 asterisk16-configs asterisk16-voicemail \ dahdi-linux dahd
把 Asterisk 加到启动文件中以便开机就启动 Asterisk:
# /sbin/chkconfig asterisk on
安装完毕,启动和停止 Asterisk:
# /etc/init.d/asterisk start # /etc/init.d/asterisk stop
插上电话线和电话
Digium 驱动安装成功并重启系统后,Digium 卡上的闪烁灯应该会被点亮,注意在拆机箱、安装 Digium PCI 卡时要把卡接上主机内的电源,这样电话才会听见拨号音。左边黑线连接电话机,右边白线连接电话线(PSTN):
配置 Digium
先运行 dahdi_genconf 自动生成配置文件,这样会在 /etc/dahdi/ 下面产生一个 system.conf,在 /etc/asterisk/ 下产生一个 dahdi-channels.conf,注意 Zaptel 项目被重新命名为 DAHDI,所以目录和配置文件名也有变化:
# /usr/sbin/dahdi_genconf # vi /etc/dahdi/system.conf vi /etc/asterisk/dahdi-channels.conf
配置 Asterisk
给系统分配电话号码,简单说明一下,1)如果要打外线需要先拨 9;2)如果从电话上(连在 Asterisk 服务器上的那个电话)接电话的话,Dial(dahdi/g1,20,rt);3)想把 incoming 电话转接到手机上(电话号码是 9252)的话,Dial(SIP/9252,20):
# vi /etc/asterisk/extensions.conf [internal] exten => 9250,1,Dial(SIP/9250,20) exten => 9250,2,Hangup exten => 9251,1,Dial(SIP/9251,20) exten => 9251,2,Hangup exten => 9252,1,Dial(SIP/9252,20) exten => 9252,2,Hangup exten => 92461,1,Dial(dahdi/g1,20,rt) exten => 92461,2,Hangup exten => _9.,1,Dial(dahdi/g2/${EXTEN:1}) [incoming] exten => s,1,Answer() exten => s,2,Dial(dahdi/g1,20,rt) ; exten => s,1,Dial(SIP/9252,20)
给手机或 SIP 软电话分配电话号码
# vi /etc/asterisk/sip.conf [9250] type=friend context=internal username=9250 host=dynamic ; This device needs to register canreinvite=no ; Typically set to NO if behind NAT dtfmode=rfc2833 nat=no ; X-Lite is behind a NAT router disallow=all allow=ulaw subscribecontext=internal mailbox=9250@internal ; Subscribe to status of multiple mailboxes [9251] type=friend context=internal username=9251 host=dynamic ; This device needs to register canreinvite=no ; Typically set to NO if behind NAT dtfmode=rfc2833 nat=no ; X-Lite is behind a NAT router disallow=all allow=ulaw subscribecontext=internal mailbox=9251@internal ; Subscribe to status of multiple mailboxes ;Nokia Cellphone [9252] type=friend context=internal username=9252 host=dynamic ; This device needs to register qualify=no port=5060 notransfer=yes disallow=all allow=alaw
修改完配置文件后需要 Asterisk 重新导入配置文件:
# /usr/sbin/asterisk -vvvvvvvr localhost*CLI> reload
测试
手机必须是支持 Wifi,SIP 的智能手机,VPSee 在 Nokia E51/E60/E61/E70/E71/N82 上都测试过没有问题,如果没有手机的话也可以用任何 SIP 软电话(比如 X-Lite 等)客户端测试。测试具体配置可以看 用 Nokia 手机连接 Asterisk 打 SIP 电话 的后半部分。
Hi, thank you for all the information you have provided.
I am trying to install asterisk in centos and am having following problems:
when I do : ‘ yum install asterisk16 asterisk16-configs asterisk16-voicemail \ dahdi-linux dahd’ I get the following message:
*************88
Package asterisk16-1.6.0.25-1_centos5.i386 already installed and latest version
Package asterisk16-configs-1.6.0.25-1_centos5.i386 already installed and latest version
Package asterisk16-voicemail-1.6.0.25-1_centos5.i386 already installed and latest version
Package dahdi-linux-2.2.1-1_centos5.i386 already installed and latest version
No package dahd available.
Nothing to do
*******************
Please suggest what I should do to get Asterisk running.
Thank you.
Bandana
I
you have installed asterisk/dahdi successfully, just run the following command to start your asterisk server:
# /etc/init.d/asterisk start
you can also run ‘asterisk -r’ in a terminal to connect to the asterisk server:
# /usr/sbin/asterisk -r
localhost*CLI>
the asterisk configuration files are:
/etc/asterisk/sip.conf
/etc/asterisk/extensions.conf
/etc/dahdi/system.conf
/etc/asterisk/dahdi-channels.conf
good luck:)
不错一篇教程,请问这个可以用来商用吗?
可以,很多小的 VoIP 公司都是这么做的。
商用我们都用AVS和VPS不知道哪个的兼容性更好,而且支持G.729吗?
支持,可以从 Digium 那里买 license,或者用 open source 的 G.729 版本。
谢谢,很详尽。
asterisk新手,麻烦请问,digium卡没有什么驱动(.bin)么?比如diva的似乎就有一个Diva4linux_installer_9.5-110-91.bin……能解释一下么?
@kylelover
yum 安装就是二进制安装,比自己下载和安装 bin 包还要方便。
您好,本人新手,向您请教一些基本的原理问题,请问实现IP 互联网和3G网视频互通的最基本条件是什么?
我想实现这样的3G视频会议方案,客户A和客户B使用pc终端,客户C使用3G手机终端,A和B主动通过互联网连接服务器,C被叫,然后A、B、C三个客户实现视频会议。又或者C主动用手机连接服务器,A和B被邀请,然后A、B、C三个客户实现视频会议。
如下所示:
pc—-互联网—3G网—3G手机
1,必需的硬件除了pc和3G手机以外还需要什么?我看到有些方案是在3G网和IP网之间加一个视频网关,请问这个视频网关能否用软件的方式实现?这个视频网关的价格是不是是否昂贵?
2,是不是不管用什么方式,只要希望从pc接通3G手机,就必须要到运营商那里申请专门的线路和号码?
不知道大家有什么好的方案?纯软件(只添加简单的板卡)能否解决?asterisk+E1板卡这样的方式是否是理想选择?
新手,基本原理不太懂,谢谢指教。
你好,vpsee 请问公司有台 teledex的电话,可以运行在这个系统上吗?
@lee
普通的电话就可以。
请教一下400电话 chan_dahdi.conf 的 nationalprefix localprefix 应该填什么?
你好,vpsee 之前我也安装配置过asterisk,但是貌似不是很稳定的说~ 语音卡用的是openvox 的400p的,你的运行稳定吗,需要经常地重启吗?
@lee
asterisk 很稳定,安装配置好后基本不用管。