Hello all,
I've got a working conf on which RTPs work perfectly with TCP, but fails to work with UDP... can anyont tell me why??
Here's my conf:
# # sample config file to be used with nathelper/rtpproxy # # start RTPProxy with: rtpproxy -l your_public_ip -s udp:localhost:8899 #
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode fork=no log_stderror=yes */
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) port=5060 children=10 #fifo="/tmp/openser_fifo"
# --- module loading
mpath="/lib/openser/modules/"
loadmodule "mysql.so" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" #loadmodule "dispatcher.so" loadmodule "nathelper.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "xlog.so" #loadmodule "/usr/lib/openser/modules/acc.so"
#modparam("acc", "early_media", 0) #modparam("acc", "report_cancels", 1)
#modparam("acc", "db_flag", 2) #modparam("acc", "db_url", "mysql://user:pwd@localhost/openser") #modparam("acc", "report_ack", 0) #modparam("acc", "db_missed_flag", 3) #modparam("acc", "failed_transaction_flag", 4) #modparam("acc", "db_extra", "from_uri=$fu ; to_uri=$tu ; from_user=$fU; source_ip=$si")
# --- setting module parameters
modparam("usrloc|auth_db","db_url","mysql://user:pwd@localhost/openser")
# --- setting module parameters #modparam("dispatcher", "list_file", "/etc/openser/dispatcher.list")
# -- usrloc params -- modparam("usrloc", "db_mode", 2) modparam("usrloc", "nat_bflag", 3)
# -- registrar params -- #modparam("registrar", "received_avp", "$avp(s:rcv)")
# -- auth params -- modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password")
# -- rr params -- modparam("rr", "enable_full_lr", 1)
# -- nathelper modparam("registrar|nathelper", "received_avp", "$avp(i:42)") modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock") modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "sipping_bflag", 7) modparam("nathelper", "sipping_from", "sip:pinger@whatever.com") #modparam("nathelper", "received_avp", "$avp(s:rcv)")
# -- xlog modparam("xlog", "buf_size", 8192)
modparam("registrar", "max_contacts", 5)
# --- main routing logic route{
if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; };
# NAT detection route(2);
if (!method=="REGISTER") record_route();
if (loose_route()) { append_hf("P-hint: rr-enforced\r\n"); route(1); };
if (!uri==myself) { append_hf("P-hint: outbound\r\n"); route(1); };
if (uri==myself) { if (method=="REGISTER") { if (!www_authorize("OPENSER_IP", "subscriber")) { www_challenge("OPENSER_IP", "0"); exit; };
if (isflagset(5)) { setbflag(6); # if you want OPTIONS natpings uncomment next # setflag(7); }; save("location"); exit; };
# # - TERMINATIONS # if (method=="INVITE") { if (!proxy_authorize("OPENSER_IP","subscriber")) { if($si=="GW_IP"){ xlog("L_NOTICE", "\n************** ALLOWING INCOMING CALL AS IT COMES FROM $si ************\n"); }else{ proxy_challenge("OPENSER_IP","0"); exit; } }
if (uri=~"^sip:00"){ xlog("L_NOTICE", "\n************** GOT OUTSIDE CALL ************\n"); strip(2); prefix("M3ll4m0d4v1d");
rewritehostport("GW_IP:5060"); sl_send_reply("100","Trying"); forward(); exit(); }
}
if (!lookup("location")) { sl_send_reply("404", "Not Found"); exit; }; append_hf("P-hint: usrloc applied\r\n"); };
route(1); }
route[1] { if (subst_uri('/(sip:.*);nat=yes/\1/')){ setbflag(6); };
if (isflagset(5)||isbflagset(6)) { route(3); }
if (!t_relay()) { sl_reply_error(); }; exit; }
route[2]{ force_rport(); if (nat_uac_test("19")) { if (method=="REGISTER") { fix_nated_register(); } else { fix_nated_contact(); }; setflag(5); }; }
route[3] { if (is_method("BYE|CANCEL")) { unforce_rtp_proxy(); } else if (is_method("INVITE")){ force_rtp_proxy(); t_on_failure("1"); }; if (isflagset(5)) search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); t_on_reply("1"); }
failure_route[1] { if (isbflagset(6) || isflagset(5)) { unforce_rtp_proxy(); } }
onreply_route[1] { if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") { force_rtp_proxy(); } search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
if (isbflagset(6)) { fix_nated_contact(); } exit; }
MANY thanks to all.
David
Hi, I've got a question, I have some really stupid ATAs that can't do proper DNS lookups and are are a bit retarded when it comes to making calls. Unlike other systems, if I put sipserver.mobilia.it in as the proxy/registrar, it decides that its domain is also sipserver.mobilia.it.
While registering that isn't too much of a problem, but when I send calls to PSTN termination (through a carrier), they'll accept@mobilia.it or other domains.. but they don't seem to want @sipserver.mobilia.it.
Instead of asking my carrier to make an exception, I figured it should be fairly easy to just drop the sipserver from the ruri, and let it be..
I'm just not sure if I'm getting the sysntax right.. this should do the trick, right?
BTW openser 1.1.1 and code borrowed from openser wiki.
subst_uri('/^sip:[0-9]{8,24}@(sipserver.*)$/sip:\1@mobilia.it;orig_uri=\0/i')
On Tuesday 08 January 2008 18:11:17 Nick Warr wrote:
Hi, I've got a question, I have some really stupid ATAs that can't do proper DNS lookups and are are a bit retarded when it comes to making calls. Unlike other systems, if I put sipserver.mobilia.it in as the proxy/registrar, it decides that its domain is also sipserver.mobilia.it.
Terrible, have you trying upgrading firmware? Maybe you must define proxy or domain as "mobilia.it"?
While registering that isn't too much of a problem, but when I send calls to PSTN termination (through a carrier), they'll accept@mobilia.it or other domains.. but they don't seem to want @sipserver.mobilia.it.
Instead of asking my carrier to make an exception, I figured it should be fairly easy to just drop the sipserver from the ruri, and let it be..
I'm just not sure if I'm getting the sysntax right.. this should do the trick, right?
BTW openser 1.1.1 and code borrowed from openser wiki.
subst_uri('/^sip:[0-9]{8,24}@(sipserver.*)$/sip:\1@mobilia.it;orig_uri=\0/i ')
And why not the following at the beginning of the script?
if ($rd == "sipserver.mobilia.it") $rd = "mobilia.it";
Note: Not sure if OpenSer 1.1 allows these assignements.
Hello,
On Tuesday 08 January 2008 18:11:17 Nick Warr wrote:
Hi, I've got a question, I have some really stupid ATAs that can't do proper DNS lookups and are are a bit retarded when it comes to making calls. Unlike other systems, if I put sipserver.mobilia.it in as the proxy/registrar, it decides that its domain is also sipserver.mobilia.it.
Terrible, have you trying upgrading firmware? Maybe you must define proxy or domain as "mobilia.it"?
While registering that isn't too much of a problem, but when I send calls to PSTN termination (through a carrier), they'll accept@mobilia.it or other domains.. but they don't seem to want @sipserver.mobilia.it.
Instead of asking my carrier to make an exception, I figured it should be fairly easy to just drop the sipserver from the ruri, and let it be..
I'm just not sure if I'm getting the sysntax right.. this should do the trick, right?
BTW openser 1.1.1 and code borrowed from openser wiki.
subst_uri('/^sip:[0-9]{8,24}@(sipserver.*)$/sip: \1@mobilia.it;orig_uri=\0/i ')
And why not the following at the beginning of the script?
if ($rd == "sipserver.mobilia.it") $rd = "mobilia.it";
Note: Not sure if OpenSer 1.1 allows these assignements.
You can also use:
rewritehost("mobilita.it");
And this works with all Openser versions :-)
Saludos JesusR.
------------------------------------ Jesus Rodriguez VozTelecom Sistemas, S.L. jesusr@voztele.com http://www.voztele.com Tel. 902360305 -------------------------------------
El Martes, 8 de Enero de 2008, David Villasmil Govea escribió:
Hello all,
I've got a working conf on which RTPs work perfectly with TCP, but
fails to work with UDP... can anyont tell me why??
Could you detail more what the issue is? Do you mean that the SIP works fine over TCP and fails over UDP? RTP has nothing to do here.