[Serusers] rtpproxy

Toygun Mavinil toygun at mavinil.com.tr
Sat Jan 28 18:44:36 CET 2006


Hi there,
I try to use ser 0.9.6 on fc4 with mysql rtpproxy because of nat
No errors starting ser
On local, no problen betweeb ip phones and gateways but one way voice
problen on sjphone
On wan, always voice goes one way, caller can nor hear but callee can hear
and can not talk
FC4 gets wan ip directly, all firewalls are off.

I tried with mediaproxy module, nothing changed,
Here is ser.cfg (from configs.GettingStarted);

# $Id: nat-rtpproxy.cfg 9 2005-08-19 
debug=3
fork=yes
log_stderror=no

listen=wan ip          
port=5060
children=4

dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://ser:heslo@localhost/ser"

loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"

modparam("auth_db|uri_db|usrloc", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")

modparam("nathelper", "natping_interval", 30) 
modparam("nathelper", "ping_nated_only", 1)   
modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock")

modparam("usrloc", "db_mode", 2)

modparam("registrar", "nat_flag", 6)

modparam("rr", "enable_full_lr", 1)

route {

            #
-----------------------------------------------------------------
            # Sanity Check Section
            #
-----------------------------------------------------------------
            if (!mf_process_maxfwd_header("10")) {
                        sl_send_reply("483", "Too Many Hops");
                        break;
            };

            if (msg:len > max_len) {
                        sl_send_reply("513", "Message Overflow");
                        break;
            };

            #
-----------------------------------------------------------------
            # Record Route Section
            #
-----------------------------------------------------------------
            if (method!="REGISTER") {
                        record_route();
            };

            if (method=="BYE" || method=="CANCEL") {
                        unforce_rtp_proxy();
            } 

            #
-----------------------------------------------------------------
            # Loose Route Section
            #
-----------------------------------------------------------------
            if (loose_route()) {

                        if (has_totag() && (method=="INVITE" ||
method=="ACK")) {
                                   if (nat_uac_test("19")) {
                                               setflag(6);
                                               force_rport();
                                               fix_nated_contact();
                                   };
                                   force_rtp_proxy("l");
                        };
                        route(1);
                        break;
            };

            #
-----------------------------------------------------------------
            # Call Type Processing Section
            #
-----------------------------------------------------------------
            if (uri!=myself) {
                        route(4);
                        route(1);
                        break;
            };

            if (method=="CANCEL") {
                        route(1);
                        break;
            } else if (method=="INVITE") {
                        route(3);
                        break;
            } else  if (method=="REGISTER") {
                        route(2);
                        break;
            };

            lookup("aliases");
            if (uri!=myself) {
                        route(4);
                        route(1);
                        break;
            };

            if (!lookup("location")) {
                        sl_send_reply("404", "User Not Found");
                        break;
            };

            route(1);
}

route[1] {

            #
-----------------------------------------------------------------
            # Default Message Handler
            #
-----------------------------------------------------------------

            t_on_reply("1");

            if (!t_relay()) {
                        if (method=="INVITE" && isflagset(6)) {
                                   unforce_rtp_proxy();
                        };
                        sl_reply_error();
            };
}

route[2] {

            #
-----------------------------------------------------------------
            # REGISTER Message Handler
            #
----------------------------------------------------------------

            if (!search("^Contact:[ ]*\*") && nat_uac_test("19")) {
                        setflag(6);
                        fix_nated_register();
                        force_rport();
            };

            sl_send_reply("100", "Trying");

            if (!www_authorize("","subscriber")) {
                        www_challenge("","0");
                        break;
            };

            if (!check_to()) {
                        sl_send_reply("401", "Unauthorized");
                        break;
            };

            consume_credentials();

            if (!save("location")) {
                        sl_reply_error();
            };
}

route[3] {

            #
-----------------------------------------------------------------
            # INVITE Message Handler
            #
-----------------------------------------------------------------

            if (!proxy_authorize("FQDN","subscriber")) {
                        proxy_challenge("FQDN","0");
                        break;
            } else if (!check_from()) {
                        sl_send_reply("403", "Use From=ID");
                        break;
            };

            consume_credentials();

            if (nat_uac_test("19")) {
                        setflag(6);
            }

            lookup("aliases");
            if (uri!=myself) {
                        route(4);
                        route(1);
                        break;
            };

            if (!lookup("location")) {
                        sl_send_reply("404", "User Not Found");
                        break;
            };

            route(4);
            route(1);
}

route[4] {

            #
-----------------------------------------------------------------
            # NAT Traversal Section
            #
-----------------------------------------------------------------

            if (isflagset(6)) {
                        force_rport();
                        fix_nated_contact();
                        force_rtp_proxy();
            };
}

onreply_route[1] {

            if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {
                        if (!search("^Content-Length:[ ]*0")) {
                                   force_rtp_proxy();
                        };
            };

            if (nat_uac_test("1")) {
                        fix_nated_contact();
            };
}

------------
Toygun


More information about the sr-users mailing list