I am having problems with a NAT device. I have an asterisk server that is hosted on a public IP and when I connect my Snom phones to it directly audio passes correctly both ways. When I introduce Kamailio 1.3 into the mix I get one way audio.
 
I have fixed the SDP and contacts etc and everything appears to be ok with the sip packet. I would be very grateful for any ideas what the problem could be.
 
Outgoing calls from Kamailio -> asterisk -> PSTN work fine.
 
Thank you for your help in advance, it is much appreciated.
 
 
=================== config =======================
 
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
};
if (msg:len >= 2048 ) {
sl_send_reply("513", "Message too big");
exit;
};
# NAT detection
force_rport();
if(nat_uac_test("3"))
{

fix_nated_contact();
}
if (!method=="REGISTER")
{
record_route();
}
if (loose_route()) {
append_hf("P-hint: rr-enforced\r\n");
route(1);
};
if (!uri==myself) {
append_hf("P-hint: outbound\r\n");
route(1);
};
if (uri==myself) {
if (method=="REGISTER")
{
if (!www_authorize("", "subscriber")) {
www_challenge("", "0");
exit;
};


if (isflagset(5))
{
# set branch flag -- when someone will call this user
# the INVITE will have branch flag 6 set after lookup("location")
setbflag(6);
 
};

fix_nated_contact();
fix_nated_register();
consume_credentials();
save("location");
exit;
};
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
append_hf("P-hint: usrloc applied\r\n");
};

if(method=="MESSAGE")
{
if (!lookup("location"))
{
sl_send_reply("404", "User Offline");
exit;
}
route(4);
}

if (method=="REGISTER")
{
save("location");
}
 
route(1);
}
 
route[1] {
if (subst_uri('/(sip:.*);nat=yes/\1/')){
setbflag(6);
};
if (isflagset(5)||isbflagset(6)) {
route(3);
}
t_on_reply("1");
if (!t_relay()) {
sl_reply_error();
};
exit;
}
 
route[3] {
if (is_method("BYE"))
{
unforce_rtp_proxy();
}
else if (is_method("INVITE"))
{
fix_nated_sdp("3");
 
};
if (isflagset(5))
{
search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
}
t_on_reply("1");
}
route[4]
{
if (!t_relay())
{
sl_reply_error();
};
exit;
}
 
 
failure_route[2] {
if (isbflagset(6) || isflagset(5))
{
unforce_rtp_proxy();
}
}
onreply_route[1]
{
fix_nated_contact();
if (((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") || is_method("INVITE"))
{
fix_nated_sdp("2");
force_rport();
 
}
search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
}
 
 
 
==================== SIP PACKETS ===========================
INVITE sip:10001*202@**** IP ****;line=e25l7qyi SIP/2.0
Record-Route: <sip:*** IP ***;lr=on;ftag=as0a2e0c2e>
Via: SIP/2.0/UDP *** IP ***;branch=z9hG4bKb0a1.cf08f082.0
v: SIP/2.0/UDP *** IP ***:5060;branch=z9hG4bK2bc03835;rport=5060
f: "Name" <sip:*** DOMAIN ***>;tag=as0a2e0c2e
t: <sip:10001*202@** DOMAIN **>
m: <sip:number@**IP**>
i: 74391cce38d7c7f7549c863a651b8f81@*** DOMAIN ****
CSeq: 102 INVITE
User-Agent: asterisk
Max-Forwards: 69
Date: Thu, 31 Jul 2008 11:38:39 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
k: replaces
c: application/sdp
l: 422
P-hint: usrloc applied

v=0
o=root 5390 5390 IN IP4 194.xxx.xxx.xxx
s=session
c=IN IP4 194.xxx.xxx.xxx
b=CT:384
t=0 0
m=audio 12558 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
m=video 17918 RTP/AVP 34 103 99
a=rtpmap:34 H263/90000
a=rtpmap:103 h263-1998/90000
a=rtpmap:99 H264/90000
a=sendrecv

 
////////////// PHONE REPLY ////////////////////
SIP/2.0 200 Ok
Via: SIP/2.0/UDP **** IP ****:5060;branch=z9hG4bK19d7ec13;rport=5060
Record-Route: <sip:*** IP ***;lr=on;ftag=as486f79a5>
From: "*** NUMBER *****" <sip:*** DOMAIN *****>;tag=as486f79a5
To: <sip:10001*202@*** DOMAIN *****>;tag=jgdy33ee6n
Call-ID: *** ID ***
CSeq: 102 INVITE
Contact: <sip:*** DOMAIN ****:54686;line=e25l7qyi;nat=yes>;reg-id=1
User-Agent: snom370/7.3.7
Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO
Allow-Events: talk, hold, refer, call-info
Supported: timer, replaces, from-change
Content-Type: application/sdp
Content-Length: 508
v=0
o=root 1569142945 1569142946 IN IP4 192.168.1.20
s=call
c=IN IP4 ** EXTERNAL IP ***
t=0 0
m=audio 10014 RTP/AVP 0 8 3 101
a=rtpmap:0 pcmu/8000
a=rtpmap:8 pcma/8000
a=rtpmap:3 gsm/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=alt:1 0.9 : user 9kksj== 192.168.1.20 10014
a=sendrecv
m=video 0 RTP/AVP 34 103 99
a=rtpmap:34 H263/90000
a=rtpmap:103 h263-1998/90000
a=rtpmap:99 H264/90000
a=alt:1 0.9 : user 9kksj== 192.168.1.20 10014
a=sendrecv
a=oldmediaip:192.168.1.20


Find out how to make Messenger your very own TV! Try it Now!