I resolved all of the routing issues. Only issue I’ve got now is nat_keepalive not working
when used with set/add_contact_alias().
-dan
From: "miconda(a)gmail.com" <miconda(a)gmail.com>
Reply-To: "miconda(a)gmail.com" <miconda(a)gmail.com>
Date: Friday, April 3, 2020 at 1:43 PM
To: Daniel Graham <dan(a)cmsinter.net>et>, "Kamailio (SER) - Users Mailing
List" <sr-users(a)lists.kamailio.org>
Subject: Re: [SR-Users] nathelper without usrloc
Somehow I thought that the keepalive is not working and you look for fixing it. Now I read
the full thread and actually the routing of requests within dialog doesn't work.
Can you send a pcap with such a call taken on Kamailio system? ACK and BYE should be
routed based on Contact of INVITE/200ok and record-route headers, no longer related to
REGISTER (only initial INVITE should rely on registration data).
Cheers,
Daniel
On 02.04.20 22:11, Daniel W. Graham wrote:
Same behavior with add_contact_alias()
-dan
From: "miconda@gmail.com"<mailto:miconda@gmail.com>
<miconda@gmail.com><mailto:miconda@gmail.com>
Reply-To: "miconda@gmail.com"<mailto:miconda@gmail.com>
<miconda@gmail.com><mailto:miconda@gmail.com>
Date: Thursday, April 2, 2020 at 2:59 PM
To: "Kamailio (SER) - Users Mailing List"
<sr-users@lists.kamailio.org><mailto:sr-users@lists.kamailio.org>, Daniel
Graham <dan@cmsinter.net><mailto:dan@cmsinter.net>
Subject: Re: [SR-Users] nathelper without usrloc
Hello,
can you try with add_contact_alias() instead of set_contact_alias()? The second one
updates the contact URI in a way that is visible for the couple of local modules
immediately, typically needed when having dialog/presence module in that instance (still
no changes to the header itself, it uses some internal mechanism to signal contact value
should be taken from a special field). The first one uses the lumps system that makes the
changes over the contact URI not visible immediately (unless msg_apply_changes() is
used).
Maybe nat_keepalive() needs the original contact URI, not the one updated by
set_contact_alias().
Cheers,
Daniel
On 02.04.20 18:45, Daniel W. Graham wrote:
I was able to fix all issues, but have one partially lingering.
For register only, if I apply: set_contact_alias() with nat_keepalive(), keepalives are
not sent. Removing set_contact_alias() fixes this.
I *shouldn’t need this if the pbx was saving received and rport params as a result of
add_path_received().
Can anyone explain why these two functions conflict?
Test scenario -
# Doesn’t result in register keepalive –
route[NATDETECT] {
force_rport();
set_contact_alias(); # removal of this enables keepalive
nat_keepalive();
return;
}
I’ve tested this with and without calls to handle_ruri_alias() elsewhere in cfg script
with same result.
-dan
From: sr-users
<sr-users-bounces@lists.kamailio.org><mailto:sr-users-bounces@lists.kamailio.org>
on behalf of Sergiu Pojoga <pojogas@gmail.com><mailto:pojogas@gmail.com>
Reply-To: "Kamailio (SER) - Users Mailing List"
<sr-users@lists.kamailio.org><mailto:sr-users@lists.kamailio.org>
Date: Wednesday, April 1, 2020 at 8:58 AM
To: "Kamailio (SER) - Users Mailing List"
<sr-users@lists.kamailio.org><mailto:sr-users@lists.kamailio.org>
Subject: Re: [SR-Users] nathelper without usrloc
Nothing else comes to mind based on info provided. May be you can send some sip traffic
captures and elaborate?
Regards,
--Sergiu
On Tue, Mar 31, 2020 at 10:29 PM Daniel W. Graham
<dan@cmsinter.net<mailto:dan@cmsinter.net>> wrote:
Thanks, yeah I had already changed that, but registration works with either. I’m not
asking for a solution, just looking for suggestions on anything that needs attention, so I
appreciate your pointers.
-dan
On Mar 31, 2020, at 8:55 PM, Sergiu Pojoga
<pojogas@gmail.com<mailto:pojogas@gmail.com>> wrote:
Oh and almost forgot - try add_path_received() instead of add_path()
Good luck!
On Tue, Mar 31, 2020 at 8:48 PM Sergiu Pojoga
<pojogas@gmail.com<mailto:pojogas@gmail.com>> wrote:
A lot of things may not be 'right' here, unfortunately your question is too broad
to answer and too little info, the topology is indeed non-default and I doubt someone will
present you with a final solution (there's business support, if you're looking for
that).
Otherwise, if I were to just throw a guess:
- try fix_nated_register() (instead of set_contact_alias) just for Register method on the
way to the registrar
- in the Registrar, make sure the Contact's Path address is correct
Cheers,
--Sergiu
On Tue, Mar 31, 2020 at 7:34 PM Daniel W. Graham
<dan@cmsinter.net<mailto:dan@cmsinter.net>> wrote:
It did help, I read that a couple times already but something is still not right, and its
only because of the decoupling of the registrar. I need to do more debugging and see if Im
loosing the flag value. Hoping something sticks out that someone sees and can point me in
the right direction.
-dan
On Mar 31, 2020, at 7:15 PM, Alex Balashov
<abalashov@evaristesys.com<mailto:abalashov@evaristesys.com>> wrote:
Daniel,
Might this article be of aid?
http://www.evaristesys.com/blog/server-side-nat-traversal-with-kamailio-the…
-- Alex
On Tue, Mar 31, 2020 at 11:12:23PM +0000, Daniel
W. Graham wrote:
It does but doesn't work as well as kamailio, and since the proxy is the entry
point.
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.
-dan
On Mar 31, 2020, at 7:01 PM, Sergiu Pojoga
<pojogas@gmail.com<mailto:pojogas@gmail.com>> wrote:
Hi Daniel,
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?
Regards,
--Sergiu
On Tue, Mar 31, 2020 at 1:55 PM Daniel W. Graham
<dan@cmsinter.net<mailto:dan@cmsinter.net><mailto:dan@cmsinter.net<mailto:dan@cmsinter.net>>>
wrote:
I’ve been missing with this for a while and seem to be missing something. Any suggestions
on what is missing here?
Trying to use set_contact_alias() and handle_ruri_alias() from nathelper module and
nat_keepalive from nat_traversal module, without registrar.
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.
Registrations are forwarded to the PBX using add_path() and is working.
Also not included below is the routing to the PBX, that is just setting $du and t_relay,
and is also working.
Topology is: UA1 -> NAT -> kamailio -> PBX -> UA2
Using default config file as the example, modified with above changes. I also removed RTP
config as that is a non-issue.
request_route {
……
# FLAG MESSAGES FROM PBX
setflag(FLT_PBX);
route(NATDETECT);
……
route[NATDETECT] {
if (nat_uac_test("19")) {
force_rport();
set_contact_alias();
nat_keepalive();
}
return;
}
route[WITHINDLG] {
if (!has_totag()) return;
if (loose_route()) {
route(DLGURI);
} else if ( is_method("ACK") ) {
route(NATMANAGE);
} else if ( is_method("NOTIFY") ) {
record_route();
}
route(RELAY);
exit;
}
if (is_method("SUBSCRIBE") && uri == myself) {
route(PRESENCE);
exit;
}
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
route(RELAY);
exit;
} else {
exit;
}
}
sl_send_reply("404","Not here");
exit;
}
route[NATMANAGE] {
if(isflagset(FLT_PBX)) {
handle_ruri_alias();
}
if(!isflagset(FLT_PBX)) {
set_contact_alias();
} return;
}
route[DLGURI] {
if(!isdsturiset()) {
handle_ruri_alias();
}
return;
}
branch_route[MANAGE_BRANCH] {
route(NATMANAGE);
}
onreply_route[MANAGE_REPLY] {
if(status=~"[12][0-9][0-9]") {
route(NATMANAGE);
}
}
failure_route[MANAGE_FAILURE] {
route(NATMANAGE);
if (t_is_canceled()) exit;
-dan
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org><mailto:sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
Web:
http://www.evaristesys.com/,
http://www.csrpswitch.com/
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla --
www.asipto.com<http://www.asipto.com>
www.twitter.com/miconda<http://www.twitter.com/miconda> --
www.linkedin.com/in/miconda<http://www.linkedin.com/in/miconda>
--
Daniel-Constantin Mierla --
www.asipto.com<http://www.asipto.com>
www.twitter.com/miconda<http://www.twitter.com/miconda> --
www.linkedin.com/in/miconda<http://www.linkedin.com/in/miconda>