asterisk sip配置说明.docx

上传人:b****7 文档编号:9242031 上传时间:2023-02-03 格式:DOCX 页数:28 大小:29.45KB
下载 相关 举报
asterisk sip配置说明.docx_第1页
第1页 / 共28页
asterisk sip配置说明.docx_第2页
第2页 / 共28页
asterisk sip配置说明.docx_第3页
第3页 / 共28页
asterisk sip配置说明.docx_第4页
第4页 / 共28页
asterisk sip配置说明.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

asterisk sip配置说明.docx

《asterisk sip配置说明.docx》由会员分享,可在线阅读,更多相关《asterisk sip配置说明.docx(28页珍藏版)》请在冰豆网上搜索。

asterisk sip配置说明.docx

asterisksip配置说明

asterisksip配置说明

 

1.       介绍

extensions.conf中使用sip设备的语法是SIP/devicename,devicename名在下一节中说明。

如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开DNSSRV功能。

如果定义了一个SIP代理,可以使用SIP/proxyhostname/user或者SIP/user@proxyhostname形式,proxyhostname的定义在下面的章节说明。

2.        在CLI中的查询命令:

u      sipshowpeers                    显示所有的SIPpeers(包括friends)

u      sipshowusers                    显示所有的SIPusers(包括friends)

u      sipshowregistry          显示注册到的主机状态

u      sipdebug                     显示所有的Sip信息

u      modulereloadchan_sip.so  重新装载sip的配置文件

 

3.         设备命名

命名一个设备之前,要先理解Asterisk是怎么处理呼入电话的:

1)        Asterisk取出SIPFrom:

address中的username,使用它来匹配系统中定义的type=user的的设备名。

2)        Asterisk检查INVITE请求中的IP地址和端口号,使用它来匹配系统中定义的type=peer的设备。

不要混淆extensions和设备名的概念。

设备需要一个唯一的名字。

设备名不能用于电话号码。

电话号码是拨号计划中的声明的一个extension。

注意:

参数username并不是用户名的意思,在大多数情况下,它根本不是必须的。

在后边,我们把它重命名做defaultuser,因为他与defaultip合并使用。

4.       通用属性说明

[general]                      ;通用属性

 

 

 

context=default            ;呼入电话默认使用的context

allowguest=no               ; 允许或拒绝客户呼叫 (默认 yes)

allowoverlap=no            ; 允许重叠拨号(默认yes)

allowtransfer=no           ; 允许呼叫转接(默认yes)

                              

realm=mydomain.tld           ; 认证的领域。

默认是asterisk,如果在asterisk.conf中设置了系统名称,

;该值就会默认成系统的名称,Realms设置必须全局唯一。

一般可以设置

;为主机名或域名。

bindport=5060            ;asterisk监听的本地端口号。

(SIP标准端口号5060) bindaddr=0.0.0.0          ;绑定的IP地址 (0.0.0.0所有地址)

srvlookup=yes            ; 打开外呼的DNSSRV查找。

注意,asterisk仅使用SRV记录中的第一

;个主机。

该功能可以在拨号计划中使用SIP/username@domain形式通过

;域名拨打Internet上的SIp电话。

                                

                               

pedantic=yes               ; 打开头信息中tags值检测,URIs和多行格式化头信息中国际字符转换等

;严格的SIP兼容性问题。

(默认是no)

 

下面是关于TOS参数,可以参考doc/ip-tos.txt

tos_sip=cs3              ;SetsTOSforSIPpackets.

tos_audio=ef             ;SetsTOSforRTPaudiopackets.

tos_video=af41           ;SetsTOSforRTPvideopackets.

 

 

maxexpiry=3600          ; 注册和订阅的最大间隔-秒

minexpiry=60             ; 注册和订阅的最大间隔-秒(默认 60)

defaultexpiry=120         ; 默认注册间隔的时长

t1min=100               ; 消息到达录音服务器的最小折返时间,默认100ms

notifymimetype=text/plain   ; 修改在通知中消息MWINOTIFY 的mime类型

checkmwi=10             ; peer检测语音邮箱的时间间隔

buggymwi=no             ;CiscoSIP防火墙不完全支持MWIRFC。

打开该选项时,向电话发送MWI时,也不会收到错误信息。

                              

vmexten=voicemail         ; 语音邮箱在拨号计划中的extension。

用来设置MWI通知消息中的

;Message-Account信息,默认是asterisk。

disallow=all               ; 先屏蔽掉所有的编码

allow=ulaw                ; 打开允许的编码,按顺序引用

allow=ilbc                 ; 更多的选项,看文档 doc/rtp-packetization

 

下面参数设置了呼叫等待音乐的默认项,如果没有在拨号计划中使用Set(CHANNEL(musicclass)=whatever) 指定通道的呼叫等待音乐首选项,将会使用该值。

这个选项可以使指定为全局的,也可以对单个user或peer设置。

mohinterpret=default

 

呼叫等到时,建议通道播放的等待音乐。

这个选项可以使指定为全局的,也可以对单个user或peer设置。

mohsuggest=default

 

language=en                ; 设置所有users/peers的语言,也可以对单个users/peers设置。

relaxdtmf=yes            ; 宽松dtmf处理

trustrpid=no             ; 是否信任远端ID(Remote-Party-ID)

sendrpid=yes            ; 是否发送远端ID(Remote-Party-ID)

progressinband=never      ; 是否产生呼入铃音。

Never表示从来不适用呼入信号。

可选值:

yes,no, never。

默认值never。

useragent=AsteriskPBX    ; 修改useragent 字符串

promiscredir=no          ; 如果设置为yes, 允许302 或 REDIR非本地SIP地址。

注意,对本地

                        ;系统做重定向操作会导致循环调用,asterisk并不支持这种操作。

usereqphone=no          ; 如果设置为 yes, 会在uri 中增加";user=phone",使uri中包含一个合法

;的电话号码。

dtmfmode=rfc2833       ; 设置发送DTMF模式。

默认:

rfc2833

                            ;其他选项:

                            ;info:

 SIPINFOmessages

                        ;inband:

按键的设备产生拨号音 (需要64kbit 编码 -alaw,ulaw)

                        ;auto:

 默认使用rfc2833,如果远端不支持时会使用inband

                       

 

compactheaders=yes        ; 发送压缩的SIP头.

 

videosupport=yes          ;打开视频支持。

maxcallbitrate=384        ; 视频呼叫的最大速率 (默认 384kb/s)

callevents=no             ; sipua执行事件时产生管理事件

alwaysauthreject=yes      ; 一个INVITE 或 REGISTER请求由于任何原因被拒绝时,总会使用同一

;个原因,用户名合法但密码不正确。

而不会告诉请求者是否有这个

;user或peer。

这样会减少攻击者扫描SIP账户的可能性。

 

g726nonstandard=yes       ; 是否使用G726-32 协商,使用AAL2包次序来替代RFC3551(需要

;Sipura 和 GrandstreamATAs)的次序。

AAL2与RFC3551的规则相反,

;会使用AAL2-G726-32协商。

 

matchexterniplocally=yes  ; 如果本地设置与外部设置相同,仅替代externip 或 externhost.

 

dynamic_exclude_static=yes   ; 不允许动态主机使用静态主机的IP地址注册。

这将避免使用相同

;IP注册的错误。

 

contactdeny=0.0.0.0/0.0.0.0     ; 拒绝所有主机的联络

contactpermit=172.16.0.0/255.255.0.0  ; 只能有一部分IPs可以注册到该服务器

 

 

如果设置了regcontext,将会为一个是有us注册和反注册并且有regexten=配置项目的用户动态创建和销毁一个NoOppriority1extension。

可以使用&指定多个context。

如果没有指定'regexten' ,将会使用注册peer的regexten或名字。

如果指定了多个context,则必须在regexten中使用@来指定。

在regexten中也可以使用'&'来指定多个。

Regexten中也可以使用模式匹配。

regcontext=sipregistrations

 

5.        RTP定时器

这些是当前音频和视频流使用的定时器。

RTP超时仅仅应用于音频通道。

该属性可以全局设置,也可以对每一个设备设置。

 

rtptimeout=60                     ;如果60秒之内音频通道没有RTP或RTCP活动,将挂断电话。

                        ;主要使用在通话中对方掉电或是老人忘记挂电话的情况。

         ;

rtpholdtimeout=300        ; 如果300秒之内音频通道没有RTP或RTCP活动,将挂断电话。

                        ; 主要使用在我方等待时间过长的情况

rtpkeepalive=          ;在RTP流中发送保活信息,保持NAT开放。

默认是关闭(0)

 

6.       SIP调试信息

sipdebug=yes            ;打开SIP调试信息

recordhistory=yes         ; 默认记录SIP历史

dumphistory=yes          ; 在对话结尾丢且SIP历史,被写到DEBUG日志

 

7.        状态通知STATUSNOTIFICATIONS(SUBSCRIPTIONS)

 

可以使用"hint"priority来订阅extensions的状态 (见extensions.conf.sample) 。

chan_sip支持两种通知的格式:

dialog-info 和 SIMPLE 。

如果你为一个设备设置了呼叫限制,就可以得到更多的细节报告(比如busy)。

当呼叫限制时,会被告知忙。

为了能够转接,你至少需要设置限制级别为2。

对于队列,你需要状态报告达到这个细节的界别。

不管怎么样,如果你使用Sip订阅,队列和管理会为读状态信息使用相同的内部接口。

注意,如果设置了一个realtime的拨号计划,并且使用了realtimeswitch,订阅不会工作。

 

allowsubscribe=no              ;不支持订阅 (默认yes)

subscribecontext=default  ;为订阅请求设置context。

用来限制订阅到本地extensions。

;可以对每个peer/user进行设置。

notifyringing=yes        ;当发起其他呼叫时,INUSE状态的订阅者是否会发送RINGING(默认no)

notifyhold=yes         ;处于HOLD 状态时,通知订阅者。

(默认no)

                            ;如果在使用realtime时,打开了notifyringing 和 notifyhold,将会增加很

                            ;多的数据库的传输。

limitonpeers=yes         ;仅对peers进行呼叫限制。

 

8.       传真T.38

该项目既可以在[general]中设置, 也可以对每个设备进行配置。

设置为yes,表示允许在SIP到Sip的模式下传输传真,传输的两端都必须配置为支持T38。

T.38 仅工作在SIP到SIP 呼叫中。

 

 t38pt_udptl=yes             ; 默认false

9.       外呼SIP注册

 

Asterisk可以把自己作为一个SIPua注册到一台SIP代理上。

注册格式如下:

register=>user[:

secret[:

authuser]]@host[:

port][/extension]

 

 

 

如果没有指定extension,将使用's'extension。

该extension必须在extensions.conf中定义,以便于可以从SIP代理上接收呼叫。

Host即可以是DNS中定义的一个主机名,也可以是在下面定义的一个section名,如serverA,见本文最后部分。

 

例子:

register=>serverB:

1111@10.0.2.252/serverA

register=>1234:

password@         ;将把呼叫传递给's'extension      

 

register=>2345:

password@sip_proxy/1234

 

在代理10.0.2.252上注册serverB。

如果你在下面定义了一个section叫做serverA,则呼叫会转到serverA中定义的context中。

否则呼叫将会从这个代理上链接到本地extensionserverA(定义在extensions.conf中), 使用默认的context。

u       技巧1:

尽量避免在sip.conf中设置主机名作为section,如[]

u       技巧2:

如果有双向呼叫时,在代理中分开定义type=peer 和 type=user,避免使用type=friend

 

registertimeout=20              ; 注册间隔20秒(默认)

registerattempts=10            ; 注册尝试次数,

; 0 一直尝试,直到接受了注册。

默认值0

10.  NAT支持

如果Asterisk在一个NAT设备内部与外部的一个服务通讯,需要设置externip,externhost 和 localnet。

 

externip=200.201.202.203      ; 在公网上的一个中间人地址,处理SIP消息。

当注册和与一个代理通讯

;时,需要设置externip和localnet

 

                             

externhost=         ; 也可以配置一个域名,Asterisk 将会执行DNS查询。

不推荐这

;种方式,尽量使用IP,配置externip。

externrefresh=10                ;更新externhost的时间间隔。

 

可以有多个本地配,设置一个合理的就可以。

(RFC1918--私有地址分配 )                             

localnet=192.168.0.0/255.255.0.0   ;AllRFC1918addressesarelocalnetworks

localnet=10.0.0.0/255.0.0.0         ;AlsoRFC1918

localnet=172.16.0.0/12                 ;AnotherRFC1918withCIDRnotation

localnet=169.254.0.0/255.255.0.0 ;Zeroconflocalnetwork

 

 

nat=设置用于Asterisk在一个公网地址上,需要和一个NAT设备后的设置通讯。

如果出现音频问题,一般是NAT配置或防火墙屏蔽了SIP+RTP端口。

RTP端口配置在rtp.conf中。

 

nat=no                        ; 全局NAT 配置,(影响所有的peers和users),取下列值:

;yes 总是忽略信息,假定使用NAT

;no 基于RFC3581使用NAT模式(;rport)

; never 从不尝试使用NAT模式或RFC3581支持

; route假定使用NAT,不发送rport

                             

11.  媒体流处理

 

默认情况下,Asterisk会尽量使音频流走最优的路径(re-invite)。

如果没有特别设置媒体流需要通过服务器的话,Asterisk会把媒体流重定向。

当Asterisk在NAT外部,客户端在NAT内部时,上述功能不能工作,这时必须配置canreinvite=nonat。

 

canreinvite=yes            ; 默认情况下,RTP媒体流会不经过服务器,在呼叫两端直接传递。

; 一些设备不支持这种方式(特别是一端在NAT内)。

默认设置yes。

; 如果所有的客户端都在NAT内,或其他原因想让媒体流通过服务器,

;需要关闭该选择。

 

directrtpsetup=yes              ; 打开新的实验性的直接RTP建立,建立一个呼叫,媒体流直接

;peer-to-peer 传递,而不是使用re-invites 方式。

视频不支持该方式。

; 被叫方发送RTP载荷和收到200OK响应的fmtp头信息不能与主叫的

;INVITE请求匹配。

; 如果NAT后边的设备设置了canreinvite=yes,传输也会失败。

                      

 

canreinvite=nonat         ; 允许媒体路径重定向的另一个选项,告诉发送媒体流的peer不在

                            ;  NAT里边, (RTP核心可以决定使用收到媒体的from地址).

 

;canreinvite=update             ; 允许媒体路径重定向的第三个选项,UPDATE替代INVITE,可以和'nonat'

                            ; 合并成'canreinvite=update,nonat'. 相当于 'yes'.

 

12.  REALTIME支持

关于ARA(AsteriskRealtimeArchitecture)结构的更多信息,可以看源代码中/doc 目录下的realtime.txt和extconfig.txt文件。

 

rtcachefriends=yes              ; 通过把realtimefriends加入到一个内部列表中来缓存friends。

                            ;就好像是把friends从配置文件中加载一样。

(yes|no)

 

rtsavesysname=yes             ; 注册时保存systemname到realtime数据库,默认no

                       

rtupdate=yes               ; 注册时更新数据库(yes|no)

; 如果设置为yes,当SIPUA 注册成功时,IP、原始端口、注册期间和用

; 户名会被更新到realtime数据库。

默认是yes。

; 如果设置为no,realtime功能可能会执行错误。

                             

rtautoclear=yes            ; 自动失效已经创建的friends(yes|no|)。

; 如果设置为yes,当注册预期时,friend将从注册信息中清除。

; 如果设置为一个整数,friends 会在这个秒数内过期,而不是在注册时间

; 间隔内过期。

                              

 

ignoreregexpire=yes            ; 打开这个设置有两个功能:

; 对于非realtimepeers,注册过期时,注册信息也不会从内存或asterisk数

; 据库移除。

如果有电话呼叫这个peer时,该注册信息会一直可以使用,

; 不管这个peer是否已经过期。

; 对于realtimepeers, 无论是否过期,从数据库得到的注册信息仍然可以

; 使用。

如果过期,realtimepeer信息仍然在内存(由于缓存或其他原因),

; 该信息不会从realtime数据库移除。

13.  SIP域名支持

 

收到的INVITE 和 REFER 消息可以和一系列的被允许的域名匹配。

每一个域名能够直接呼入他们描述的特定context.。

默认情况下,所有的域都会接收呼叫,并发送呼叫到指定的context或者user/peer指定的Context。

如果配置了域列表,REGISTER请求的域不在其中,呼叫将会被拒绝。

 

使用如下方式使用域:

 domain=[,]

例如:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1