LAN-WAN deployments can sometimes by tricky. A full ngrep trace of a call setup (INVITE++) will be of help to understand what is happening. g-)
peiyin wrote:
Hi all,
I'm having trouble configuring mediaproxy to work on my SER server. One phone is behind NAT and the other is using a public ip. Both are registered in SER.
Calls from phone A (nat) to phone B(public) are successful whereby phone B will rings.However, no sound comes out from both side, also, when i hang up phone B, phone A doesn't produce any engaged tone. Calls from phone B to phone A also successful but i don't get any audio on either end.
I'm storing all information in database.
My config is as below (taken from example and modified):
route{ if (!mf_process_maxfwd_header("10")) { if (method!="ACK") { sl_send_reply("483", "Too many hops"); }; break; };
if (msg:len >= max_len) { if (method!="ACK") { sl_send_reply("513", "Message too big"); }; break; };
if(method=="INVITE" || method=="BYE") { setflag(1); #accounting }
if (method=="REGISTER") { if (is_from_local()) { # Mark as NAT'ed if (client_nat_test("3")) { setflag(6); force_rport(); fix_contact(); };
if (!www_authorize("my_ser_ip", "subscriber")) { www_challenge("my_ser_ip", "0"); break; } else if (!check_to()) { sl_send_reply("403", "Username!=To not allowed"); break; }; if (!save("location")) { sl_reply_error(); }; } else { sl_send_reply("403", "This domain is not served here"); }; break;
};
if (method=="INVITE") { if (!(is_from_local() || is_uri_host_local())) { sl_send_reply("403", "Relaying is forbidden"); break; }; t_on_failure("1"); } else if (method == "BYE" || method == "CANCEL") { end_media_session(); };
if (loose_route()) { if (method=="INVITE" || method=="ACK") { use_media_proxy(); }; # end media session for BYE and CANCEL is done above # before entering the loose route. no need to call it here t_relay(); break; };
# Force subsequent messages to pass trough this proxy if (method == "INVITE") { record_route(); };
if (client_nat_test("3") && !search("^Record-Route:")) { # Mark as NAT'ed force_rport(); fix_contact();
};
if (method=="INVITE") { t_on_reply("1"); };
if (is_uri_host_local()) { if (!lookup("location")) { sl_send_reply("404", "User not found"); break; }; };
if (method=="INVITE" || method=="ACK") { use_media_proxy(); };
if (!t_relay()) { if (method=="INVITE" || method=="ACK") { end_media_session(); }; sl_reply_error(); }; }
failure_route[1] { end_media_session(); }
onreply_route[1] { if (status=~"(183)|(2[0-9][0-9])") { if (client_nat_test("1")) { fix_contact(); }; use_media_proxy(); }; }
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers