Ok, I've just used this routing, it just shows thats its trying and the call never goes through. Here is my openser.cfg with the data from ngrep. Not sure why the call wont go through:
debug=3 fork=yes log_stderror=no
listen=192.168.1.6 alias=test.com port=5060 children=4
dns=no rev_dns=no
fifo="/tmp/openser_fifo" fifo_db_url="mysql://openser:openserrw@localhost/openser"
loadmodule "/usr/local/lib/openser/modules/mysql.so" loadmodule "/usr/local/lib/openser/modules/sl.so" loadmodule "/usr/local/lib/openser/modules/tm.so" loadmodule "/usr/local/lib/openser/modules/rr.so" loadmodule "/usr/local/lib/openser/modules/maxfwd.so" loadmodule "/usr/local/lib/openser/modules/usrloc.so" loadmodule "/usr/local/lib/openser/modules/registrar.so" loadmodule "/usr/local/lib/openser/modules/auth.so" loadmodule "/usr/local/lib/openser/modules/auth_db.so" loadmodule "/usr/local/lib/openser/modules/uri.so" loadmodule "/usr/local/lib/openser/modules/uri_db.so" loadmodule "/usr/local/lib/openser/modules/domain.so" loadmodule "/usr/local/lib/openser/modules/nathelper.so" loadmodule "/usr/local/lib/openser/modules/avpops.so" loadmodule "/usr/local/lib/openser/modules/textops.so" loadmodule "/usr/local/lib/openser/modules/xlog.so"
modparam("auth_db|uri_db|usrloc", "db_url", "mysql://openser:openserrw@localhost/openser") 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)
modparam("tm", "fr_inv_timer", 27) modparam("tm", "fr_inv_timer_avp", "inv_timeout")
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(); t_relay(); exit; }
# ----------------------------------------------------------------- # Loose Route Section # ----------------------------------------------------------------- if (loose_route()) {
if ((method=="INVITE" || method=="REFER") && !has_totag()) { sl_send_reply("403", "Forbidden"); return; };
if (method=="INVITE") {
if (!proxy_authorize("","subscriber")) { proxy_challenge("","0"); return; } else if (!check_from()) { sl_send_reply("403", "Use From=ID"); return; }; consume_credentials();
if (nat_uac_test("19")) { setflag(6); force_rport(); fix_nated_contact(); }; force_rtp_proxy("l"); }; route(1); return; };
# ----------------------------------------------------------------- # Call Type Processing Section # ----------------------------------------------------------------- if (uri!=myself) { route(4); route(1); return; };
if (method=="ACK") { route(1); return; } else if (method=="CANCEL") { route(1); return; } else if (method=="INVITE") { route(3); return; } else if (method=="REGISTER") { route(2); return; };
lookup("aliases"); if (uri!=myself) { route(4); route(1); return; };
if (!lookup("location")) { sl_send_reply("404", "User Not Found"); return; };
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"); exit; };
if (!check_to()) { sl_send_reply("401", "Unauthorized"); return; };
consume_credentials();
if (!save("location")) { sl_reply_error(); }; }
route[3] {
# ----------------------------------------------------------------- # INVITE Message Handler # -----------------------------------------------------------------
if (!proxy_authorize("","subscriber")) { proxy_challenge("","0"); return; } else if (!check_from()) { sl_send_reply("403", "Use From=ID"); return; };
consume_credentials();
if (nat_uac_test("19")) { setflag(6); }
lookup("aliases"); if (uri!=myself) { route(4); route(1); return; };
if (uri=~"^sip:*[0-9]*@"){ xlog("Sip 2 Sip\n"); strip(1); #strip away the * route(4); route(1); return;
};
if (!lookup("location")){
if (uri=~"^sip:[0-9]*@") { xlog("PSTN Gateway\n"); route(4); route(5); return; };
sl_send_reply("404", "User Not Found"); return; };
route(4); route(1); }
route[4] {
# ----------------------------------------------------------------- # NAT Traversal Section # -----------------------------------------------------------------
if (isflagset(6)) { force_rport(); fix_nated_contact(); force_rtp_proxy(); } }
route[5] {
# ----------------------------------------------------------------- # PSTN Handler # ----------------------------------------------------------------- xlog("Routed to route 5\n"); rewritehostport("pstn.gateway:5060");
avp_write("i:45", "inv_timeout");
route(1); }
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(); }; }
U 2006/06/29 14:33:43.120386 192.168.1.1:1027 -> 192.168.1.6:5060 INVITE sip:201@test.com SIP/2.0..Record-Route: <sip:192.168.1.6;f tag=1535693657;lr=on>..Via: SIP/2.0/UDP 192.168.1.6;branch=z9hG4bK038c.2054 5ab4.0..Via: SIP/2.0/UDP 70.xxx.xxx.xx:5060;received=192.168.1.1;rport=5060 ;branch=z9hG4bK5F856FB99EE741348558D3F5BDFB4199..From: Kenny sip:200@test.com;tag=1535693657..To: sip:*201@test.com..Contact: sip:200@192.168.1.1:5060..Call-ID: 0A64050F-C53B-4751-94FD-4658CB6CF37F@1 92.168.1.30..CSeq: 33944 INVITE..Max-Forwards: 69..Content-Type: applicatio n/sdp..User-Agent: X-Lite release 1105x..Content-Length: 325....v=0..o=200 268371887 268371936 IN IP4 70.189.13.171..s=X-Lite..c=IN IP4 192.168.1.6..t =0 0..m=audio 21088 RTP/AVP 0 8 3 98 97 101..a=rtpmap:0 pcmu/8000..a=rtpmap :8 pcma/8000..a=rtpmap:3 gsm/8000..a=rtpmap:98 iLBC/8000..a=rtpmap:97 speex /8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 0-15..a=sendrecv..a=no rtpproxy:yes..
U 2006/06/29 14:33:43.120906 192.168.1.6:5060 -> 192.168.1.1:5060 SIP/2.0 407 Proxy Authentication Required..Via: SIP/2.0/UDP 192.168.1.6;bra nch=z9hG4bK038c.20545ab4.0;received=192.168.1.1..Via: SIP/2.0/UDP 70.xxx.xxx.xxx:5060;received=192.168.1.1;rport=5060;branch=z9hG4bK5F856FB99EE74134855 8D3F5BDFB4199..From: Kenny sip:200@test.com;tag=1535693657..To: sip:*201@test.com;tag=eb9822f1ed1b15a932bf98c097b3aaca.4dc7..C all-ID: 0A64050F-C53B-4751-94FD-4658CB6CF37F@192.168.1.30..CSeq: 33944 INVI TE..Proxy-Authenticate: Digest realm="test.com", nonce="44a42c439 d432ec2bff44d80632d0ec98b8d4d6e"..Server: OpenSer (1.0.1 (i386/linux))..Con tent-Length: 0..Warning: 392 192.168.1.6:5060 "Noisy feedback tells: pid=7 010 req_src_ip=192.168.1.1 req_src_port=1027 in_uri=sip:201@test.com out_uri=sip:201@test.com via_cnt==2"....
--------------------------------- Yahoo! Music Unlimited - Access over 1 million songs.Try it free.
From Your 'ngrep' capture I'm not able to afirm You that this is normal or
not.
I see two ways to debug OpenSER (and SER as well) script logic:
1) use of 'sl_send_reply' along the script (like sl_send_reply("100","I'm here"); etc);
2) use the good and old "white-box depuration method".
From this two I prefere the first.. ;)
And don't forget that SIP REGISTER, INVITES, MESSAGES and related methods all denny the first packet with a 407 reply, so that the proxy can inform the challenge to be used on the authentication process.
Edson.
U 2006/06/29 14:33:43.120386 192.168.1.1:1027 -> 192.168.1.6:5060 INVITE sip:201@test.com SIP/2.0..Record-Route: <sip:192.168.1.6;f tag=1535693657;lr=on>..Via: SIP/2.0/UDP 192.168.1.6;branch=z9hG4bK038c.2054 5ab4.0..Via: SIP/2.0/UDP 70.xxx.xxx.xx:5060;received=192.168.1.1;rport=5060 ;branch=z9hG4bK5F856FB99EE741348558D3F5BDFB4199..From: Kenny sip:200@test.com;tag=1535693657..To: sip:*201@test.com..Contact: sip:200@192.168.1.1:5060..Call-ID: 0A64050F-C53B-4751-94FD-4658CB6CF37F@1 92.168.1.30..CSeq: 33944 INVITE..Max-Forwards: 69..Content-Type: applicatio n/sdp..User-Agent: X-Lite release 1105x..Content-Length: 325....v=0..o=200 268371887 268371936 IN IP4 70.189.13.171..s=X-Lite..c=IN IP4 192.168.1.6..t =0 0..m=audio 21088 RTP/AVP 0 8 3 98 97 101..a=rtpmap:0 pcmu/8000..a=rtpmap :8 pcma/8000..a=rtpmap:3 gsm/8000..a=rtpmap:98 iLBC/8000..a=rtpmap:97 speex /8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 0-15..a=sendrecv..a=no rtpproxy:yes..
U 2006/06/29 14:33:43.120906 192.168.1.6:5060 -> 192.168.1.1:5060 SIP/2.0 407 Proxy Authentication Required..Via: SIP/2.0/UDP 192.168.1.6;bra nch=z9hG4bK038c.20545ab4.0;received=192.168.1.1..Via: SIP/2.0/UDP 70.xxx.xxx.xxx:5060;received=192.168.1.1;rport=5060;branch=z9hG4bK5F856FB99E E74134855 8D3F5BDFB4199..From: Kenny sip:200@test.com;tag=1535693657..To: sip:*201@test.com;tag=eb9822f1ed1b15a932bf98c097b3aaca.4dc7..C all-ID: 0A64050F-C53B-4751-94FD-4658CB6CF37F@192.168.1.30..CSeq: 33944 INVI TE..Proxy-Authenticate: Digest realm="test.com", nonce="44a42c439 d432ec2bff44d80632d0ec98b8d4d6e"..Server: OpenSer (1.0.1 (i386/linux))..Con tent-Length: 0..Warning: 392 192.168.1.6:5060 "Noisy feedback tells: pid=7 010 req_src_ip=192.168.1.1 req_src_port=1027 in_uri=sip:201@test.com out_uri=sip:201@test.com via_cnt==2"....
_____
Yahoo! Music Unlimited - Access over 1 million songs. Try http://pa.yahoo.com/*http:/us.rd.yahoo.com/evt=36035/*http:/music.yahoo.com /unlimited/%20%0d%0a it free.