<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Message</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2>Hi,</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>I am trying to 
figure out how to solve the follwoing problem.</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>I have two 
subnetworks, A&nbsp;and B,&nbsp;with different private ip adressing schemes (I<A 
href="mailto:IP@A">P@A</A>) and (I<A 
href="mailto:IP@B">P@B</A>).</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>SER is installed in 
a computer with network interfaces towards both subnetworks.</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>SER's SIP signalling 
proxying operation works properly within the subnetworks and&nbsp;when trying to 
set up a communication between users in A and B. But in that last case, 
obviously there is no media at all circulating among the 
subnetworks.</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>Portaone's RTP 
proxy&nbsp;has been&nbsp;installed and configured in the computer with 
interfaces towards both subnetworks where SER is 
installed.&nbsp;</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>I am trying to 
configure SER so that, based on the nathelper module, when 
communication&nbsp;between both subnetworks occurs, the RTP proxy is involved 
and the communication (also media and not only signalling) is possible. BUT I am 
making something wrong, becouse it does not work ...</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005></SPAN><SPAN class=367095711-20092005><FONT 
face=Arial size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>Can anyone give 
me&nbsp; a hand /hint?</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>Thanks a lot in 
advance / in any case.</FONT>&nbsp;</SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial size=2>My SER config file 
is the following:</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005>
<P><FONT size=2>#</FONT></P>
<P><FONT size=2># ----------- global configuration parameters 
------------------------</FONT></P>
<P><FONT size=2>/* Uncomment these lines to enter debugging mode </FONT></P>
<P><FONT size=2>debug=7</FONT></P>
<P><FONT size=2>fork=no</FONT></P>
<P><FONT size=2>log_stderror=yes</FONT></P>
<P><FONT size=2>*/</FONT></P>
<P><FONT size=2>check_via=no # (cmd. line: -v)</FONT></P>
<P><FONT size=2>dns=no # (cmd. line: -r)</FONT></P>
<P><FONT size=2>rev_dns=no # (cmd. line: -R)</FONT></P>
<P><FONT size=2>fifo="/tmp/ser_fifo"</FONT></P>
<P><FONT size=2>fifo_mode=0662</FONT></P>
<P><FONT size=2>alias=wirelessip<SPAN 
class=367095711-20092005>.x.x.x</SPAN></FONT></P>
<P><FONT size=2>alias=sip.<SPAN 
class=367095711-20092005>.x.x.x</SPAN></FONT></P>
<P><FONT size=2>alias=<SPAN class=367095711-20092005>x.x.x</SPAN></FONT></P>
<P><FONT size=2>log_stderror=no</FONT></P>
<P><FONT size=2>debug=3</FONT></P>
<P><FONT size=2>children=3</FONT></P>
<P><FONT size=2>mhomed=1</FONT></P>
<P><FONT size=2># ------------------ module loading 
----------------------------------</FONT></P>
<P><FONT size=2># Uncomment this if you want to use SQL database</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/mysql.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/sl.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/tm.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/rr.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/maxfwd.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/usrloc.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/textops.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/registrar.so"</FONT></P>
<P><FONT size=2># Uncomment this if you want digest authentication</FONT></P>
<P><FONT size=2># mysql.so must be loaded !</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/auth.so"</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/auth_db.so"</FONT></P>
<P><FONT size=2># For NAT support / media proxying</FONT></P>
<P><FONT size=2>loadmodule "/lib/ser/modules/nathelper.so"</FONT></P>
<P><FONT size=2># ----------------- setting module-specific parameters 
---------------</FONT></P>
<P><FONT size=2># -- usrloc params --</FONT></P>
<P><FONT size=2>#modparam("usrloc", "db_mode", 0)</FONT></P>
<P><FONT size=2># Uncomment this if you want to use SQL database </FONT></P>
<P><FONT size=2># for persistent storage and comment the previous 
line</FONT></P>
<P><FONT size=2>modparam("usrloc", "db_mode", 2)</FONT></P>
<P><FONT size=2># -- auth params --</FONT></P>
<P><FONT size=2># Uncomment if you are using auth module</FONT></P>
<P><FONT size=2>modparam("auth_db", "calculate_ha1", yes)</FONT></P>
<P><FONT size=2># If you set "calculate_ha1" parameter to yes (which true in 
this config), </FONT></P>
<P><FONT size=2># uncomment also the following parameter)</FONT></P>
<P><FONT size=2>modparam("auth_db", "password_column", "password")</FONT></P>
<P><FONT size=2># -- rr params --</FONT></P>
<P><FONT size=2># add value to ;lr param to make some broken UAs 
happy</FONT></P>
<P><FONT size=2>modparam("rr", "enable_full_lr", 1)</FONT></P>
<P><FONT size=2># For NAT</FONT></P>
<P><FONT size=2># We will use flag 6 to mark NATed contacts</FONT></P>
<P><FONT size=2>modparam("registrar", "nat_flag", 6)</FONT></P>
<P><FONT size=2># Enable NAT pinging</FONT></P>
<P><FONT size=2>modparam("nathelper", "natping_interval", 60)</FONT></P>
<P><FONT size=2># Ping only contacts that are known to be</FONT></P>
<P><FONT size=2># behind NAT</FONT></P>
<P><FONT size=2>modparam("nathelper", "ping_nated_only", 1)</FONT></P>
<P><FONT size=2># ------------------------- request routing logic 
-------------------</FONT></P>
<P><FONT size=2># main routing logic</FONT></P>
<P><FONT size=2>route{</FONT></P>
<P><FONT size=2># initial sanity checks -- messages with</FONT></P>
<P><FONT size=2># max_forwards==0, or excessively long requests</FONT></P>
<P><FONT size=2>if (!mf_process_maxfwd_header("10")) {</FONT></P>
<P><FONT size=2>sl_send_reply("483","Too Many Hops");</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>if ( msg:len &gt; max_len ) {</FONT></P>
<P><FONT size=2>sl_send_reply("513", "Message too big");</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2># special handling for NATed clients; first, nat test 
is</FONT></P>
<P><FONT size=2># executed: it looks for via!=received and RFC1918 
addresses</FONT></P>
<P><FONT size=2># in Contact (may fail if line-folding used); also,</FONT></P>
<P><FONT size=2># the received test should, if complete, should check 
all</FONT></P>
<P><FONT size=2># vias for presence of received</FONT></P>
<P><FONT size=2>if (nat_uac_test("3")) {</FONT></P>
<P><FONT size=2># allow RR-ed requests, as these may indicate that</FONT></P>
<P><FONT size=2># a NAT-enabled proxy takes care of it; unless it is</FONT></P>
<P><FONT size=2># a REGISTER</FONT></P>
<P><FONT size=2>if (method == "REGISTER" || ! search("^Record-Route:")) 
{</FONT></P>
<P><FONT size=2>log("LOG: Someone trying to register from private IP, 
rewriting\n");</FONT></P>
<P><FONT size=2># This will work only for user agents that support 
symmetric</FONT></P>
<P><FONT size=2># communication. We tested quite many of them and majority 
is</FONT></P>
<P><FONT size=2># smart smart enough to be symmetric. In some phones, 
like</FONT></P>
<P><FONT size=2># it takes a configuration option. With Cisco 7960, it 
is</FONT></P>
<P><FONT size=2># called NAT_Enable=Yes, with kphone it is called</FONT></P>
<P><FONT size=2># "symmetric media" and "symmetric signaling". (The 
latter</FONT></P>
<P><FONT size=2># not part of public released yet.)</FONT></P>
<P><FONT size=2>fix_nated_contact(); # Rewrite contact with source IP of 
signalling</FONT></P>
<P><FONT size=2>if (method == "INVITE") {</FONT></P>
<P><FONT size=2>fix_nated_sdp("1"); # Add direction=active to SDP</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>force_rport(); # Add rport parameter to topmost Via</FONT></P>
<P><FONT size=2>setflag(6); # Mark as NATed</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2># we record-route all messages -- to make sure that</FONT></P>
<P><FONT size=2># subsequent messages will go through our proxy; 
that's</FONT></P>
<P><FONT size=2># particularly good if upstream and downstream 
entities</FONT></P>
<P><FONT size=2># use different transport protocol</FONT></P>
<P><FONT size=2>record_route(); </FONT></P>
<P><FONT size=2># loose-route processing</FONT></P>
<P><FONT size=2>if (loose_route()) {</FONT></P>
<P><FONT size=2>t_relay();</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>lookup("aliases");</FONT></P>
<P><FONT size=2># if the request is for other domain use UsrLoc</FONT></P>
<P><FONT size=2># (in case, it does not work, use the following 
command</FONT></P>
<P><FONT size=2># with proper names and addresses in it)</FONT></P>
<P><FONT size=2>if (uri==myself) {</FONT></P>
<P><FONT size=2>if (method=="REGISTER") {</FONT></P>
<P><FONT size=2># Uncomment this if you want to use digest 
authentication</FONT></P>
<P><FONT size=2>if (!www_authorize("com.dtu.dk", "subscriber")) {</FONT></P>
<P><FONT size=2>www_challenge("com.dtu.dk", "0");</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>save("location");</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2># native SIP destinations are handled using our USRLOC 
DB</FONT></P>
<P><FONT size=2>if (!lookup("location")) {</FONT></P>
<P><FONT size=2>sl_send_reply("404", "Not Found");</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2># forward to current uri now; use stateful forwarding; 
that</FONT></P>
<P><FONT size=2># works reliably even if we forward from TCP to UDP</FONT></P>
<P><FONT size=2>if (!t_relay()) {</FONT></P>
<P><FONT size=2>sl_reply_error();</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>}</FONT></P>
<P><FONT size=2>#</FONT></P>
<P><FONT size=2># Forcing media relay if necessary</FONT></P>
<P><FONT size=2>#</FONT></P>
<P><FONT size=2>route[1] {</FONT></P>
<P><FONT size=2>#if (uri=~"[@:](192\.168\.|10\.|172\.16)" &amp;&amp; 
!search("^Route:")){</FONT></P>
<P><FONT size=2># sl_send_reply("479", "We don't forward to private IP 
addresses");</FONT></P>
<P><FONT size=2># break;</FONT></P>
<P><FONT size=2>#};</FONT></P>
<P><FONT size=2>#if (isflagset(6)) {</FONT></P>
<P><FONT size=2>force_rtp_proxy();<SPAN class=367095711-20092005> # I force 
everything through the proxy</SPAN></FONT></P>
<P><FONT size=2>t_on_reply("1");</FONT></P>
<P><FONT size=2>append_hf("P-Behind-NAT: Yes\r\n");</FONT></P>
<P><FONT size=2>#};</FONT></P>
<P><FONT size=2>if (!t_relay()) {</FONT></P>
<P><FONT size=2>sl_reply_error();</FONT></P>
<P><FONT size=2>break;</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>}</FONT></P>
<P><FONT size=2>onreply_route[1] {</FONT></P>
<P><FONT size=2>if (status =~ "(183)|2[0-9][0-9]") {</FONT></P>
<P><FONT size=2>fix_nated_contact();</FONT></P>
<P><FONT size=2>force_rtp_proxy();</FONT></P>
<P><FONT size=2>};</FONT></P>
<P><FONT size=2>}</FONT></P>
<P><FONT face=Arial size=2></FONT>&nbsp;</P></SPAN></DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=367095711-20092005><FONT face=Arial 
size=2>&nbsp;&nbsp;</FONT></SPAN></DIV>
<DIV><SPAN class=367095711-20092005>&nbsp;</SPAN></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>