Asterisk权威文档(第3版)第26章中文翻译

Asterisk权威文档(第3版)第26章中文翻译
Asterisk权威文档(第3版)第26章中文翻译

Asterisk权威文档(第三版)Chapter 26 ————Security(安全)

我们总是竭尽全力去寻找安全,然而当我们得到安全时却又恨之入骨!

————John Steinbeck

Asterisk系统的安全至关重要,特别是当系统接入互联网时。一旦系统被入侵,攻击者们可以通过利用该系统实现免费的电话以赚取大量非法钱财。本章将就如何保障你的网络电话部署安全性提供一些建议。

扫描有效账户

如果你将Asterisk系统接入公共网络,几乎可以肯定你会做的其中一件事是扫描有效账户。示例26-1包含了来自于众多Asterisk系统作者的项目之一的日志条目。扫描往往先查找常见账户,之后才继续扫描在编账户。就像命名交换机扩展项一样命名SIP账户是很常见的,我们说的扫描就基于这一事实。而这就是我们下面第一条提示所要解释的关于Asterisk系统安全的问题:

提示1:使用非数字用户名作为你的VoIP账户将使它更难以被猜测,举个例子,在本书部分章节中,我们使用SIP电话本身的MAC地址作为它在Asterisk系统中的账户名。

例26-1账户扫描的日志摘录

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

'"123"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

'"1234"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

* The real IP address has been replaced with 127.0.0.1 in the log entries.

'"12345"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

'"123456"' failed for '203.86.167.220:5061' - No matching

peer found

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

'"test"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

'"sip"' failed for '203.86.167.220:5061' - No matching peer found

[Aug 22 15:17:15] NOTICE[25690] chan_sip.c: Registration from

'"user"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"admin"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"pass"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"password"' failed for '203.86.167.220:5061' - No matching

peer found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"testing"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"guest"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"voip"' failed for '203.86.167.220:5061' - No matching peer

found

[Aug 22 15:17:16] NOTICE[25690] chan_sip.c: Registration from

'"account"' failed for '203.86.167.220:5061' - No matching

peer found

...

[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from

'"100"' failed for '203.86.167.220:5061' - No matching peer found

[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from

'"101"' failed for '203.86.167.220:5061' - No matching peer found

[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from

'"102"' failed for '203.86.167.220:5061' - No matching peer found

[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from

'"103"' failed for '203.86.167.220:5061' - No matching peer found

[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from

'"104"' failed for '203.86.167.220:5061' - No matching peer found

[Aug 22 15:17:17] NOTICE[25690] chan_sip.c: Registration from

'"105"' failed for '203.86.167.220:5061' - No matching peer found

账户扫描利用尝试注册时服务器端返回的信息不同来判断某个账户存在与否。如果账户存在,服务器将请求身份验证。如果这个账户不存在时,服务器会立即拒绝登记。这就是我们第二条提示所要讨论的Asterisk安全问题:

提示2:将/etc/asterisk/sip.conf选项下的[general] 中的alwaysauthreject选项设置为yes。这个设置将使Asterisk系统把每个账户都当做是有效账户来回应,这能有效遏制尝试扫描有效用户名的行为。

身份验证的弱点

本章第一部分讨论了扫描用户名。即使你有一个难以猜测的用户名,但关键是你也有一个足

够强效的密码。加入一个攻击者获得了一个有效的用户名,他将试图强制破解密码,而一个强效的密码将使这个步骤困难得多。

默认的身份验证方案对SIP和IAX2协议来说都是很容易破解的。现在已经开始使用一种称为MD5的挑战与应对机制的身份验证方式。如果攻击者能捕捉到任何电话流量,比如一台笔记本在一个开放的无线网络下进行的SIP电话,这将使强制破解密码变得更加容易,因为他根本就不需要向服务器发起身份验证请求。

提示3:使用强密码。在互联网上有无数的可用资源帮助定义什么是一个强效的密码。也有许多强密码生成器可用。使用它们!

IAX2提供了可选择的基于密钥的身份验证方式和完整的加密电话。Asterisk系统提供的SIP 支持中包括了提供SIP信令加密功能的TLS支持。

提示4:如果你使用的是IAX2的基于密钥的身份验证方式,这是一个比默认的基于MD5的质询-响应的方法更为强有力的身份验证方式。为了进一步增强IAX2的安全性,使用加密整个呼叫选项。如果你是用的是SIP,用TLS来加密SIP信令。这将有效阻止攻击者捕获你和服务器之间一次成功的信令交换流程。

如果想了解更多关于IAX2和SIP加密设置的内容,请查阅第7章。

Fail2ban

最后两个部分讨论了涉及扫描有效用户名和强制破除密码的攻击。Fail2ban是一个应用程序,该程序可以查看Asterisk系统日志并且通过更新防火墙规则来屏蔽攻击来源以应对多次尝试身份验证失败的情况。

提示5:当你在可靠性低的网络里使用VoIP服务时使用Fail2ban以自动更新防火墙规则来屏蔽攻击来源吧。程序的安装

Fail2ban有许多可用的发行版可以安装。或者,你可以从Fail2ban网站上下载源文件来安装。在Ubuntu系统下安装该程序的话,使用如下指令:

$ sudo apt-get install fail2ban

如果需要在CentOS上安装Fail2ban,你必须启用EPEL(企业版Linux附加扩展包)资源库。欲知更多有关EPEL资源库的信息,参见本书46页的“第三方资源库”。一旦启用了该资源库,Fail2ban就可以通过运行如下命令安装:

$ sudo yum install fail2ban

提示:通过安装包安装Fail2ban时会默认安装一个随内核启动脚本以保证他开机启动。而如果你安装的是官网的源文件,请采取必要的步骤以确保Fail2ban开机启动。

iptables

为了让Fail2ban在检测到攻击后能够采取有效措施,你还需要安装iptables。在Ubuntu系统下安装iptables,使用如下指令:

$ sudo apt-get install iptables

在CentOS系统下安装iptables,则使用如下指令:

$ sudo yum install iptables

你可以通过运行iptables指令来确认iptables已安装。-L选项要求显示当前防火墙规则,在这种情况下,没有规则被配置:

$ sudoiptables -L

Chain INPUT (policy ACCEPT)

targetprot opt source destination

Chain FORWARD (policy ACCEPT)

targetprot opt source destination

Chain OUTPUT (policy ACCEPT)

targetprot opt source destination

发送邮件

允许Fail2ban在屏蔽一个ip时向系统管理员发送邮件是有趣且有用的。为此,必须安装MTA (邮件用户代理)。如果你不确定安装哪个MTA程序,我们在编写本章节时测试阶段用的MTA是Postfix(你也可以用它)。使用如下指令在Ubuntu系统下安装Postfix。安装程序可能会要求你回答几个问题:

$ sudo apt-get install postfix

在CentOS下安装Postfix,使用下述指令:

$ sudo yum install postfix

为了测试你的MTA是否安装成功,你可以使用mutt发送一个快速邮件。使用上述安装Postfix 相同的命令来安装mutt,只是安装包名要替换为mutt。然后运行如下指令以测试MTA:$ echo "Just testing." > email.txt

$ mutt -s "Testing" youraddress@https://www.360docs.net/doc/db15792307.html, < email.txt

配置

首先必须设置的是Asterisk系统的日志配置文件。在可用的Asterisk系统中,该文件的位置为/etc/asterisk/logger.conf。请确保你至少配置了数据格式和消息集,因为那是Fail2ban 运行所必须的设置:

[general]

dateformat = %F %T

[logfiles]

console =>notice,warning,error,debug

messages =>notice,warning,error

接下来必须要创建的配置文件是教Fail2ban应着重注意Asterisk日志文件中的哪些内容的文

件。将如下内容写入一个叫做/etc/fail2ban/filter.d/asterisk.conf的文件当中:[INCLUDES]

# Read common prefixes. If any customizations available -- read them from

# common.local

#before = common.conf

[Definition]

#_daemon = asterisk

# Option: failregex

# Notes.: regex to match the password failures messages in the logfile. The

# host must be matched by a group named "host". The tag "" can

# be used for standard IP/hostname matching and is only an alias for

# (?:::f{4,6}:)?(?P\S+)

# Values: TEXT

#

# *** All lines below should start with NOTICE

#

failregex = NOTICE.* .*: Registration from '.*' failed for ''

# - Wrong password

NOTICE.* .*: Registration from '.*' failed for ''

# - No matching peer found

NOTICE.* .*: Registration from '.*' failed for ''

# - Username/auth name mismatch

NOTICE.* .*: Registration from '.*' failed for ''

# - Device does not match ACL

NOTICE.* failed to authenticate as '.*'$

NOTICE.* .*: No registration for peer '.*' \(from \)

NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)

NOTICE.* .*: Failed to authenticate user .*@.*

# Option: ignoreregex

# Notes.: regex to ignore. If this regex matches, the line is ignored.

# Values: TEXT

#

ignoreregex =

接下来,你必须启动你刚刚创建的Asterisk过滤器。为此,向/etc/fail2ban/jail.conf中添加以下内容。你需要修改目的对象,发送方选项来为邮件的收发标题指定合适的目的地址:[asterisk-iptables]

enabled = true

filter = asterisk

action = iptables-allports[name=ASTERISK, protocol=all]

sendmail-whois[name=ASTERISK, dest=me@https://www.360docs.net/doc/db15792307.html,,

sender=fail2ban@https://www.360docs.net/doc/db15792307.html,]

logpath = /var/log/asterisk/messages

maxretry = 5

bantime = 259200

最后,在[DEFAULT]选项下/etc/fail2ban/jail.conf的两个选项需要被更新。Ignoreip选项指定

的ip列表不应该被阻塞。将你所需的ip地址列表是个好主意,这样你永远不会阻塞你自己即使你在试图建立一个通话的过程中不小心犯了错,举个例子,你也应该考虑添加其他的ip 地址到你的列表里,列入你的SIP服务提供者的ip。安全ip地址白名单能有效防止你滥用Fail2ban配置。一个聪明的攻击者会通过使用伪装的ip地址发送一系列数据包而导致Fail2ban屏蔽他们指定的伪装ip地址而使系统拒绝为该ip提供服务。

Destmail选项也应该被设置,该地址将被用于非Asterisk过滤器指定的邮件服务,例如Fail2ban第一次启动时发出的邮件。这里将教你如何配置这些选项:

[DEFAULT]

# Multiple addresses can be specified, separated by a space.

ignoreip = 127.0.0.1 10.1.1.1

destemail = youraddress@https://www.360docs.net/doc/db15792307.html,

媒介加密

注意ip电话的音频传输通常是使用未加密的格式来传输的,任何能够捕获传输信号的人都可以窃听语音通话。不过值得庆幸的是,Asterisk系统支持媒介加密的VoIP通话。如果你正在使用SIP,你可以使用SRTP(安全实时传输协议)来加密你的媒介。IAX2也支持完全的加密通话。关于加密媒介的详细信息你可以通过查阅第7章来了解。

提示6:在不受信任的网络上通话时使用SRTP或IAX2加密来加密你的传输媒介。

Dialplan漏洞

Asterisk的dialplan是另一个需要将安全问题提到表面来说的至关重要的领域。Dialplan可以被分解成多个内容以提供访问控制的扩展。例如,你想通过你的服务提供者使你的办公电话可以向外部打电话。但是你又不希望匿名用户出现在你的公司电话主目录里而能够借用你的服务提供商来拨打电话。使用文本确定只有你指定的用户才能使用你花钱购买的电话服务。

提示7:特别仔细的构建你的dialplan文本,同时避免将任何可能需要花钱的扩展写入[default]文本。

最近的一个被发现并公布的Asterisk dialplan漏洞是一个关于dialplan注入的想法。Dialplan 注入漏洞始于一个有既定模式的扩展,而结束于一段时间都提出的全字符匹配。以如下这个扩展为例:

exten => _X.,1,Dial(IAX2/otherserver/${EXTEN},30)

这个模式的扩展能够匹配任何以数字开头的任何长度的扩展。像这样的模式是非常常见且方便的。之后这个扩展将使用IAX2协议,设置呼叫超时30s,将电话请求发送到另一个服务器上。注意,这里使用的是${EXTEN}变量。而这恰是漏洞存在的地方。

在VoIP的世界里,没有理由要求一个电话呼叫扩展必须数字化。事实上,在使用SIP时通过名字呼叫他人这种情况很常见。正因为一串非数字化字符可能成为呼叫扩展的一部分,那么如果某人向这个扩展发起呼叫将会发生什么呢?

1234&DAHDI/g1/12565551212

这样的电话就是试图利用dialplan注入漏洞的例子。在前面的扩展定义里,一旦${EXTEN}被编译,实际的Dial()语句就会被执行:

exten => _X.,1,Dial(IAX2/otherserver/1234&DAHDI/g1/12565551212,30)

如果系统有配置好的PRI(集群速率接口)时,一个呼叫可能会导致一个呼叫请求从PRI发送到攻击者指定的号码,即使你没有明确指定该呼叫者拥有调用PRI的权限。这个问题很快就会话费你很多钱。

有(至少)两个方法可以避免这个问题。第一个也是最容易的方法是总是使用严格的模式匹配。如果你知道所接受的的扩展的长度,并且只接受数字化扩展,那么使用严格的数值模式匹配。如下例,如果你只接受4位数的数字扩展的话它将行之有效:

exten => _XXXX,1,Dial(IAX2/otherserver/${EXTEN},30)

减少dialplan注入漏洞问题的另一种方法是使用FILTER()dialplan函数。也许你接受任何长度的数字扩展,FILTER()可以轻松安全的实现这个要求。

exten => _X.,1,Set(SAFE_EXTEN=${FILTER(0-9,${EXTEN})})

same =>n,Dial(IAX2/otherserver/${SAFE_EXTEN},30)

如果想了解更多有关于FILTER()dialplan函数的语法的话,去查阅Asterisk CLI(命令行界面)中核心输出部分关于函数FILTER()的指令。

提示8:警惕dialplan注入漏洞,使用严格的模式匹配或使用FILTER() dialplan函数来避免这些问题。

确保Asterisk网络APIs(应用程序编程接口)的安全

FastAGI(快速Asterisk网关接口)和AMI(Asterisk管理接口)是两个Asterisk网络部署时常用的基于网络的API。查阅21章以了解更多关于AGI的细节。参考20章以了解更多关于AMI 的信息。

对于FastAGI,没有可用的认证和加密措施。因此将由管理员确保在Asterisk系统中通信只允许在FastAGI服务器之间进行。

AMI协议包括身份验证,但是安全性很弱。进一步而言,从隐私的角度来说,通过AMI传送的数据通常又是十分敏感的。因此确保AMI连接的安全性至关重要。最好的方式是只在可信赖的网络中应用AMI。但如果它必须在不可信赖的网络中使用的话,我们建议只允许使用SSL(安全套接层)连接。

去了解AMI能提供哪些权限至关重要。如果一个AMI用户被授予的所有权限都是可用的,那么该用户将可以在你的系统上运行任意命令。如果账户有权限更新配置文件,那么他将可以向运行System()应用的dialplan中添加扩展,这将使其能够运行任何他想运行的指令。如果他还拥有发起请求的权限,那么它可以向那些扩展发起请求,这将直接导致那些扩展被执行。要十分谨慎的开放你系统的AMI接入权限,同时谨慎限制/etc/asterisk/manager.conf 目录下每一个用户被授予了什么权限。

提示9:确保Asterisk网络APIs的安全。使用防火墙规则来限制对FastAGI服务器访问的限制。使用AMI 的加密功能,尽可能多的限制AMI账户的接入权限。

IAX2的拒绝服务

SIP是一个基于文本的协议,而IAX2是一个二进制编码的协议。IAX2的标准时RFC 5456,每个IAX2包包含一个呼叫号码,该号码用于将包与一个活跃的电话联系起来,这类似于SIP 协议中的Call-ID头。一个IAX2的呼叫号码拥有15比特的空间,它足够大能够处理一个系统中实际存在的呼叫数。但不幸的是,它也足够小,以至于十分容易被攻击者在短时间内发送足够多的小数据包来消耗掉一个系统中所有可用的号码,最终引发拒绝服务攻击。

Asterisk系统中的IAX2协议支持已经修改为自动防止这种类型的攻击。这种保护被称为调用令牌支持,并且在一个呼叫号码被分配出去之前需要进行三次握手。但是,旧版本的Asterisk 系统和一些无Asterisk系统的IAX2实现可能不支持这种保护,所以有许多选项来让你调整行为。

默认情况下,启用安全机制,不需要更改配置。如果某种情况下你想完全禁用调用令牌支持的话,你可以通过修改这个目录的配置实现/etc/asterisk/iax.conf:

[general]

calltokenoptional = 0.0.0.0/0.0.0.0

maxcallnumbers = 16382

默认配置下,一个能够通过调用令牌交换的主机仍然能使用呼叫号码表。调用令牌交换确保了呼叫号码只会被分配一次当我们确定我们没有收到一个假的源IP地址发送的请求。一旦我们知道一个请求是合法的,每个主机就都能实现执行资源限制。可考虑修改iax.conf目录下的以下选项:

[general]

; Set the default call number limit per host

maxcallnumbers = 16

[callnumberlimits]

; Set a different call number limit for all hosts in a

; specified range.

192.168.1.0/255.255.255.0 = 1024

[some_peer]

; A dynamic peer's address is not known until that peer

; registers. A call number limit can be specified in the

; peer's section instead of the callnumberlimits section.

type = peer

host = dynamic

maxcallnumbers = 512

如果对等实体还不支持呼叫令牌验证,但是你想在一检测到对等实体升级到支持呼叫令牌验证时就立刻启动它的话,有一个选项可以设置来允许这种行为:

[some_other_peer]

requirecalltoken = auto

如果你想允许客户通过IAX2访问,你很可能会想为未经验证的呼叫禁用掉呼叫令牌验证。这将确保最多的人能够通过IAX2呼叫您的系统。然而,一旦你这样做了,你也应该设置一个选项,该选项确定了全局限制下,多少呼叫号码可以被主机分配给未通过呼叫令牌验证的请求:

[general]

maxcallnumbers_nonvalidated = 2048

[guest]

type = user

requirecalltoken = no

任何时候如果你想看到一些关于当前系统中共有多少在使用的电话号码之类的统计时,在Asterisk CLI下执行IAX2的show callnumber usage指令。

提示10:为了解到IAX2已经更新到可以防止因为呼叫号码耗尽而导致的拒绝服务攻击而感到高兴吧。某些情况下如果你必须关掉这些安全特性的话,使用提供的选项设置来限制你可能暴露在攻击下的可能性吧。

其他缓解风险的措施

在Asterisk系统中,有几个特性可以用来减轻被攻击的风险。首先是使用允许和拒绝选项来为特权用户建立访问控制列表(ACL)。考虑到一个交换机不仅要提供本地SIP网络电话服务,也要接入公共网络提供SIP呼叫服务,通过互联网打进来的电话只被授予访问公司主电话目录的权限,而本地SIP电话则有权限花钱进行外部电话呼叫。在这种情况下,通过设置ACL 来确保只有本地网络中的设备可以使用账户进行电话呼叫是一个很棒的想法。下面就是一个通过设置/etc/asterisk/sip.conf实现这个想法的例子:

[phoneA] ; Use a better account name than this.

type = friend

; Start by denying everyone.

deny = 0.0.0.0/0.0.0.0

; Allow connections that originate from 192.168.X.X to attempt

; to authenticate against this account.

permit = 192.168.0.0/255.255.0.0

允许和拒绝接入选项在几乎所有接入IP服务的设备上都有配置。ACL另一个有用之处要在

/etc/asterisk/manager.conf中配置,以限制AMI账户只能连接到可以调用管理器接口的单一主机上。

提示11:在使用网络服务时尽可能用ACL为每一个特权账户权限。

另一种可以减轻安全风险的方法是配置调用限制。推荐的实现调用限制的方法是使用GROUP()和GROUP_COUNT()两种dialplan函数。下面就是一个限制SIP对等实体同一时间内发起的呼叫次数不超过2次的例子:

exten => _X.,1,Set(GROUP(users)=${CHANNEL(peername)})

; *** This line should have no line breaks

same =>n,NoOp(There are ${GROUP_COUNT(${CHANNEL(peername)})}

calls for account ${CHANNEL(peername)}.)

same =>n,GotoIf($[${GROUP_COUNT(${CHANNEL(peername)})} > 2]?denied:continue)

same => n(denied),NoOp(There are too many calls up already. Hang up.)

same =>n,HangUp()

same => n(continue),NoOp(continue processing call as normal here ...)

小提示12:使用呼叫限制来确保如果一个账户被盗取,它无法被用来在同一时间内发起上千次呼叫。

资源

有时候有些漏洞需要修改Asterisk系统源代码来解决。当这些问题被发现,Asterisk系统开发团队会放出只更新了安全问题修复的新版本,以此来保证系统的快速和便捷的升级。当这种情况发生时,Asterisk开发团队也会发布一个安全指导文件,以讨论漏洞的具体细节。我们建议您订阅

《terisk-announce》https://www.360docs.net/doc/db15792307.html,/mailman/listinfo/asterisk-announce

的邮件列表,以便在问题提出时您能在第一时间得到告知。

最受欢迎的能够进行SIP账户扫描和密码破解的工具之一是SIPVicious。我们强烈建议你去了解一下它,并用它审计一下自己的系统。当你的系统接入互联网时,别人很可能会对您的系统使用这个工具,所以不妨您自己先用一下它来确保自己系统的安全性。

其他一切与VoIP相关的资源你可以VOIPSEC邮件列表获取,它的网址是https://www.360docs.net/doc/db15792307.html,。该网站也包含了其他一些额外的资源。

最后,https://www.360docs.net/doc/db15792307.html,/voipabuse/这个网站有一些有用的系统。作者提供了一个网络攻击来源的地址列表并且说明如何屏蔽列表中的所有地址。作者还提供了一个名为AntiToll的示例脚本,该脚本屏蔽了所有美国本土以外的地址。

结论——一个更好的白痴

科技产业有一句格言是这样说的:一旦某个东西被制造出来去证明白痴,自然就会创造一个更好的白痴!这个格言的意义在于没有任何一件事物的发展可以说是终于结束了。科技永无止境。

当涉及到安全时,你必须时刻记住总有人在处心积虑想利用你的系统。而无论系统多安全,总有人想着破解它。

我们不提倡偏执,但我们认为哪怕是到这里也绝不是我们最后一次提及VOIP系统的安全问题。我们已经尽己所能的去把这本书写的全面,你也必须抱着对你自己的系统安全负责的责任去认真学习。

免费的网络电话越来越常见,而犯罪者们也必然会努力找到这些系统的弱点并利用它。

写在最后,本人系通信专业大四毕业生,此文是本人毕业论文翻译,本来只需要翻译3000字左右,但发现网上并没有本章的中文翻译,抱着为同是Asterisk学习者们尽一份微薄之力的想法便稍微加了班全部翻译完成,但由于本人英文水平有限,本文翻译必有不到之处,见谅!

在华硕RT-N11+上玩转OpenWRT+Asterisk

在华硕RT-N11+上玩转OpenWRT+Asterisk 华硕RT-N11+是一款高性能的300M 802.11n无线路由器,内置Ralink RT3052F 384M 主频的CPU,32M SDRAM,4M FLASH,高主频的CPU为希望开发具有定制功能应用的爱好者提供了很好的平台,下面介绍如何将OpenWRT和Asterisk移植到此路由上作为一个小型的SIP Server。 图表 1 被肢解的ASUS RT‐N11+ 图表 2 ASUS RT‐N11+ CPU特写

4M 的flash实在不给力,更换为8M 的 Spansion flash 型号S25GL064N,这样基本可以满足asterisk的运行。 一、编译openwrt,编译环境为fedora13。 1.svn checkout svn://https://www.360docs.net/doc/db15792307.html,/openwrt/trunk 2.cd trunk 3../scripts/feeds update -a 4../scripts/feeds install -a 5.make menuconfig 选中Target System->Ralink RT288x/RT305x 选中Subtarget-> RT305x based boards

选中Network->Telephony->asterisk18 LuCI->Servcer Interfaces->luci-sgi-uhttpd

6.make V=99 编译完成可以在trunk看到以下文件 bin/ramips/openwrt-ramips-rt305x-fonera20n-squashfs-sysupgrade.bin 偷个懒借用了fonera20n的映像,程序可以跑,LEDD和按键未验证,有兴趣可以参考target/linux/ramips/files/arch/mips/ralink/rt305x/mach-fonera20n.c建立针对RT-N11+的映像。 二、烧录程序 1. 用编程器烧录bootloader“uboot_SDK_nor_sdr32M32bit_v3508_20110919.bin” 2. 连接串口,pin1-pin4依次为VCC,GND,CPU_TX,CPU_RX,波特率57600 3. 烧录openwrt映像 1)在PC机上搭建tftp服务器推荐用Tftpd32.exe, 2)将文件“openwrt-ramips-rt305x-fonera20n-squashfs-sysupgrade.bin”放到 tftp工具的目录下, 3)启动设备在boot menu中选择2按提示输入IP地址和映像名称,升级。

Asterisk安装指南

Asterisk安装指南 2010-03-20 10:49 1、选择操作系统 据说Asterisk对大多Linux支持的都比较好,内核版本2.6.9-55.EL安装起来很顺利,2.4的麻烦一些。注意安装系统的时候选择上开发环境的包。2、在/usr/src目录中下载Asterisk相关安装包并解压 #cd /usr/src https://www.360docs.net/doc/db15792307.html,/pub/libpri/releases/libpri-1.4.10.tar.gz https://www.360docs.net/doc/db15792307.html,/pub/zaptel/releases/zaptel-1.4.12.1.tar.gz(dahdi asterisk1.6以后就不用这个,用https://www.360docs.net/doc/db15792307.html,/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.6.1+2.6.1.tar.gz) https://www.360docs.net/doc/db15792307.html,/pub/asterisk/releases/asterisk-1.6.2.tar.gz https://www.360docs.net/doc/db15792307.html,/pub/asterisk/releases/asterisk-addons-1.6.2.0.tar.gz https://www.360docs.net/doc/db15792307.html,/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz # tar -xvzf *.tar.gz 3.安装libpri # cd libpri-1.4.9 # make # make install 4.安装zaptel # cd .. # cd zaptel-1.4.12.1 # make # make install # make config 5.安装asterisk # cd .. # cd asterisk-1.4.24.1 # ./configure # make # make install

Asterisk配置文件列表以及常用指令

配置文件说明列表:

常规指令 Authenticate:鉴别用户 VMAuthenticate:根据“voicem ail.conf”鉴别用户 Curl:接受外接URLs的修复。支持POSTing DUNDiLookup:用DUNDi查寻号码 SendDTMF:发送独裁的DTMF数据 SendImage:发送图像档案 SendText:发送给客户正文消息 SendURL:发送给客户USL以显示 System:执行系统命令 Transfer:将访客转移到另一个扩展名 TrySystem:0回复执行系统命令 Wait:稍等 WaitExten稍等: WaitForRing:等待呼叫申请 WaitMusicOnHold:等待,在线音乐 Billing ForkCDR:将CDR分成两个独立的实体 NoCDR:确保 asterisk没有把CRD保存为特定的呼叫 ResetCDR:重新安装CDR数据 SetAccount:设置帐簿号码 SetAMAflags:开通AMA标志开户的渠道 SetCDRUserField:建立CDR用户领域 AppendCDRUserField:给CDR用户附加数据 Call m anagement (hangup, answer, dial, etc) Answer:如果呼叫回复一个信道 Busy:显示忙的情形等待挂断 ChanIsAvail:如果信道可以利用即核查 Congestion:显示拥塞等待挂断 Dial:设置一个指令连接当前的信道 DISA:直接访问内在系统 Hangup: 无条件挂断 Ringing显示呼叫 Caller presentation (ID, Name etc) CallingPres:更改呼叫者的身份介绍 LookupBlacklist: 从黑名单数据库上查询访客的身份姓名和号码LookupCIDName: 从当地的数据库查询访客的身份和姓名PrivacyManager:如果没有CallerID过来,要求输入电话号码SetCallerID: 建立CallerID,发生矛盾服从CallerID SetCallerPres:建立访客资料的独立信道 SetCIDNam e:建立呼叫者身份姓名,发生矛盾服从CallerID SetCIDNum: 只建立访客的身份号码(没有姓名),发生矛盾服从CallerID SoftHangup: 请求挂断转到另一个信道

Asterisk常用调试命令

Asterisk基本配置 Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3Voip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和 chan_sip.so Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3Voip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和 chan_sip.so******

asterCRM安装配置手册

asterCC安装配置手册 一.安装环境 1.安装程序:astercc-0.14-beta-rc1.zip 2.操作系统:CentOS Linux or Redhat Linux with mysql 3.硬件要求:X86 CPU 1GHz 1GB RAM 20GB HardDisk Ethernet Adaptor 二.安流流程 1.安装CentOS Linux or Redhat Linux 2.下载安装程序: https://www.360docs.net/doc/db15792307.html,/news/astercc-and-astercc-box-released-014-beta-rc1 3.ssh登录后台,解压程序包 [root@sc38 ~]# unzip astercc-0.14-beta-rc1.zip 4.进入astercc-0.14-beta-rc1,更改可执行权限并执行install.sh脚本,根据提示进行安装 [root@sc38 astercc-0.14-beta-rc1]# chmod 755 install.sh [root@sc38 astercc-0.14-beta-rc1]# ./install.sh Please enter database information database host(default localhost): 设置数据库地址,默认为localhost database port(default 3306): 设置数据库连接端口,默认为:3306 database name(default astercc): 设置数据库名,默认为astercc database user name(default root): 设置数据库连接用户,默认为root database user password(default null):eLaStIx.2oo7 设置数据库连接密码,如果本机已安装Elastix,则密码为eLaStIx.2oo7 database bin path(default /usr/bin): 设置mysql的程序路径,默认指定/usr/bin Please enter the Asterisk infomation:

Asterisk的SIP type和身份认证

Asterisk的SIP type和身份认证 在Asterisk中对某个peer的类型分为3种:peer, user和friend 看看voip-info对这三种类型的解释 ?peer: A SIP entity to which Asterisk sends calls (a SIP provider for example). If you want a user (extension) to have multiple phones, define an extension that calls two SIP peers. The peer authenticates at registration. ?user: A SIP entity which places calls through Asterisk (A phone which can place calls only). Users authenticate to reach services with their context. ?friend: An entity which is both a user and a peer. This make sense for most desk handsets and other devices. Asterisk will create two objects, one peer and one user, with the same name. where it can be found (IP address/host name) and that it is reachable from now on. 简单的说,在这篇文档里, type=peer定义对方是一个服务提供者, 它允许你的Asterisk通过这里定义的服务商打电话; 而user则定义对方是你的一个客户端, 允许对方通过你的Asterisk打电话. friend就是两者兼有. 但是实际情况是什么? 试试这样的定义: [1001] username=1001 secret=xxxxx host=dynamic port=5060 type=peer context=from-extensions 然后用一个SIP客户端来尝试注册到你的Asterisk上, what happened? 你会发现客户端也能注册上! 其实type的真正意义在于Asterisk怎么去处理发往外部和来自外部的请求. type=peer 如果type是peer,有两层含义. 1. 可以将对方作为一个SIP Service Provider, 允许你的Asterisk通过对方进行呼出. 2. 如果对方在逻辑上是一个客户端, asterisk将根据传入的Invite请求来对对方进行身份验证, 但需要注意的是这里的验证不是通过username和secret, 而是通过对方的address和port. 这里分两种情况: * 对方的address和port没有匹配到你在sip.conf中对任何一个peer的设置, 如果你的Asterisk 允许匿名呼入(allowguest=yes), 那么, 该呼入将被传到在sip.conf的general配置中的context 上. 如果不允许匿名呼入, 直接拒绝该呼入. * 对方的address和port匹配到了任何一个sip.conf种的peer设置, 那么改呼入将被传到该peer 指定的context上.

asterisk+freepbx+astercrm的安装----lamp rpm安装

Linux下安装呼叫中心服务器(ASTERISK+FreePBX) 一、环境要求: 操作系统:centos 5.0以上(以最小化形式安装) Linux内核版本:2.6.22 Asterisk版本:asterisk V.1.6.2.18 FreePBX版本:FreePBX:2.9.0 以rpm方式安装好的LAMP环境 以root身份登录 二、所需软件包 https://www.360docs.net/doc/db15792307.html,/pub/telephony/asterisk/asterisk-1.6.2.1 8.tar.gz https://www.360docs.net/doc/db15792307.html,/freepbx-2.9.0.tar.gz 三、安装步骤 1、Lamp的安装 下载所有软件包到/usr/local/src路径 配置yum源,安装相关软件 yum –y update yum install –y httpd http-devel mysql mysql-devel mysql-server php php-devel php-mysql yum install php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-curl php5-gd php-db yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml

yum install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear php-pear-DB php-gd php-mysql php-pdo kernel-devel ncurses-devel audiofile-devel libogg-devel openssl-devel mysql-devel zlib-devel perl-DateManip sendmail-cf sox yum install gcc gcc-c++ wget bison mysql-devel mysql-server php php-mysql php-pear php-pear-DB php-mbstring nano tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel php-gd audiofile-devel gtk2-devel subversion kernel-devel yum install festival festival-dev yum install ncurses-base ncurses-bin ncurses-term libncurses5 libncursesw5 libncurses5-dev libncursesw5-dev yum install zlib1g zlib1g-dev yum install bison bison-doc yum install install libxml2 libxml2-dev yum install libtiff4 libtiff4-dev yum install libasound2 libgsm1 libltdl3 libpq4 libspeex1 libsqlite0 libtonezone1 libaudiofile0 libaudiofile-dev yum install libnet-telnet-perl mime-construct libipc-signal-perl libmime-types-perl libproc-waitstat-perl mkdir /var/lib/mysql chown –R mysql:mysql /var/lib/mysql /etc/init.d/httpd start chkconfig –level 35 httpd on mysql_install_db chown –R mysql.mysql /var/lib/mysql

Asterisk安装和测试

Asterisk安装 (红色字体部分为需要键入或修改的部分)

下载准备 系统环境:Linux CentOS 5.0,安装开发工具以及开发库。 Asterisk 源代码包asterisk-1.6.1.20.tar.gz,版本:1.6.1.20。 SIP软电话使用eyebeam 版本:1.5.8。 1.切换用户(需要输入管理员密码),执行 su root 2.进入源码包存放文件夹 [root@asterisk-test1 ~]#cd /usr/local/src 3.下载 [root@asterisk-test1 ~]#wget https://www.360docs.net/doc/db15792307.html,/pub/telephony/asterisk/releases/asterisk1.6.1.20. tar.gz 编译安装Asterisk 1.解压源代码包 [root@asterisk-test1 ~]# tar -zxvf asterisk-1.6.1.20.tar.gz 2.进入包目录 [root@asterisk-test1 ~]# cd asterisk-1.6.1.20 3.环境检测和预配置 [root@asterisk-test1 asterisk-1.4.5]# ./configure(其实这样直接进行configure并非十分规范。应当先使用“./configure –help”命令来 查看一些可用的选项和参数,然后根据实际情况才进行定制操作。)当环境预检测和预配置工作 做完时,最后会显示以上反馈信息。并且建立好Makefile。 注意:系统如果缺少安装必须的包,此步骤可能会出现configure: error错误,解决方案见后文可能遇到的问题 configure: creating ./config.status config.status: creating build_tools/menuselect-deps config.status: creating makeopts config.status: creating channels/h323/Makefile config.status: creating include/asterisk/autoconfig.h .$$$$$$$$$$$$$$$=..

Tekla常用设置(简)解读

1、当一张Xsteel的图纸转化为CAD的图纸时,被文字或尺寸标注遮挡处的线条时常会断开,问:怎样才能让两条线不断开? 要在绘制图纸中或转化到DXF / DWG 中显示连续线(例如穿过文本或图 纸标记画直线),可将以下变量设置为off: ? XS_USE_LINECLIP_IN_EXPORT (对于DXF / DWG 输出)。 ? XS_USE_LINECLIP (对于绘制的图纸)。 2.修改多边形形状时,系统默认的多边形的第一条边是无法调整的;要通过增加顶点移动来调整多边形的形状。 3、不要使用剪切来减短部件。由于在导出信息到 NC 文件时剪切并不总能影响部件长度,这会导致工厂错误。采用移动部件控柄或使用细部 > 接合来代替。 不要使用接合来延长部件。这会导致与连接和细部相关的错误。采用移动部件控柄来代替。 4、如何在报表中将连续的文字独立的列: A、在报表中的文本域中添加文本<,>; B、同时在输出文件时将报表的名称的后缀改为<*.csv>格式. C、打开时采用EXCEL打开即可. 5、定义轴线标签边框 要定义轴线标签边框大小,请使用工具>高级选项>图纸属性中的XS_DRAWING_GRID_LABEL_FRAME_FIXED_WIDTH变量。默认值为零,表明轴线标签边框的宽基于轴线标签的宽。要增加或减少边框的宽,请以毫米为单位输入需要的值。 XS_DRAWING_GRID_LABEL_FRAME_FIXED_WIDTH 6、滚轮鼠标 要设置滚动(不按住)滚轮时的缩放比例,使用变量 XS_ZOOM_STEP_RATIO_IN_MOUSEWHEEL_MODE。 要设置滚动并按住滚轮时的缩放比例,使用变量 XS_ZOOM_STEP_RATION_IN_SCROLL_MODE。 7、如何修改13.0系统默认的字体样式和标注样式 xs13.0的字体样式系统默认是Comic Sans MS 标注样式是Bookman Old Style 我太喜欢这些字体,我想把他们全部修改为宋体,虽然出图后也可以把他们修改为自己想要的那种字体,但感觉不是很方便,请问可以在系统下修改吗?我想一出图不经修改就可以是我想要的那种字体: 1.在这里也可以改,后面的为输出CAD转换的字体,*1.0的为修改字宽. // Examples: (remove the comment marks // to make the lines effective) // Arial Narrow = ARIALN.TTF * 1.0 // ISOCPEUR = ISOCP.SHX * 1.0 // ISOCTEUR = ISOCT.SHX * 1.0 2.在BAT文件中可以修改模型轴线的字体 rem *** Fonts --------------------------------------------------- set XS_DEFAULT_FONT=Arial Black set XS_DEFAULT_FONT_SIZE=10 set XS_TEXT_FONT=Arial Narrow rem set XS_VIEW_TITLE_FONT=Arial Narrow 8、将图形文件从XSTEEL转到CAD中的时候,图面上的字体有的时候会有位

asterisk配置小结

asterisk配置简单解说 软件版本 asterisk 1.2.7.1 gix101e sip 130 中文 一:通话设置部分 1:软件安装 debian系统下面可以使用如下命令安装,如果是其他发行版可以自己编译安装或者使用相应的包安装。 vax:/home/ailantian# apt-get install asterisk 2:帐户设置 sip的帐户设置 vax:/home/ailantian# cd /etc/asterisk/ vax:/etc/asterisk# ls adsi.conf codecs.conf logger.conf res_odbc.conf adtranvofr.conf dnsmgr.conf manager.conf rpt.conf agents.conf dundi.conf meetme.conf rtp.conf alarmreceiver.conf enum.conf mgcp.conf sip.conf alsa.conf extconfig.conf misdn.conf sip_notify.conf asterisk.adsi extensions.ael modem.conf skinny.conf asterisk.conf extensions.conf modules.conf telcordia-1.adsi cdr.conf features.conf musiconhold.conf voicemail.conf cdr_custom.conf festival.conf osp.conf vpb.conf cdr_manager.conf h323.conf oss.conf zapata.conf cdr_odbc.conf iax.conf phone.conf cdr_pgsql.conf iaxprov.conf privacy.conf cdr_tds.conf indications.conf queues.conf 这个目录下面的sip.conf bindaddr=192.168.100.144;这个填自己的ip地址。 allow=all;允许所有的解码类型。 添加下面的字段。下面的是帐户信息。 [777] type=friend username=777 secret=777 host=dynamic ; This device registers with us [888] type=friend username=888 secret= host=dynamic ; This device registers with us [333] type=friend username=333 secret= host=dynamic 然后还需要修改的文件是extensions.conf 然后才能够互通,否则可能会收到404,或者407错误。

asterisk常用命令

asterisk常用命令 Asterisk基本配置 Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3V oip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和chan_sip.so Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3V oip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和chan_sip.so******

asterisk目录及配置说明

asterisk 目录及配置说明 Asterisk 目录及配置文件 /etc/asterisk Asterisk 主目录,包含其它关于Asterisk 的配置文件; *zaptel.conf 这个配置文件放在/etc, 因为其它软件也可以使用Zaptel 这个硬件及其驱动, 所以不是放在/etc/asterisk 里. /usr/lib/asterisk/modules 这个目录包含所有可以加载Asterisk 模块(应用程序编辑器格式和有用通道), 在Asterisk 启运时会加载这些模块(可以编辑modules.conf). /var/lib/asterisk 比较重要的是astdb 文件与agi-bin 目录; astdb 包含Asterisk 当地数据库信息. sounds/ 所有声音提示的文件在里面,包括Asterisk 原代码中的sounds.txt 文件 mohmp3/ 如果配置了音乐保持,应用程序会在这个目录下查找mp3(用CBR从文件中去除身份标签). keys/ 使用公钥和私钥系统认证与一个由RSA 数字签名形成的一对等连接.公钥和私钥的扩展名分别为.pub 和.key firmware/ 这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其 中有Digium的lAXy的二进制固件镜像. images/ 只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联. /var/lib/asterisk/agi-bin agi-bin 包含所有脚本,可以通过许多已经建立的Asterisk 连接.系统的接口,在这里可以写自己的脚本来控制拨打流程。 ================配置文件================ /etc/asterisk/asterisk.conf 主要配置文件, 修改这个配置文件要用modprobe 装载Linux AGl 应用程序与 /etc/zaptel.conf 硬件接口的基本层

asterisk_freepbx安装指导书

Centos_asterisk_freepbx安装指导书 作者:曹焜 目录 Centos_asterisk_freepbx安装指导书 (1) 一、Centos系统安装: (3) 1. Centos 的安装首界面我们选择命令安装模式,输入"linux text"+"回车",直接 “回车”可到界面的安装模式: (3) 2. 检查光盘是否完整,我们选择跳过此检查,那样很费时间: (4) 3. Centos的安装进入欢迎界面。 (4) 4. 选择语言,建议选择English,能省掉不必要地麻烦,我第一次装选择chinese simplified但是后面会出现语言包安装问题,经过查资料,centos5.7版本确实有问题,后来还是选English,系统的英文总体不难,这个不必纠结。 (5) 5. 选择默认US 键位 (6) 6. 初始化进入选项安装 (6) 7. 提示是否格式化,我们选择图中那项 (7) 8. 接下来,不必太深入研究,都选择OK 或yes (7) 9. 选择时区:上海 (12) 10. 设置root密码: (12) 11. 这里要注意下,选择我们需要安装的软件工具包,我们选择自定义那个选项, 然后OK (12) 12. 勾选自己需要的工具包,如web服务,mysql== (13) 13. 系统提示准备安装 (14) 14. 安装过程中 (15) 二、Asterisk的安装 (16) 1.检查系统内核版本 (16) 2.检查是否已经安装kernel-devel和kernel-headers (17) 3. 检查是否已经安装以下的辅助软件包 (17)

4. 如果没有安装则用yum安装 (17) 5. 下载libpri, zaptel, asterisk软件包 (18) 6. 解压缩软件包 (18) 7.安装libpri (18) 8.安装zaptel (19) 9.安装asterisk (19) 10.安装asterisk-addons (20) 11.安装asterisk-sounds (20) 三、FreePbx安装 (21) 1. 查看系统中是否缺少以下服务,缺少将用“yum install 服务名”来安装 (21) 2. 禁用Selinux (21) 3. 安装需要的扩展包 (21) 4.安装lame (22) 5. 准备工作: (22) 6. 安装FreePBX (23)

Asterisk

第32章VoIP服务器——Asterisk 可以自己用软件实现电话交换机?是的,这就是本章我们要讨论的话题。如何在Linux下实现免费的电话交换机功能。 32.1用Linux实现免费电话大餐 在架设自己的电话系统之前,我们先看看传统的电话网络是如何工作的。传统的电话网络,叫做Public Switched Telephone Network,公共交换电话网络,简称PSTN,是一种全球联网的语音通信电路交换网络,通过中继和交换设备进行通讯。不难看出,我们现在使用的IP计算机网络和PSTN颇有几分相似之处,在PSTN中呼叫一个电话号码相当于通过IP网络到达一个IP地址,在骨干PSTN网络中,也和IP协议一样使用复用机制来传递数据。 对于私有电话系统来说,也和IP计算机网络有着类似的原理。公司的电话交换机直接对外(相当于IP网络中的公网地址),外部人员只能访问到电话交换机总机,由总机控制应该将这个连接转到哪个分机上(类似于IP中的NAT),内部的分机不是合法的电话号码(192.168.x.x?),只有通过公司的电话交换机才能与外界正常通讯。 在这里,公司的电话交换机,也就是通常所说的程控交换机,也叫PBX,Private Branch(telephone) eXchange的缩写,意思是私有/专有电话交换系统,传统的PBX使用PSTN网络连接并提供语音通话服务。 随着技术的发展,出现了基于IP网络的语音传输业务,即V oice over IP,简称V oIP,人们可以通过计算机网络(通常是指Internet或Intranet)进行语音通话,而后,又出现了基于IP网络的PBX,简称IPPBX,IPPBX不需要专用的网络,可以通过Internet和V oIP实现类似于传统电话系统的功能,而且,使用IPPBX进行通信,对内没有任何费用,只有网络建设成本,对外只需要支付接入到

Asterisk核心框架

Asterisk内核框架 Asterisk是一个开源的pbx系统,在公开的资料中,很难找到asterisk 内核系统的详细描述。因此,很有必要写一篇内核框架的描述文档,作为内部培训文档,相互学习提高。 本文主要从三个层面来描述asterisk内核,即asterisk内核模块、内核启动过程、基本呼叫流程。 一、asterisk内核模块 Asterisk由内部核心和外围动态可加载模块组成。内部核心由以下六个部分组成:PBX交换核心模块(PBX Switching Core)、调度和I/O管理模块(Scheduler and I/O Manager)、应用调用模块(Application Launcher)、编解码转换模块(Codec Translator)、动态模块加载器模块(Dynamic Module Loader)和CDR生成模块(CDR Core)。 外围动态可加载模块包括以App_开始的Applications、以Func_开始的Functions、以Res_开始的Resources、以Chan_开始的channels、以Codec_开始的codec编解码模块等。 1.内核模块 1) PBX交换核心模块(PBX Switching Core): l pbx.c pbx.c是asterisk的核心模块,每路呼叫都需要经过它调度。pbx实现了builtin applications,也就是内置的应用,比如最常见的Answer,Hangup, Background,Wait等等。 struct ast_app是一个关键数据结构,它定义了注册builtin applications的结构。 load_pbx函数用来注册builtin applications和一些命令行CLI命令(每个模块都有些CLI命令)。该函数在系统启动时被调用。 pbx_exec是 Answer/BackGround/Busy/Goto/GotoIf/Hangup/Set等builtin applications的执行入口函数,它被pbx_extension_helper调用。ast_pbx_start函数是每路呼叫的起点。 2) 调度和I/O管理模块(Scheduler and I/O Manager): l Channel.c: Channel.c/channel.h定义了channel操作的结构体和接口函数。struct ast_channel_tech结构体是所有channel都要用到的关键结构体,它定义channel操作的一系列回调函数指针,如call、 hangup、answer等。每个channel模块都会定义ast_channel_tech的实体,

asterisk入门资料

Asterisk入门资料

目录 1. 概述 (3) 2. 什么是asterisk?开源电话平 (3) 3. 为什么使用Asterisk? (3) 4. 专利技术有什么错? (3) 5. 我们要Asterisk做什么? (4) 6. Asterisk支持什么技术? (4) 7. 比较好的Asterisk参考书? (4) 8. 相关: (4) 9. 组件: (4) 10. 有用的网页: (5) 11. 重要链接: (5) 12. 重要信息: (5) 13. 外部交换借口/通道接口 (6) 14. 拨号计划: (6) 14.1. 上下文(context) : (6) 14.2. 分机以如下格式定义: (7) 14.3. Applications: (7) 14.4. 特别分机: (8) 14.5. 这个拨号计划会: (8) 14.6. 为拨号计划添加逻辑: (8) 15. 载入Ubuntu: (9) 16. 求助: (9) 17. 本章的任务: (10) 18. 备注: (20)

1.概述 subscriber:加入某个group,从而遵从某一个call restricion subscriber group:可以使用1种call restriction。 call restriction:将numbering plan中各项取出,各自组成成不同的呼叫限制方案numbering plan:通用,是一个整体的计划,里面包括长途,本地,等各种形式的方案————————————————————- 以上,用于拨入号码的预处理,实际上是一种过滤,下面才是真正的呼叫处理。————————————————————– route:一种策略,根据号码匹配的模式,选择走哪个trunk。 trunk:实际上做通一个链路,供route选择。 analog的,一个POTS就是一条analog trunk analog的数量由设备定, ip trunk没有限制数量,并且一个ip trunk连到对方IPPBX后,对方的subscriber 数量是不确定的,由那个IP PBX决定。 Asterisk,开始吧 ————————————————————– 2.什么是asterisk?开源电话平 Asterisk 通过了电话的开源平台。基本上就是一个软件的PBX。 最初是Digium 公司的Mark Spencer 编写的,这个公司就是他创立的,专门生产并销售Asterisk使用的硬件。Asterisk 简直就是一场电话的革命。 3.为什么使用Asterisk? 现在电信行业的混乱,因为各种专利技术应用在各种层次的网络上,导致很大的混乱。Asterisk 就是答案——给电信行业普遍的混乱环境带来秩序的革命。 4.专利技术有什么错? 没错,如果专利技术独立工作的话。就像你有剃须刀和剃须膏没错一样!但是让各种技术互相操作,专利技术就会除了要价过高、客户不满,以及缓慢的开发速度等问题之外的刻板和局限。

相关文档
最新文档