sip.conf:
externip:在[general] context配置的属性,配置你的公网地址,这样发送sip消息时就会用该地址替换消息头的主机地址,对端解析消息后就会往这个地址发送应答消息。
Nat:该属性决定asterisk如何处理用户的连接。个人理解就是配置astersik处理收到消息的方式。
1、nat=route
asterisk 从收到的rtp包得到目地地址,把rtp包发往该地址而不是SDP中协商的每媒体地址。
2、nat=no
默认配置,根据rfc3581,asterisk会把rport和received字段添加到via域,作为应答接受地址。
3、 nat=never
asterisk不把rport加入via域,也不会按照route的方式处理。
4、 nat=yes
总是忽略信息,假定使用NAT
在Asterisk中配置NAT需要进行以下步骤:
1. 在sip.conf文件中设置NAT选项为yes,以指示该服务器位于NAT后面。
2. 设置externip和localnet选项。Externip是服务器在互联网上的公共IP地址,而localnet是服务器位于NAT后面的私有IP范围。
3. 开启RTP端口范围。默认情况下,AsteriskUDP端口10000到20000进行RTP通信,需要确保这些端口在NAT上进行转发
4. 配置SIP客户端。SIP户端需要知道服务器的NAT地址和RTP端口围,以便正确地与服务器通信。
以下是一个示例sip.conf配置文件:
[nat]
nat=yes
externip=203.0.113.1
localnet=192.168.0.0255.255.255.0
[general]
rtpstart=10000
rtpend=20000
[sip_client]
type=friend
host=dynamic
nat=yes
canreinvite=no
context=default
disallow=all
allow=ulaw
allow=alaw
allow=gsm
dtmfmode=rfc2833
需要注意的是,NAT配置可能因网络环境的不同而有所不同,因此建议仔细阅读Asterisk文档并参考最佳实践进行配置。