当我们尝试设置 Asterisk 服务器时,我们遇到了一个大问题:无法拨打或接听连接到服务器的外部设备。事实上,我可以拨打和接听电话,但我听不到任何声音。
我浏览了互联网上的几个小时的内容,寻找有关如何使用 sip.conf 正确设置 NAT 的教程,但没有任何有效的结果。
这是我们的 sip.conf
[general]
bindaddr=0.0.0.0
localnet=192.168.1.0/255.255.255.0
externhost=mydynhost.dyndns.org
externrefresh=10
nat=yes
register => username:****@montreal.voip.ms:5060
registertimeout=15
registerattempts=0
[voipms]
canreinvite=no
context=voipms
host=montreal.voip.ms
secret=****
type=peer
defaultuser=username
disallow=all
allow=ulaw
fromuser=username
trustrpid=yes
sendrpid=yes
insecure=invite
nat=yes
[1000]
type=friend
context=phones
host=dynamic
defaultuser=1000
secret=****
[1001]
type=friend
context=phones
host=dynamic
defaultuser=1001
secret=****
扩展配置文件
[phones]
include => internal
include => voipms
[internal]
exten => _1XXX,1,Answer()
exten => _1XXX,n,Dial(SIP/${EXTEN})
exten => _1XXX,n,Hangup()
[voipms]
include => voipms-inbound
include => voipms-outbound
[voipms-outbound]
exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@voipms)
exten => _1NXXNXXXXXX,n,Hangup()
exten => _NXXNXXXXXX,1,Dial(SIP/1${EXTEN}@voipms)
exten => _NXXNXXXXXX,n,Hangup()
exten => _011.,1,Dial(SIP/${EXTEN}@voipms)
exten => _011.,n,Hangup()
exten => _00.,1,Dial(SIP/${EXTEN}@voipms)
exten => _00.,n,Hangup()
[voipms-inbound]
exten => somenumber,1,Answer()
在 rtp.conf 中设置了以下值:
- rtpstart=10001
- rtpend=20000
如您所见,我们没有静态 IP 地址,并且我们使用动态 DNS 服务在 IP 地址发生变化时刷新它。
我的问题很简单,我们如何才能使当前设置与不在我们专用网络中的其他设备配合使用?请注意,我只想使用 4 位分机号码联系人员。这些分机号码将允许“本地”用户无需使用 VoIP.ms 服务即可自行呼叫。当 NAT 正常工作后,我将测试外部呼叫。
如果您需要更多信息,请直接询问!谢谢!戴夫
编辑:另外,如果它能有所帮助。我正在用 X-Lite 测试我的通话(http://www.counterpath.com/x-lite-download.html) 和我的 Android 4.2.2 设备使用 Phone.apk 应用程序中的嵌入式 SIP 客户端。
答案1
直接向 forums.asterisk.org 社区询问后,成员 david55 帮助我找到了解决方案。
答案2
这对我有用,http://community.freepbx.org/t/i-am-unable-to-hear-callers-voice-but-the-caller-able-to-hear-my-voice/11994/3 我在 sip.conf 中设置了 localnet 和 externaddr 参数,运行正常