Hi all
I am using SER+NAT+rtpproxy as proxy servers.
I have serched
seruser mailing list for solution and I didn't find any.
Please help
me in below senerio.
Elements
-----------------
1) UA 'PUBLIC'
( in public internet with IP 211.95.122.XXX.XXX)
2) SIP SER with NAT helper(CVS version) +
rtp proxy on same
machine(http://www.portaone.com/~sobomax/rtpproxy.tar
) with one
external public IP and internal privite IP)
3) UA 'PRIVATE' - in side private domain with 192.17.1.XXX)
ip address.
4) UA 'PUBLIC' not register to ser. UA 'PRIVATE'
have registerd to ser.
I am trying to accomplish to make call from UA 'PRIVATE'
to UA 'PUBLIC'. i'e
calls from private IP to public IP using SER as
my signalling proxy
and rtpproxy as proxy for RTP.
SER is succussfully etablishing connection between
two user agents and
but it is failed to forward rtp between two UAs.
No voice. Request as 'INVITE'
ser proxy change SDP's ip and port, but reply as
stats 200 and 183 did not change
SDP's ip and report, so UA 'PUBLIC' can hear UA
'PRIVATE', but UA 'PRIVATE' can't
hear from UA 'PUBLIC'.
Is it MUST that UA 'PUBLIC' register to ser?
This is my ser.cfg:
# main routing logic
route
{
/*================================
ROUTINE CHECKS =============================================*/
# filter too old messages
if (!mf_process_maxfwd_header("10"))
{
log("LOG: Too many hops\n");
sl_send_reply("483","Too Many Hops");
break;
}
if (msg:len > max_len)
{
sl_send_reply("513", "Message too big");
break;
}
# compulsory processing
of Route header fields and adding RR
loose_route();
# These devices need
rtp proxy
#if (search("User-Agent:"))
#{
setflag(2); # remember this needs rtp proxy
force_rport();
# fix_nated_contact();
#}
# registration (uses
rewritten contacts)
if (method=="REGISTER")
{
if(!radius_proxy_authorize("REGISTER"))
{
sl_send_reply("401",
"Forbidden");
break;
}
save("location");
break;
}
# Invite authentication
if (method=="INVITE")
{
record_route();
if (isflagset(2))
{
if(!radius_proxy_authorize("INVITE"))
{
sl_send_reply("401", "Forbidden");
break;
}
force_rtp_proxy();
}
/* set up reply processing */
t_on_reply("1");
}
# Forward
if(uri=~"^sip:5[0-9][0-9]*@")
{
rewritehost("211.95.122.158");
prefix("66123");
forward(211.95.122.158, 5060);
break;
}
# Look up the callee
if (method == "INVITE"
|| method == "CANCEL")
{
if (!lookup("location"))
{
sl_send_reply("404",
"Not Found");
break;
}
}
# forward the request
statefuly now; (we need *stateful* forwarding,
# because the stateful
mode correlates requests with replies and
# drops retranmissions;
otherwise, we would have to report on
# every single message
received)
setflag(1); # set
for accounting (the same value as in log_flag!)
if(!t_relay())
{
sl_reply_error();
break;
}
}
# all incoming replies for t_onrepli-ed transactions enter
here
onreply_route[1]
{
if (status=~"(183)|2[0-9][0-9]")
{
force_rtp_proxy();
}
}
Thanks for help.
Regards,
robert