Hi
i've a problem with MSN. When I try to subscribe my user with MSN (4.7.2009) ser doesn't autorizie me, but when I try with kphone and the same user, it works correctly. In fact I can see on contact table the row of my user.
I have exported SIP_DOMAIN=sip.quellidelpirana.it
I think that the condition if (uri==myself) doesn't match my IP address.
any idea??
this is my ser.cfg.
############################################### # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------ debug=3 fork=yes log_stderror=no check_via=no dns=no rev_dns=no port=5060 children=4 fifo="/tmp/ser_fifo"
alias=217.57.90.117 alias=sip.quellidelpirana.it alias=webby.spidlink.com
# ------------------ module loading ----------------------------------
loadmodule "/usr/lib/ser/modules/mysql.so" loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so" loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.so" loadmodule "/usr/lib/ser/modules/acc.so" loadmodule "/usr/lib/ser/modules/exec.so" loadmodule "/usr/lib/ser/modules/group.so" loadmodule "/usr/lib/ser/modules/textops.so" loadmodule "/usr/lib/ser/modules/nathelper.so" loadmodule "/usr/lib/ser/modules/xlog.so"
# ----------------- setting module-specific parameters ---------------
# -- registrar params -- # modparam("registrar", "use_domain", 1)
# -- usrloc params -- modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser") modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "db_url", "mysql://ser:heslo@localhost/ser") modparam("auth_db", "calculate_ha1", yes)
# If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) modparam("auth_db", "password_column", "password")
# -- tm modules --- modparam("tm", "fr_inv_timer", 15 )
#-- acc params -- modparam("acc","db_url", "mysql://ser:heslo@localhost/ser") modparam("acc", "log_missed_flag", 3) modparam("acc", "log_level", 1) modparam("acc", "log_flag", 1) modparam("acc", "db_flag", 1) modparam("acc", "db_missed_flag", 3)
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# -- nathelper params -- modparam("registrar", "nat_flag", 6) modparam("nathelper", "natping_interval", 30) # Ping interval 30 s modparam("nathelper", "ping_nated_only", 1)
#----- main routing logic route{
log(1, ""); log(1, "Avvio procedura di Route"); xlog("L_NOTICE", "method <%rm> from <%fu> - <%is> source address"); xlog("L_NOTICE", "request URI <%ru> - to URI <%tu>");
# if (nat_uac_test("2")) { # log(1, "src address different than via header->NAT detected\n"); # log(1, "force_rport and fix_nated_contact and setflag(5)\n"); #try NAT traversal, works only if the client is symmetrical # force_rport(); # fix_nated_contact(); # append_hf("P-hint: fixed NAT contact for request\r\n"); # flag 5 indicates that incoming request is from NATed client # setflag(5); # };
# initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if (msg:len >= max_len ) { sl_send_reply("513", "Message too big"); break; };
# !! Nathelper # Special handling for NATed clients; first, NAT test is # executed: it looks for via!=received and RFC1918 addresses # in Contact (may fail if line-folding is used); also, # the received test should, if completed, should check all # vias for rpesence of received if (nat_uac_test("3")) { # Allow RR-ed requests, as these may indicate that # a NAT-enabled proxy takes care of it; unless it is # a REGISTER
if (method == "REGISTER" || ! search("^Record-Route:")) { log("LOG: Someone trying to register from private IP,rewriting \n");
# This will work only for user agents that support symmetric # communication. We tested quite many of them and majority is # smart enough to be symmetric. In some phones it takes a configuration # option. With Cisco 7960, it is called NAT_Enable=Yes, with kphone it is # called "symmetric media" and "symmetric signalling".
fix_nated_contact(); # Rewrite contact with source IP of signalling log("LOG: fix_nated_contact\n"); if (method == "INVITE") { fix_nated_sdp("1"); # Add direction=active to SDP }; force_rport(); # Add rport parameter to topmost Via log("LOG: force_rport"); setflag(6); # Mark as NATed }; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route();
# loose-route processing if (loose_route()) { log(1, "loose_route processing\n"); t_relay(); break; };
if (!uri==myself) { # mark routing logic in request log(1, "marked routing logic in request - OUT FROM uri==myself"); append_hf("P-hint: outbound\r\n"); route(1); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) { log(1, "qui arrivo.....");
if (method=="REGISTER") { log("LOG: in register main");
if (!www_authorize("sip.quellidelpirana.it", "subscriber")) { log(1, "Auth: NO - requesting authentification\n"); www_challenge("sip.quellidelpirana.it", "0"); break; } else { log(1, "Auth: YES"); # consume_credentials(); };
save("location"); break; };
lookup("aliases"); if (!uri==myself) { log(1, "marked routing logic in request - IN uri==myself"); append_hf("P-hint: outbound alias\r\n"); route(1); break; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; append_hf("P-hint: usrloc applied\r\n"); route(1); }
route[1] { log(1, "Red Route 1..."); # !! Nathelper if (uri=~"[@:](192.168.|10.|172.(1[6-9]|2[0-9]|3[0-1]).)" && !search("^Route:")){ sl_send_reply("479", "We don't forward to private IP addresses"); break; };
# if client or server know to be behind a NAT, enable relay if (isflagset(6)) { force_rtp_proxy(); };
# NAT processing of replies; apply to all transactions (for example, # re-INVITEs from public to private UA are hard to identify as # NATed at the moment of request processing); look at replies t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; }
# !! Nathelper # all incoming replies for t_onrepli-ed transactions enter here onreply_route[1] { log(1, "-------------------------------------------\n"); log(1, "onreply_route[1] entered\n");
if (isflagset(6)) { log(1, "transaction was sent to a NATED client -> fix nated contact\n"); fix_nated_contact(); append_hf("P-hint: fixed NAT contact for response\r\n"); }
if ( (status=~"100") ) { log(1, "status 100 received\n"); };
if ( (status=~"180") ) { log(1, "status 180 received\n"); };
if ( (status=~"202") ) { log(1, "status 202 received\n"); };
if ( (status=~"200" || status=~"183") ) { log(1, "status 2xx or 183"); if ( isflagset(7) ) { log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy \n"); force_rtp_proxy(); append_hf("P-hint: response forced to rtp proxy\r\n"); }; }; }
ngrep result is
U 157.27.242.227:3194 -> 217.57.90.117:5060 REGISTER sip:sip.quellidelpirana.it SIP/2.0..Via: SIP/2.0/UDP 157.27.242.227:9759..From: sip:giandrea@sip.quellidelpirana.it;tag=43ec173f-30be-4151-8dd8-9311cfe1e4b0..To: <sip:giandrea@sip. quellidelpirana.it>..Call-ID: 6f6d3b9b-bc1a-406a-9593-cd7ee88073ab@157.27.242.227..CSeq: 1 REGISTER..Contact: sip:157.27.242.227:9759;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE , CANCEL, NOTIFY, ACK"..User-Agent: Windows RTC/1.0..Expires: 1200..Event: registration..Allow-Events: presence..Content-Length: 0.... # U 217.57.90.117:5060 -> 157.27.242.227:9759 SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 157.27.242.227:9759..From: sip:giandrea@sip.quellidelpirana.it;tag=43ec173f-30be-4151-8dd8-9311cfe1e4b0..To: sip:giandrea@sip.quellidelpirana.it ;tag=b27e1a1d33761e85846fc98f5f3a7e58.c99d..Call-ID: 6f6d3b9b-bc1a-406a-9593-cd7ee88073ab@157.27.242.227..CSeq: 1 REGISTER..WWW-Authenticate: Digest realm="sip.quellidelpirana.it", nonce="40e c0b5b5a0c4bf6e043f0b4c78f8a17e6f42cf2"..Server: Sip EXpress router (0.8.13-dev-30-db_api (i386/linux))..Content-Length: 0..Warning: 392 217.57.90.117:5060 "Noisy feedback tells: pid=1082 req _src_ip=157.27.242.227 req_src_port=3194 in_uri=sip:sip.quellidelpirana.it out_uri=sip:sip.quellidelpirana.it via_cnt==1"....
#