我想创建一个 voip 服务。我已经在专用的远程托管 debian lenny 发行版上安装了 asterisk-1.4。我制作了 sip.conf 和 extensions.conf,以便在安装在其他 Windows PC 上的两部 sip 电话(我使用的是 xlite 3.0)之间拨打电话。每当我切换这些电话时,asterisk 控制台都会显示“从 '"1000"' 注册 '122.168.10.254' 失败 - Peer 不应注册”其中 xx.xx.xx.xx 是服务器 ip 即我的 sip 电话无法在 asterisk 服务器上注册。请帮助我在两部 sip 电话之间拨打电话
#sip 显示同行 名称/用户名主机 Dyn Nat ACL 端口状态 2000 (未指定) D 0 未监控 1000 (未指定) D 0 未监控 2 个 SIP 对等体 [监控:0 个在线,0 个离线 未监控:0 个在线,2 个离线] # sip 显示注册表 主机用户名刷新状态注册时间 #sip 显示频道 对等用户/ANR 呼叫 ID 序列 (Tx/Rx) 格式保留最后一条消息 0 个活跃 SIP 通道
配置文件
[一般的] 上下文=默认 绑定端口=5060 绑定地址=0.0.0.0 [1000] 秘密=1000 类型=朋友 上下文=电话 主机=动态 [2000] 秘密=2000 类型=朋友 上下文=电话 主机=动态
扩展配置文件
[一般的] autofallthrough = 是 静态 = 是 写保护=否 clearglobalvars = 是 [默认] exten => s,1,Varbose(1|未路由的呼叫处理程序) exten => s,n,答案() exten => s,n,等待(1) exten => s,n,播放(tt-weasels) exten => s,n,挂断() [来电] [内部的] exten => 500,1,Verbose(1|Echo 测试应用程序) 扩展 => 500,n,Echo() exten => 500,n,挂断() exten => 1000,1,详细(1|扩展 1000) 扩展 => 1000,n,拨号(SIP/1000,30) exten => 1000,n,挂断() exten => 2000,1,详细(1|扩展 2000) 扩展 => 2000,n,拨号(SIP/2000,30) exten => 2000,n,挂断() [电话] 包括 => 内部
答案1
您的问题出在 sip.conf 上。请确保您为终端设备定义了用户名:
[2000]
username=2000
secret=2000
type=friend
context=phones
host=dynamic
答案2
正如您在帖子中提到的,公共 IP 地址(这不是一个好的做法)。这些客户端是在 LAN 内还是在 WAN 外。您的机器是否位于 NAT 后面,或者这个公共 IP 是否在您的 debian 上设置。如果是这样,请检查您是否已将路由器上的 5060 和 5061 端口转发到 asterisk
答案3
检查你的 sip.conf - 对等类型可能有误 - 如果你发布你的 sip.conf,那么回答起来会更容易。
您很可能需要 type=friend,但请阅读有关各种设置的信息。
答案4
如果您在 sip.conf 中指定了 sip 对等体的主机地址,则可能会出现注册错误
从http://www.voip-info.org/wiki/index.php?page=Asterisk+sip+type:
“如果一个对等体定义为 host=dynamic ,它被允许向 Asterisk 注册,以告诉 Asterisk 它可以在哪里找到(IP 地址/主机名)以及从现在开始它可以访问。”
因此,如果您将其定义为 host=xx.xx.xx.xx,则无需注册,因为它只会接受该地址的对等体。