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