Hi Yuri,
Yuri Kirsanov wrote:
Hi community,
I have following setup:
Public IP (eth0) < OpenSIPS > Private IP (eth1) <------> Private IP
(eth0) Asterisk.
I'm trying to relay all the initial packets received by OpenSIPS to
Asterisk, so I record-route initial packets and process all responses
using loose routing. OpenSIPS is restricted to use only two UDP IP
addresses - private & public ones. It all works fine on SIP layer, I
do understand that I also need RTP proxy, but at this stage I've got
strange problem - with mhomed=1 in configuration file OpenSIPS still
sends packets using public IP address, while Contact, To and Via
fields are set correctly, to private IP address of OpenSIPS.
OpenSIPS does not changes Contact and To IPs when forwarding a
request.....are you sure you see such changes???
The only IPs that reflects the used interface are the VIA and
Record-Route...Actually in your case (if interface changing is done),
you should have 2 RR headers...
Also, using mhomed and force_send_socket() in the same time is a bit
redundant - they do the same : setting the outgoing interface for the
request:
- mhomed is doing autodetection based on destination IP
- force_send_socket() is setting the inteface from script.
BTW, it is bogus to do:
rewritehostport("10.22.10.1:6000 <http://10.22.10.1:6000/>");
force_send_socket(10.22.10.254);
in route[1] as this route is a generic relay route used also for sending
sequential requests.....put that lines in main route just where you do
record_route().
Regards,
Bogdan
I have tried to use force_send_socket but without any luck. Could you
please help me with this configuration? At least - why does OpenSIPS
uses public IP? Thanks!
Here's my configuration:
####### Global Parameters #########
log_facility=LOG_LOCAL4
fork=yes
children=4
debug=9
disable_tcp=yes
auto_aliases=no
mhomed=1
port=5066
listen=udp:XXX.XXX.XXX.XXX:5066
listen=udp:10.22.10.254:5068 <http://10.22.10.254:5068/>
####### Modules Section ########
#set module path
mpath="/opt/opensips/lib64/opensips/modules/"
loadmodule "signaling.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri.so"
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
modparam("rr", "append_fromtag", 1)
# ----- uri params -----
modparam("uri", "use_uri_table", 0)
####### Routing Logic ########
# main request routing logic
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
setflag(1); # do accounting ...
setflag(3); # ... even if the
transaction fails
} else if (is_method("INVITE")) {
# even if in most of the cases is
useless, do RR for
# re-INVITEs alos, as some buggy
clients do change route set
# during the dialog.
record_route();
}
# route it out to whatever destination was set
by loose_route()
# in $du (destination URI).
route(1);
} else {
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# non loose-route, but
stateful ACK; must be an ACK after
# a 487 or e.g. 404 from
upstream server
t_relay();
exit;
} else {
# ACK without matching
transaction ->
# ignore and discard
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# preloaded route checking
if (loose_route()) {
xlog("L_ERR",
"Attempt to route with preloaded Route's
[$fu/$tu/$ru/$ci]");
if (!is_method("ACK"))
sl_send_reply("403","Preload Route denied");
exit;
}
record_route();
route(1);
}
route[1] {
rewritehostport("10.22.10.1:6000 <http://10.22.10.1:6000/>");
force_send_socket(10.22.10.254);
if (!t_relay()) {
sl_reply_error();
};
exit;
}
------------------------------------------------------------------------
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
--
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users