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@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers