asterisk sip配置说明(4)

2019-09-01 10:08

fromuser host port qualify defaultip rtptimeout rtpholdtimeout sendrpid outboundproxy rfc2833compensate t38pt_usertpsource

contactpermit ; 限制主机注册地点。

Contactdeny ; 一个小窍门,作为一个SIP提供者在相同的IP地

; 址注册,呼叫自己,会被重定向到同一位置。

在Asterisk中对某个peer的类型分为3种:peer, user和friend,在asterisk中是这样解释的:

type=peer定义对方是一个服务提供者, 它允许你的Asterisk通过这里定义的服务商打电话;

而user则定义对方是你的一个客户端, 允许对方通过你的Asterisk打电话. friend就是两者兼有。

但type的真正意义在于Asterisk怎么去处理发往外部和来自外部的请求. 如果type是peer,有两层含义.

n 可以将对方作为一个SIP Service Provider, 允许你的Asterisk通过对方进行呼出.

n 如果对方在逻辑上是一个客户端, asterisk将根据传入的Invite请求来对对方进行身份验证, 但需要注意的是这里的验证不是通过username和secret, 而是通过对方的address和port. 这里分两种情况:

u 对方的address和port没有匹配到你在sip.conf中对任何一个peer的设置, 如果你的Asterisk允许匿名 呼入(allowguest=yes), 那么, 该呼入将被传到在sip.conf的general配置中的context上. 如果不允许匿名呼 入, 直接拒绝该呼入.

u 对方的address和port匹配到了任何一个sip.conf种的peer设置, 那么改呼入将被传到该peer指定的context上

Asterisk还提供了一个insecure参数来配置对peer呼入的身份验证方式. insecure=port|invite

n port: Asterisk忽略对方的port, 只根据对方的address来验证某个peer, Asterisk收到对方的Invite后, 会发送SIP/2.0 401 Unauthorized到对方, 要求对方发送认证信息, 但事实上对方返回回来的认证信息不会被真正使用.

n invite: Asterisk对初始Invite不进行验证. 这意味着Asterisk直接使用客户端传入的Invite包中的信息尝试进行验证而不会发送SIP/2.0 401 Unauthorized包到对方

type=user

根据来源Invite包中的用户和密码信息来认证,所以对方不能也不需要Register到你的Asterisk服务器上.

需要额外说明一点的是Register, 如果某个peer的host设置为dynamic, 那么Asterisk允许客户端通过Register的方式来告诉Asterisk对方的地址和端口.

特别注意:经网友证实,以上细节仅限于SIP协议,对于IAX协议,在IAX里那个from验证IP是没有用的,形同虚设,必需使用上面的两行代码 验证对方的IP才行,要没有这两行,任何的asterisk只要知道你的服务器的IP都可以通过你的asterisk进行呼出,如果需要杜绝这个隐患,需 要修改/etc/asterisk/manager.conf文件,增加类似下面的例句:

deny=0.0.0.0/0.0.0.0

permit=122.227.22.22/255.255.255.0

17. SIP代理例子 ;[sip_proxy]

仅用于呼入。使用代理的IP地址来匹配呼入,因为我们不能使用username (caller id)匹配。 type=peer context=from-fwd host=fwd.pulver.com

;[sip_proxy-out]

type=peer ; 仅想做外呼 secret=guessit

username=yourusername ; 外呼代理的认证用户

fromuser=yourusername ; 一些SIP 提供端(代理)需要该配置 fromdomain=provider.sip.domain host=box.provider.com

usereqphone=yes ; 这个代理的URI中需要;user=phone

call-limit=5 ; 允许同时5个外呼到这个peer,由于realtime的peer不存

; 储在内存中,所以realtime时不能强制使用Call-limits

outboundproxy=proxy.provider.domain ; 发送外呼信号到这个代理,而不是直接到peer

port=80 ; 需要连接到的远程的端口号,也可以使用defaultip 配 ; 置中的defaultport

18. SIP设备本地连接的定义

type = user ; a device that authenticates to us by \field to place calls

; 一个设备,使用from字段认证到服务器,发起呼叫。

type = peer ; a device we place calls to or that calls us and we match by host

; 服务器呼该该设备,或者设备呼叫服务器并且服务器使用host字段来匹配

type = friend ; two configurations (peer+user) in one ; 上面两个配置的和(peer+user)

设备名我们推荐使用字母(a-z), 数字 (0-9) 和下划线

本地呼叫,最常使用的是type=friend

如果你的电话只能单向听到声音,应该是NAT 配置的问题。如果asterisk在公网上,客户端在一个NAT设备内部,你必须配置nat,同时打开qualify=yes属性,保持nat连接处于开放状态。

19. 配置实例 ;[grandstream1]

type=friend

context=from-sip ; 呼叫进入拨号计划的位置

callerid=John Doe <1234> ; 全caller ID,来修改呼入电话的callerid信息 host=192.168.0.23 ; 有一个静态私有IP地址。允许非注册时使用。

nat=no ; 表示服务器和客户端之间没有NAT设备 canreinvite=yes ; 允许RTP数据流不经过服务器

dtmfmode=info ; either RFC2833 or INFO for the BudgeTone call-limit=1 ; 同一时刻在服务器和客户端之间只允许一个呼入和一个呼出

; 相当于是一个peer和一个user,加起来是一个friend。这也会影

; 响到订阅。由于没有friend的联合的呼叫计数器,所以当前没有 ; 办法在sip.conf中限制每个客户端的内呼或外呼的数量。可以在 ; 拨号计划中用组计数器来达到这个目的。

mailbox=1234@default ; 语音信箱1234,context \disallow=all ; 先要屏蔽掉所有的 allow=ulaw ; 再按使用顺序打开允许的 allow=alaw

allow=g723.1 ; Asterisk仅支持g723.1直通寄存器( pass-thru) allow=g729 ; 如果没有获得g729 许可,仅支持直通寄存器( pass-thru)

callingpres=allowed_passed_screen ; 设置显示caller ID,更多信息参考doc/callingpres.txt

;[xlite1]

关闭X-Lite的安静压缩 (\Silence\

注意,Xlite 发送NAT保活数据包,因此qualify=yes不是必须的。 type=friend

regexten=1234 ; 当他们注册时,创建extension 1234 callerid=\Smith\<5678>

host=dynamic ; 这个设备必须注册才能使用 nat=yes ; X-Lite在一个NAT路由器后边

canreinvite=no ; 如果使用了NAT,该项须设为NO,使媒体流经过服务器 disallow=all

allow=gsm ; GSM比ulaw消耗带宽小 allow=ulaw


asterisk sip配置说明(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:简述我国南水北调工程带来的的环境问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: