[Serusers] rtpproxy

Toygun Mavinil toygun at mavinil.com.tr
Sun Jan 29 23:24:10 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