Hi, Royee!
Can you make sure that fix_nated_contact() is called before create_dialog()?
Also, if you run through MI the dlg_list_ctx command, what is the
contact header stored in the dialog?
Best regards,
Răzvan
Răzvan Crainea
OpenSIPS Solutions
www.opensips-solutions.com
On 06/06/2017 11:02 AM, Royee Tichauer via Users wrote:
Hi,
I'm having some problems when using topology hiding. In my scenario an
INVITE comes in to the opensips (SBC) instance from another opensips
instance (Proxy). It is routed to a callee which eventually answers
with a 200OK. The 200 OK is routed through the SBC to the Proxy which
answers back with an ACK. This ACK is absorbed by the SBC which (by
looking at the logs) attempts to send this ACK to the private IP of
the callee instead of the the NAT IP which was originally used for the
incoming INVITE.
From the logs I see that right before I attempt to do
'topology_hiding_match()' the 'ruri=public_IP' and after the method is
called the ruri switches to 'ruri=private_IP'.
Attached is a trace. Below is a partial opensips.cfg file I am using
with opensips 2.1:
# ----- NATHELPER -----
loadmodule "nathelper.so"
modparam("nathelper", "received_avp", "$avp(42)")
# ----- DIALOG -----
loadmodule "dialog.so"
modparam("dialog", "db_mode", 0)
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "profiles_no_value", "inboundcalls")
# ----- TOPOLOGY_HIDING -----
loadmodule "topology_hiding.so"
modparam("topology_hiding", "force_dialog", 1)
modparam("topology_hiding", "th_callid_passwd", "*********")
modparam("topology_hiding", "th_contact_encode_passwd", "*****")
modparam("topology_hiding", "th_callid_prefix", "****")
route {
route(nat_checks);
route(topology_check);
.
.
.
create_dialog();
record_route();
if (!has_totag() && is_method("INVITE")) {
topology_hiding("U");
}
.
.
.
}
route[topology_check] {
force_rport();
xlog("L_INFO", "[REQUEST $ci] current ruri: $ruri");
if (has_totag()) {
if (topology_hiding_match()) {
xlog("L_INFO", "[REQUEST $ci] $rm topology_check successful
match reinvite TH_callee_callid: $TH_callee_callid ruri: $ruri");
route(relay);
} else {
xlog("L_INFO", "[REQUEST $ci] $rm topology_check Did not match
this request to a topology hiding dialog.");
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
xlog("L_INFO", "[REQUEST $ci] $rm within a transaction
relaying");
route(relay);
} else {
xlog("L_INFO", "[REQUEST $ci] $rm not within a transaction
exiting");
exit;
}
}
xlog("L_INFO", "[REQUEST $ci] $rm sending 404 Not Found");
send_reply("404","Not Found");
exit;
}
}
}
route[nat_checks] {
if (nat_uac_test("1")) {
xlog("L_INFO", "[REQUEST $ci] $rm fix_nated_contact()");
fix_nated_contact();
}
}
.
.
.
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users