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 isnt the
most efficient way as theyre 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 cant.
When 2093 ring 2092, theres no audio. These phones are Grandstream BT100s. They have
been configured to listen on different SIP and RTP ports.
2092: SIP Port: 5060
2092: RTP Port: 5004
2093: SIP Port: 5061
2093: RTP Port: 5005
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 wasnt) 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 15:35:15 andrei Exp $
#
# 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")
# -- rr params --
# 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) #Ping interval 10 s
modparam("nathelper", "ping_nated_only", 1) #Ping only clients
behind NAT
modparam("nathelper", "rtpproxy_sock",
"/var/run/rtpproxy.sock")
modparam("tm", "fr_inv_timer", 20)
# ------------------------- request routing logic -------------------
# main 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 11/02/05
#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 11/02/05#######################
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();
}
t_on_reply("1");
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