[OpenSIPS-Users] NAT Contact address issues with Nokia Mobile

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Mar 31 13:19:17 CEST 2009


Hi,

if the online-user info is correct, it looks like the 
fix_nated_register() is not done.

Please post the output of "opensipsctl ul show", for that specific user.

Also test by using xlog if the at register time your processing gets 
inside the "if (!search("^Contact:[ ]*\*") && nat_uac_test("19")) {".

Regards,
Bogdan

oso che bol wrote:
> Dear All,
>
> I use Opensips 1.4.1 with rtpproxy 1.2 for NAT support.
>
> I use X-Lite which is Behind NAT, register to OpenSIPs proxy, Opensips 
> store right contact address. But, when i use Nokia E66 to register to 
> Opensips, the contact address is bellow: 
>
> Online SIP Users
> Username Domain Contact Expires User Agent
> 5000 *sip:5000 at 192.168.1.100 
> <mailto:sip%3A5000 at 192.168.1.100>;transport=UDP* 2009-03-30 07:20:24.0 
> E66-1 RM-343 102.07.81
>
> User 5000 do not store with external IP address of its (external 
> address not 192.168.1.100). Do you have any ideas about this?
>
> Bellow is my Opensips.conf
>
> Thanks and Regards,
>
> -LN
>
> Opensips.conf
>
> ==================
>
> ####### Global Parameters #########
>
> debug=4
> log_stderror=yes
> log_facility=LOG_LOCAL0
>
> fork=yes
> children=4
>
> /* uncomment the following lines to enable debugging */
> #debug=6
> #fork=no
> #log_stderror=yes
>
> #disable_tcp=yes
> #disable_dns_blacklist=no
> #dns_try_ipv6=yes
> #auto_aliases=no
>
> /* uncomment the following lines to enable TLS support  (default off) */
> #disable_tls = no
> #listen = tls:your_IP:5061
> #tls_verify_server = 1
> #tls_verify_client = 1
> #tls_require_client_certificate = 0
> #tls_method = TLSv1
> #tls_certificate = "//etc/opensips/tls/user/user-cert.pem"
> #tls_private_key = "//etc/opensips/tls/user/user-privkey.pem"
> #tls_ca_list = "//etc/opensips/tls/user/user-calist.pem"
>
>
> port=5060
> listen=udp:MY_OPENSIP_IP:5060
>
>
> ####### Modules Section ########
>
> #set module path
> mpath="//lib/opensips/modules/"
>
> /* uncomment next line for MySQL DB support */
> loadmodule "db_mysql.so"
> loadmodule "sl.so"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "maxfwd.so"
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "mi_fifo.so"
> loadmodule "uri_db.so"
> loadmodule "uri.so"
> loadmodule "xlog.so"
> loadmodule "acc.so"
> loadmodule "auth.so"
> loadmodule "auth_db.so"
>
> #loadmodule "presence.so"
> #loadmodule "presence_xml.so"
>
> loadmodule "nathelper.so"
> loadmodule "avpops.so"
> ######################
>
>
> modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
> modparam("rr", "enable_full_lr", 1)
> modparam("rr", "append_fromtag", 0)
> modparam("registrar", "method_filtering", 1)
>
> /* uncomment the next line to disable parallel forking via location */
> # modparam("registrar", "append_branches", 0)
> /* uncomment the next line not to allow more than 10 contacts per AOR */
> #modparam("registrar", "max_contacts", 10)
> modparam("uri_db", "use_uri_table", 1)
> modparam("uri_db", "db_url", 
> "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
> #them for bug9, like guide in bug9
> modparam("uri_db", "db_table", "uri")
>
>
> # ----- acc params -----
> /* what sepcial events should be accounted ? */
> modparam("acc", "early_media", 1)
> modparam("acc", "report_ack", 1)
> modparam("acc", "report_cancels", 1)
> modparam("acc", "detect_direction", 0)
> modparam("acc", "failed_transaction_flag", 3)
> modparam("acc", "log_flag", 1)
> modparam("acc", "log_missed_flag", 2)
> modparam("acc", "db_flag", 1)
> modparam("acc", "db_missed_flag", 2)
>
> modparam("usrloc", "db_mode",   2)
> modparam("usrloc", "db_url",
>     "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
>
> modparam("auth_db", "calculate_ha1", yes)
> modparam("auth_db", "password_column", "password")
> modparam("auth_db|permission", "db_url",
>     "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
>
> modparam("avpops", "avp_url", 
> "mysql://sermyadmin:secret@MY_DATABASE_IP/sermyadmin")
> modparam("avpops", "avp_table", "usr_preferences")
>
> #try for fix error of Mobile Address
> modparam("registrar", "received_avp", "$avp(s:rcv)")
> modparam("nathelper", "received_avp", "$avp(s:rcv)")
>
> #Theo guide http://www.opensips.org/html/docs/modules/1.4.x/registrar.html
> modparam("usrloc", "nat_bflag", 6)
> modparam("nathelper", "ping_nated_only", 1)
> modparam("nathelper", "sipping_bflag", 8)
>
> #modparam("nathelper", "rtpproxy_sock", "udp:MY_RTPPROXY_IP:7890")
> modparam("nathelper", "force_socket", "udp:MY_RTPPROXY_IP:7890")
> modparam("nathelper", "natping_interval", 89)
> modparam("nathelper", "sipping_from", "sip:1000 at MY_OPENSIP_IP")
>
>
> # main request routing logic
>
> route {
>
>     # -----------------------------------------------------------------
>     # Sanity Check Section
>     # -----------------------------------------------------------------
>     if (!mf_process_maxfwd_header("10")) {
>         sl_send_reply("483", "Too Many Hops");
>         exit;
>     }
>
>     if (msg:len > max_len) {
>         sl_send_reply("513", "Message Overflow");
>         exit;
>     }
>
>     # -----------------------------------------------------------------
>     # Record Route Section
>     # -----------------------------------------------------------------
>     if (method!="REGISTER") {
>         record_route();
>     }
>
>     if (method=="BYE" || method=="CANCEL") {
>         unforce_rtp_proxy();
>     }
>
>     # -----------------------------------------------------------------
>     # Loose Route Section
>     # -----------------------------------------------------------------
>     if (loose_route()) {
>
>         if ((method=="INVITE" || method=="REFER") && !has_totag()) {
>             sl_send_reply("403", "Forbidden");
>             exit;
>         }
>
>         if (method=="INVITE") {
>
>             if (!proxy_authorize("MY_OPENSIPS_IP","subscriber")) {
>                 proxy_challenge("MY_OPENSIPS_IP","0");
>                 exit;
>             } else if (!check_from()) {
>                 sl_send_reply("403", "Use From=ID");
>                 exit;
>             }
>             consume_credentials();
>
>             if (nat_uac_test("19")) {
>                 setflag(6);
>                 force_rport();
>                 fix_nated_contact();
>             }
>             force_rtp_proxy("l");
>         }
>         route(1);
>         exit;
>     }
>
>     # -----------------------------------------------------------------
>     # Call Type Processing Section
>     # -----------------------------------------------------------------
>     if (uri!=myself) {
>         route(4);
>         route(1);
>         exit;
>     }
>
>     if (method=="ACK") {
>         route(1);
>         exit;
>     } else if (method=="CANCEL") {
>         route(1);
>         exit;
>     } else if (method=="INVITE") {
>         route(3);
>         exit;
>     } else  if (method=="REGISTER") {
>         route(2);
>         exit;
>     }
>
>     lookup("aliases");
>     if (uri!=myself) {
>         route(4);
>         route(1);
>         exit;
>     }
>
>     if (!lookup("location")) {
>         sl_send_reply("404", "User Not Found");
>         exit;
>     }
>
>     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("MY_OPENSIPS_IP","subscriber")) {
>         www_challenge("MY_OPENSIPS_IP","0");
>         exit;
>     }
>
>     #if (!check_to()) {
>     #    sl_send_reply("401", "Unauthorized Loi Ngo");
>     #    exit;
>     #}
>
>     consume_credentials();
>
>     if (!save("location")) {
>         sl_reply_error();
>     };
> }
>
> route[3] {
>
>     # -----------------------------------------------------------------
>     # INVITE Message Handler
>     # -----------------------------------------------------------------
>    
>     #Drop because error Use From=ID when call. Open
>     #if (!proxy_authorize("","subscriber")) {
>     #    proxy_challenge("","0");
>     #    exit;
>     #} else if (!check_from()) {
>     #    sl_send_reply("403", "Use From=ID");
>     #    exit;
>     #}
>
>     #consume_credentials();
>
>     if (nat_uac_test("19")) {
>         setflag(6);
>     }
>
>     lookup("aliases");
>     if (uri!=myself) {
>         route(4);
>         route(1);
>         exit;
>     }
>
>     if (!lookup("location")) {
>         sl_send_reply("404", "User Not Found");
>         exit;
>     }
>
>     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();
>     }
> }
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>   




More information about the Users mailing list