<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body dir="auto">
It does but doesn't work as well as kamailio, and since the proxy is the entry point.
<div><br>
</div>
<div>The biggest issue here isnt the keepalive, as I did have that working. The main issue is the routing of messages, utilizing set_contact_alias and handle_ruri_alias, as Ive been unable to get ack and bye messages to make it past the proxy. I’m assuming
 these functions are not being used at the right locations or I need to rely on another mechanism to accomplish it. I also question my use of the PBX flag and the natmanage logic. </div>
<div><br>
</div>
<div>-dan<br>
<div>
<div><br>
</div>
<div>On Mar 31, 2020, at 7:01 PM, Sergiu Pojoga <pojogas@gmail.com> wrote:<br>
<div dir="ltr">
<blockquote type="cite"><br>
</blockquote>
</div>
<blockquote type="cite">
<div dir="ltr">
<div dir="ltr">Hi Daniel,
<div><br>
</div>
<div>From what you are describing, my understanding is that the Registrar is the PBX, kamailio is acting as an edge proxy. If so, doesn't the PBX/registrar have NAT traversal/keepalive mechanisms of its own?
<div><br>
</div>
<div>Regards,</div>
<div>--Sergiu</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Mar 31, 2020 at 1:55 PM Daniel W. Graham <<a href="mailto:dan@cmsinter.net">dan@cmsinter.net</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div lang="EN-US">
<div class="gmail-m_3234107695683839931WordSection1">
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">I’ve been missing with this for a while and seem to be missing something. Any suggestions on what is missing here?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">Trying to use set_contact_alias() and handle_ruri_alias() from nathelper module and nat_keepalive from nat_traversal module, without registrar.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">I had register keepalive working, that has since broke. When register keepalive was working, I was able to place call in either direction but ACK and BYE was not being
 routed past kamailio.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">Registrations are forwarded to the PBX using add_path() and is working.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">Also not included below is the routing to the PBX, that is just setting $du and t_relay, and is also working.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">Topology is: UA1 -> NAT -> kamailio -> PBX -> UA2<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">Using default config file as the example, modified with above changes. I also removed RTP config as that is a non-issue.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">request_route {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    ……<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    # FLAG MESSAGES FROM PBX<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">        setflag(FLT_PBX);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    route(NATDETECT);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    ……<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">route[NATDETECT] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if (nat_uac_test("19")) {<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-left:0.5in;text-indent:0.5in"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">force_rport();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        set_contact_alias();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        nat_keepalive();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            return;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">route[WITHINDLG] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if (!has_totag()) return;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        if (loose_route()) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                                    route(DLGURI);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        } else if ( is_method("ACK") ) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                                    route(NATMANAGE);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        } else if ( is_method("NOTIFY") ) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                                    record_route();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            route(RELAY);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            exit;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if (is_method("SUBSCRIBE") && uri == myself) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        route(PRESENCE);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        exit;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if ( is_method("ACK") ) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        if ( t_check_trans() ) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                                    route(RELAY);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                                    exit;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        } else {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                                    exit;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            sl_send_reply("404","Not here");<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            exit;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">route[NATMANAGE] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">        if(isflagset(FLT_PBX)) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            handle_ruri_alias();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    if(!isflagset(FLT_PBX)) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">        set_contact_alias();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">    }       return;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">route[DLGURI] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if(!isdsturiset()) {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        handle_ruri_alias();<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            return;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">branch_route[MANAGE_BRANCH] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            route(NATMANAGE);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">onreply_route[MANAGE_REPLY] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if(status=~"[12][0-9][0-9]") {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">                        route(NATMANAGE);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">}<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">failure_route[MANAGE_FAILURE] {<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            route(NATMANAGE);<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif">            if (t_is_canceled()) exit;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Segoe UI Historic",sans-serif"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt">-dan<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote>
</div>
<span>_______________________________________________</span><br>
<span>Kamailio (SER) - Users Mailing List</span><br>
<span>sr-users@lists.kamailio.org</span><br>
<span>https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</span><br>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>