在CentOS 5.4 上安装和配置Asterisk 和Digium 卡
现在大家基本都在用智能手机,加上我们的工作区已经被 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 [email protected] ; 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 [email protected] ; 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 电话 的后半部分。