Hello,
You have loaded nathelper module, but you are not using any function
from the module in the script.
Since you are behind a NAT, your SIP messages will contain your private
IP address in Contact and SDP. You must change them to the public IP of
your NAT box.
Unfortunatelly nathelper will not help you much in this situation,
because it was written for servers running in the public internet.
If you need to change the IPs in the SIP messages then mangler module is
what you are looking for, but the module is very experimental and hasn't
been properly tested.
In my opinion running a SIP server in the public internet is much
better, if you can do so. If can't then you can user our public proxy at
iptel.org which already contains nathelper support and you should be
able to make and receive calls from behind your NAT without installing
any aditional server.
The symptoms you describe are correct. Because you don't change the IP
in SDP, people in the public internet send the media to your private IP
which is unroutable in the public internet and you don't hear anything.
Jan.
On 31-10 11:03, Raymond May wrote:
Hi,
I have just installed SER on my Linux Debian
server. It seems to work just great for users on the
Internet calling each other ( 2 way Audio is
successful ). However if someone calls me ( I am
behind my SER server ) they can hear me but I can't
hear them ( 1 way Audio ONLY ). Based on all the docs
I've read it seems to have something to do with NAT
and RTP ports. My Phone connected to LAN --- SER
Server connected to my LAN on one interface and to DSL
Provider on the other ---- DSL Service Provider. I am
also doing NAT/PAT on SER server. Below is my Topology
and ser.cfg. Appreciate any feedback I get.
My Phone --- SER --- Internet --- Users that register
with my SER server.
SER.CFG File
#
# $Id: ser.cfg,v 1.21.2.1 2003/07/30 16:46:18 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"
# ------------------ 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/nathelper.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"
# 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", 1)
# ------------------------- 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 (len_gt( max_len )) {
sl_send_reply("513", "Message too
big");
break;
};
# 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
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest
authentication
# if
(!www_authorize("iptel.org", "subscriber")) {
#
www_challenge("iptel.org", "0");
# break;
# };
save("location");
break;
};
# native SIP destinations are handled
using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not
Found");
break;
};
};
# forward to current uri now; use stateful
forwarding; that
# works reliably even if we forward from TCP
to UDP
if (!t_relay()) {
sl_reply_error();
};
}
__________________________________
Do you Yahoo!?
Exclusive Video Premiere - Britney Spears
http://launch.yahoo.com/promos/britneyspears/
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers