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