asterisk sip配置说明详述.docx
《asterisk sip配置说明详述.docx》由会员分享,可在线阅读,更多相关《asterisk sip配置说明详述.docx(22页珍藏版)》请在冰豆网上搜索。
![asterisk sip配置说明详述.docx](https://file1.bdocx.com/fileroot1/2022-11/18/e62aacdc-0e62-4eaf-81fa-ebbf0996dc32/e62aacdc-0e62-4eaf-81fa-ebbf0996dc321.gif)
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流中发送保