我正在使用Asterisk版本1.8.32.3
Asterisk服务器正在AWS EC2实例上运行(并且不在NAT后面)。它正在与与Asterisk位于同一局域网中的Kamailio服务器进行通信。
我正在观察的问题是,每当Asterisk向Kamailio发送任何SIP请求(如OPTIONS或INVITE)时,它都会在联系人标头而不是本地IP中设置其公共IP。因此,对于呼叫中的任何REINVITE,Kamailio都会尝试将数据包发送到Asterisk的公共IP,这是不必要的。我的sip.conf的相关部分提供如下:
[general]
context=sip-archit
subscribecontext=sip-archit
externip=x.x.x.x (Public IP)
localnet=10.x.x.x/255.255.255.0
;Kamailio
[kamailio.dummy.com]
type=friend
;kamailio.dummy.com (hostname changed from actual) resolves to 10.x.x.x IP address
host=kamailio.dummy.com
disallow=all
allow=ulaw
allow=alaw
nat=no
insecure=invite,port
canreinvite=no
context=sip-archit
sendrpid=yes
trustrpid=yes
relaxdtmf=yes
qualify=yes
所以我的问题是:
如果您的kamailio在本地网络中,请使用externalip = localip。
您也可以在[general]部分中使用realm =进行实验,在kamailio中使用from-domain进行实验。
但是正确的kamailio设置只是忽略联系并使用from-uri和destination-uri。