[OpenSIPS-Users] NAT Contact address issues with Nokia Mobile
oso che bol
ndlgroup1 at gmail.com
Tue Mar 31 18:09:06 CEST 2009
Dear Bogdan,
Thanks very much for your time.
Regards,
-LN
On Tue, Mar 31, 2009 at 8:53 PM, Bogdan-Andrei Iancu <bogdan at voice-system.ro
> wrote:
> Please use fix_nated_register() for REGISTER requests - this will set the
> appropriate info to be saved in usrloc.
>
> fix_nated_register() is not changing the contact (so the usrloc will save
> the real contact), but is just setting some additional info to be saved in
> usrloc (the received field)
>
> fix_nated_contact() is actually changing the contact from the request -
> this is to be used for non-REGISTER requests.
>
> Regards,
> Bogdan
>
> oso che bol wrote:
>
>>
>> Dear Bogdan
>>
>> I change the config of NATed REGISTER request to:
>>
>> / if (nat_uac_test("19")) {
>> if (is_method("REGISTER") || !search("^Record-Route")) {
>> log("LOG: HTK Someone trying to register from private IP,
>> rewriting\n");
>> fix_nated_contact(); # Rewrite contact with source IP of
>> signalling
>> force_rport(); # Add rport parameter to topmost Via
>> setbflag(6); # Mark as NATed
>> if (method=="INVITE") {
>> fix_nated_sdp("1"); # Add direction=active to SDP
>> force_rport(); # Add rport parameter to topmost Via
>> setbflag(6); # Mark as NATed
>> };
>> };/
>>
>> Output of "opensipsctl ul show":
>>
>> /[root at LN]# opensipsctl ul show
>> database engine 'MYSQL' loaded
>> Control engine 'FIFO' loaded
>> entering fifo_cmd ul_dump
>> Mar 31 07:17:27 [6412] DBG:mi_fifo:mi_parse_node: end of input tree
>> Mar 31 07:17:27 [6412] DBG:mi_fifo:mi_fifo_server: done parsing the mi
>> tree
>> Domain:: aliases table=512 records=0 max_slot=0
>> Domain:: location table=512 records=2 max_slot=1
>> AOR:: 5000
>> Contact:: sip:5000 at 77.69.220.94:5060;transport=UDP Q=
>> Expires:: 1038
>> Callid:: A9AOj5F5oIeDS04U53IMr4_65zZvf5
>> Cseq:: 6049
>> User-agent:: E66-1 RM-343 102.07.81
>> State:: CS_SYNC
>> Flags:: 0
>> Cflag:: 64
>> Socket:: udp:174.132.X.Y:5060
>> Methods:: 4294967295
>> AOR:: 6000
>> Contact:: sip:6000 at 58.186.156.135:11370;rinstance=dbe921dccef4bee4
>> Q=
>> Expires:: 1060
>> Callid:: MDdmOTVkNzAzODAxN2JiMjk0MTk1NTEwNThjOWE2ZTM.
>> Cseq:: 6
>> User-agent:: X-Lite release 1100l stamp 47546
>> State:: CS_SYNC
>> Flags:: 0
>> Cflag:: 64
>> Socket:: udp:174.132.X.Y:5060
>> Methods:: 5951
>> FIFO command was:
>> :ul_dump:opensips_receiver_6568/
>>
>> Could you please explain why with mobile user 5000, the contact
>> /sip:5000 at 77.69.220.94:5060;transport=UDP /and with X-Lite User 6000 the
>> contact is /6000 at 58.186.156.135:11370;rinstance=dbe921dccef4bee4/
>>
>> How fix_nated_register() differ with fix_nated_register(), do we need to
>> call fix_nated_register() at REGISTER processing?
>>
>> Thanks and Regards,
>>
>> -LN
>>
>> On Tue, Mar 31, 2009 at 6:19 PM, Bogdan-Andrei Iancu <
>> bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>>
>> 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 <sip%3A5000 at 192.168.1.100> <mailto:
>> sip%3A5000 at 192.168.1.100 <sip%253A5000 at 192.168.1.100>>
>> <mailto:sip%3A5000 at 192.168.1.100 <sip%253A5000 at 192.168.1.100>
>> <mailto:sip%253A5000 at 192.168.1.100 <sip%25253A5000 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 <mailto:Users at lists.opensips.org>
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20090331/4084dada/attachment-0001.htm
More information about the Users
mailing list