Hi,
I am having problems troubleshooting a problem I am experiencing with my SER configuration. I have ser 0.8.14 running with rtpproxy and nathelper enabled. I have two phones on the same subnet behind nat and I would like to make a call between the two. I want to invoke rtpproxy for this as they both have private address [I know this isn’t the most efficient way as they’re both on the same subnet but I can worry about that later].
When I ring from the phone 1 (2092) to phone 2 (2093), 2092 can hear voice but 2093 can’t. When 2093 ring 2092, there’s no audio. These phones are Grandstream BT100’s. They have been configured to listen on different SIP and RTP ports.
2092:
2092:
2093:
2093:
I have included my ser.cfg file below. I can send on the SER SIP message sniff if nescessary [I tried attaching it but serbouncers said the attachment was too big]. I can confirm that my rtpproxy is working (originally I thought it wasn’t) by using “strace –d <rtpproxy pid> -f –F”. I can see a signal being returned.
Any help would be appreciated or advise as to how I can proceed troubleshooting.
Kindest Regards,
Vivienne.
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
#debug=7
#fork=no
#log_stderror=yes
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
#children=4
fifo="/tmp/ser_fifo"
alias="84.203.148.146:5060"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
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/textops.so"
loadmodule "/usr/lib/ser/modules/nathelper.so"
#loadmodule "/usr/lib/ser/modules/pa.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_mode", 2)
# -- auth params --
# Uncomment if you are using auth module
#
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")
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 11)
#!! Nathelper
modparam("registrar", "nat_flag", 60)
modparam("nathelper", "natping_interval", 10) #
modparam("nathelper", "ping_nated_only", 1) #
modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")
modparam("tm", "fr_inv_timer", 20)
# ------------------------- request routing logic -------------------
route{
# 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;
};
if (nat_uac_test("3")){
if (method == "REGISTER" || ! search("^Record-Route:")){
log("Log: Someone trying to register from private IP,rew
riting\n");
fix_nated_contact(); #Rewrite contact with source IP
if (method == "INVITE"){
fix_nated_sdp("1"); #Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
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()) {
#commented
#t_relay();
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,"into loop");
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("84.203.148.146", "subscriber")) {
# www_challenge("84.203.148.146", "0");
# break;
# };
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
if (method=="INVITE"){
log(1,"in invite loop");
#break; #no 100 trying
t_on_failure("1");
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
#sl_send_reply("404", "Not Found");
route(2);
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
#commented
if (!t_relay()) {
sl_reply_error();
};
#route(1);
}
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 (isflagset(6)){
force_rtp_proxy();
}
if(!t_relay()){
sl_reply_error();
break;
};
}
######################################
#!! Nathelper
onreply_route[1] {
if(isflagset(6) && status =~ "(183)|2[0-9][0-9]"){
fix_nated_contact();
force_rtp_proxy();
}else if (nat_uac_test("1")){
fix_nated_contact();
};
}
# ------------- handling of unavailable user ------------------#
route[2] {
# non-Voip -- just send "off-line"
if (!(method == "INVITE" || method == "ACK" || method == "CANCEL")) {
sl_send_reply("404", "Not Found");
break;
};
# forward to voicemail now
rewritehostport("84.203.148.146:5062");
t_relay_to_udp("84.203.148.146", "5062");
}
# if forwarding downstream did not succeed, try voicemail running
# at 84.203.148.146:5062
failure_route[1] {
revert_uri();
rewritehostport("84.203.148.146:5062");
append_branch();
t_relay_to_udp("84.203.148.146", "5062");
}
Send instant messages to your online friends http://uk.messenger.yahoo.com